- 浏览: 797306 次
- 性别:
- 来自: 杭州
最新评论
-
137578346:
...
各版本MySQL并行复制的实现及优缺点 -
db_code_peon:
引用而这个“调整”,也不是简单的指针重赋,而是将这个page ...
MySQL源码学习:简述InnoDB的BP LRU策略 -
xtha21:
预申请ID的个数为:大于批量插入记录数的最近一个2的指数值再- ...
MySQL源码学习:innodb_autoinc_lock_mode 下自增id不连续的原因 -
lc15808798846:
奇哥好试了下,好像这个问题在5.7 已经不存在了,SQL不会h ...
autocommit=0引起的业务hang住 -
wangliushui:
Transfer 怎样保证事物的一致性,一个事物关联多个表的 ...
MySQL-Transfer2.2发布
文章列表
DBA同学报一个bug,线上一个DDL语句导致主从停止,问题简化描述如下。
描述:
简化的操作步骤如下:
Create table tb(c varchar(1000))engine=innodb;
Create table tc as select cast(c as signed integer) from tb;
Show create table tc; ...
今天有同学在搭建主从环境的时候发现一个问题,简单说明一下。感谢 @年代80s.
现象:
从库上Slave_IO_Running停止,Last_Error显示如下:
bin/mysqlbinlog: Character set ‘#45′ is not a compiled character set and is not specified in the ‘/u01/dingqi.lxb/transfer2/master/share/mysql/charsets/Index.xml’ file
分析:
此时用mysql ...
Q: Transfer是什么
A: 是一个解决MySQL原生主从同步延迟的方案。 Transfer本身是一个在MySQL源码上打的patch,可以用于当Slave,也可以用于当第三方工具,将Master的数据同步发给Slave。 利用多线程实现主从无延迟。
Q: Transfer目前的发布形式?
A: 目前的发布形式是可执行的mysqld文件。
最后更新日期 2013-12-01
Transfer.2.3 下载地址
Q: Transfer模式下,主库执行grant 语句会导致同步停止?
报错信息为 Access denied for user ' ...
有同学讨论到Transfer能否支持双主结构,答案是支持的,这里简要描述下。
背景
Transfer既可以当作主从库之外的工具来用,也可以本身充当slave的角色。本文分别描述在这两种使用场景下的部署结构和切换动作。
...
背景
Transfer是一个主从多线程同步工具,直接patch在MySQL中。2011年开发完成。于去年的12.12上线,并撑住高峰期主从,保证从库无延迟,使得应用能够直接从从库上读数据。
对Transfer1.0背景有兴趣的同学可以看我以前的一篇博客。
新功能
Transfer第一版本存在两个可改进的点:单表并发和事务支持。
a) Transfer2.0支持单表并发,基本原理就是按照更新行的主键id (因此有一个限制是同步的表必须要有主键)。
b) Transfer2.0支持slave回放主库事务时以事务为单位执行 ...
有同学说timestamp字段的规则比较“诡异”。手册里面说的比较复杂,这里简单说明一下MySQL中 timestamp字段的一些规则。
分为两部分
定义规则:
1、 timestamp字段有三个属性:
a) 是否允许NULL
有同学在问 MySQL中 QueryCache(QC)的锁是 “全局锁”还是 “表锁”。这里简要说明一下。
1、 QC基本概念
这个是实现在MySQL层(非引擎层)的一个内存结构,基本规则是将满足一定条件的查询结果缓存在内存中,若同样的查询再执行第二次,而且缓存没有失效,则可以直接返回查询结果,无需到引擎获取数据。
几个说明:
a) QC的结构是hash,key为查询字符串的原文,因此若想命中QC,要求查询语句与之前的一模一样,包括大小写必须一致、不能增减空格等等。
b) Qc可以缓存一个表中的多个查询语句和结果。
c) 对一个表的DML或DDL操作 ...
一、关于Transfer
MySQL-Transefer(下称Transfer)是一个基于MySQL+patch后得到的主从同步工具。其主要目的是为了解决原生版本的主从同步里,从库是单线程apply主库的binlog,导致的延迟。
最近完成测试的版本将multi-master (by P.Linux)合并到Transfer中并针对支付宝的应用需求做了定制性能改进。
这里做一个已经完成的完整功能介绍。
二、总体结构
说明:1、Transfer可以注册成多个Master的从库2、Transfer接收多个Master传入的binlog后将更新执行到Slave上3、Transfer本地 ...
这个问题来自冷之同学测试时候碰到的一个“诡异现象”。
1、 测试现象
测试的库有很多数据,但是重启之后,只对一个表的5w条记录作查询。查询条件客户端控制,确保查询范围。innodb_buffer_pool_size设置为35G。
现象1:查询性能会出现大幅度抖动;
现象2:介入追查后发现,Innodb_buffer_pool_pages_free = 0
这篇文章介绍的简单方案应用于如下需求:主库为了性能考虑,作分库分表,从库则上为了多索引查询等需求,不作分表。
参数replicate-rewrite-db 及应用
这个参数是官方版本自带的。配置格式为 replicate-rewrite-db = from_db -> to_db。 同步效果为将所有在from_db上的操作都修改为对to_db的操作。
例子:
因此可以在主库上做分库,如需要将表abc分成10个,则主库上建10个db, 名字为sdb_1, sdb_2, … , sbd_10, 从库上则只有一个库sdb.
...
有同学问到group by的实现,发现可能存在误解,简单说明一下。
示例
CREATE TABLE `tb` ( `c` int(11) DEFAULT NULL, `d` int(4) DEFAULT NULL, `e` varchar(1000) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;Insert into tb values(2,20,’b’);Insert into tb values(1,10,’a’);Insert into tb values(2,20,’b’);Insert into tb values ...
Oracle有一个闪回(flashback)功能,能够用户恢复误操作的数据。本文讨论MySQL中支持闪回的方案。
1、 闪回的目标
即使为了数据安全,我们搭建了主从。但实时主从备份只能防止硬件问题,比如主库的硬盘损坏。但对于误操作,则无能为力。比如在主库误删一张表,或者一个update语句没有指定where条件,导致全表被更新。当操作被同步到从库上后,则主从都“回天无力”。
线上或者测试环境经常出现的误操作总是让DBA同学那么闹心。
闪回的目的是要让数据库在commit之后,还能恢复到之前的某个状态,整库或指定的表。
这里我们讨论用binlog来实 ...
有同学上周问了个问题 “MySQL 里面的order by rand()”是怎么实现的。我们今天来简单说说MySQL里的order by。
几种order by的情况 乍一看这个问题好像有点复杂,我们从最简单的case开始看起。 用这个表来说明:(10w行数据)
1、 最简单的order ―― order by索引字段 从explain的结果来看(Extra列),这个语句并不作排序。因为字段a已经是有顺序的。就是按照索引a的顺序依次读pk的值(在这里是隐藏的系统列),一个个从聚簇索引的data中读入。
2、 复杂一点 ―― order by 非索 ...
上一篇我们介绍了ibd_used这个工具,我们用来量化看表数据文件的page使用率。这里用来说明optimize table这个命令的问题和优化。
实例准备
建一个这样的表
CREATE TABLE `tb` (
`seq_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`a` varchar(32) DEFAULT NULL,
这周阿里集团DBA内部分享时,支付宝的黄忠同学提了一个问题,关于InnoDB索引page 的利用率。
page利用率
主要是指btee里面每个page的使用被使用的空间大小。我们知道InnoDB默认一个page大小是16k。但实际使用情况不会总用满
我们定义为所有page的总使用字节除以总字节数。