`
丁林.tb
  • 浏览: 797306 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
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的总使用字节除以总字节数。
Global site tag (gtag.js) - Google Analytics