`
丁林.tb
  • 浏览: 797299 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
         有同学问到 checksum table在逻辑备份时候前后是否可以用于验证数据一致性。扩展一下发现有一些有趣的问题,比如数据插入顺序不同、表引擎不同、操作系统位数不同等。     插入顺序不同是否有影响          我们知道全表扫描是可以有很多种顺序的,尤其当表里面出现过delete动作以后,逻辑导出再导入另外一个表后,两个表的全表扫描结果可能不同。          Checksum table计算返回值的逻辑大致如下:        
Background          In some projects that require very strict data safety, DBAs will except there is a solution to ensure the safety of binlog. That means after the worst case, OS crash or disk damage, there is a way to find out a whole copy of binlog.         Doublebinlog patch is done for this ...
前记       前几天收到一位同行的一个文档,是MySQL High Performance 2的读书笔记, 97页,6w多字。在描述完知识点后,有疑问的地方列出问题,希望和我讨论。看完以后非常敬佩,自感自己无法做到这么细心。为表敬意,承诺会一一回答里面的问题。对于无法简单回复的问题,就想通过博客的方式写出来,便于讨论。 因此这个系列,就是回复这位同学的文档中的问题的。   问题 服务器变量table_locks_immediate和 table_locks_waited#?它们保持多大的比例是合适的? 背景     table_locks_immediate表示可以立即获 ...
关于copy_and_convert    在对MySQL做业务压力测试的时候,我们在perf结果中发现 copy_and_convert 是一个耗费cpu的操作。这个函数的意思,就是在字符集之间做内容转换。    如果源和目标的字符集相同,就可以直接用memcpy,这显然比做字符集转换(按字节或字长拷贝更快,和节省cpu)  当整个系统是CPU瓶颈时,我们希望能够减少这种cpu消耗。    一次查询涉及的拷贝    如果我们执行一个简单的select语句,会涉及到两部分的内容:metadata和data。MySQL的返回包是能够“自解析”的,也就是说不仅有内容,还有描述信息。这些描述信息 ...
mysqldump在导出数据的过程中是“沉默”的,为了显示导出进度,给它加一个小patch显示进度。感谢 @宁青_ 的需求。   一、mysqldump输出方式 这个patch比较简单,先说一下相关的一个背景:mysqldump的输出方式。1、  默认方式 stdout2、  指定文件-r target_file 可以指定导出的内容写入文件target_file中3、–tab=path在path目录下,对每个表生成两个文件,如表a生成a.sql和a.txt,分别存储表的定义和表的内容。 注意在指定—tab参数时,使用的是select into outfile …因此对指定的用户权限要求更 ...
今天有同学问了一个关于注释的问题,顺藤摸瓜发现一个bug,简要说明下。 有关注释的一些QA Q: MySQL注释有哪些格式 A:MySQL的注释格式有三种,分别是 /**/ -- 和 #。具体参见手册          Q:在一些导出文件中见过/*! xxx*/,是不是注释?
复现 来源于一个同事在做数据转储碰到的的问题,简化如下: 1、建表 drop table if exists tb; CREATE TABLE tb (   c timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ) ENGINE=InnoDB DEFAULT CHARSET=gbk; insert into tb values(now()); select * from tb;   返回 mysql> select * from tb;
背景 这个问题由一个同事问到的一次导入数据引发。一个很常见的操作,将数据从一个表中dump出来,在用mysql < a.sql的方式导入到另一个库的一个表中。 在执行导入的时候,提示 MySQL server has gone away。在追查的时候突然想到会不会是因为max_allowed_packet太小导致的。将max_allowed_packet改大,确实解决了问题。 本文基于在此之后想到的两个问题: 1、  MySQL server has gone away这个提示很不友好,是不是所有的包超过大小都是报这个? 2、  对于出现这种不友好的错误提示,有什么方法定位原因( ...
Transfer 2.1发布,   下载地址: Tranfer-2.1-base-PS-5.5.18  md5sum: 9c8112ba9ca11f8e4a13b935e4bd7f77 最后更新日期 2013-4-23   配置模式作如下修改:   1、  若不增加任何配置,则默认是Slave模式。 默认值:   transfer_slave_thread = 16   slave_skip_errors=1062,1032
具体的说明见后面附的图片:   版本列表:     MySQL-PS-Transfer.5.5.18 md5:0479bbcb2743a722276a3435af1bbb8e  最后更新时间:2012-12-12      MySQL-PS-Transfer.5.5.27 md5:9a72849115de510fcbe87246e4ed9e11 最后更新时间:2012-12-12         MySQL-PS-Transfer.5.5.28 md5:534611800ed01cec1f9ba278277cb1e7 最后更新时间:2012-12-12       MySQL ...
背景   主从切换是高可用MySQL架构的必要步骤(即使用不发生,也要有备无患)。一般设置为双M(M1、M2),假设当前状态为写M1,而M2只读,切换的大致流程如下: 1、  停止应用写M1,将M1设置为只读2、  检查M2的slave status直到赶上M13、  将M1设置为可写      其中在第2步细化为a)       在M1上show master status;得到binlog位置P,因为已经设为只读,不会变化b)       循环检测M2上的执行位置,若未到P,则过几秒再查。循环直到从库追上。  这里介绍一个函数用于简化步骤b.   函数master_pos_wa ...
背景          MySQL中在对某个字段做包含匹配时可以用like。 先看这个结构和结果   CREATE TABLE `tb` (     `id` int(11) NOT NULL AUTO_INCREMENT,   `user_id` bigint(20) DEFAULT NULL,   `title` varchar(128) NOT NULL,   `memo` varchar(2000) DEFAULT NULL,   PRIMARY KEY (`id`),   KEY `title` (`title`) ) ENGINE=InnoDB DEFA ...
MySQL-Transfer逐渐有一些其他公司的同学在使用,这里会持续更新运维上的注意事项。        背景        正常情况下,若要从原来的主从切换成Transfer 模式,只需要作如下步骤: 1、在slave相同机器上部署一个Transfer,并配置好各种remote_slave参数 2、在slave上stop slave 3、把
     这篇文章来自在一个啾啾群纠结的问题。     背景          关于InnoDB内的索引大小。对于表 CREATE TABLE `testtb` ( `id` int(11) NOT NULL AUTO_INCREMENT, `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, `c` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `i1` (`a`), KEY `i2` (`a`,`id`), KEY `i3` (`id`, ...
有同学问到InnoDB的索引长度问题,简单说几个tips。            关于3072          大家经常碰到InnoDB单列索引长度不能超过767bytes,实际上联合索引还有一个限制是3072。 mysql> CREATE TABLE `tb` ( -> `a` varchar(255) DEFAULT NULL, -> `b` varchar(255) DEFAULT NULL, -> `c` varchar(255) DEFAULT NULL, -> `d` varchar( ...
Global site tag (gtag.js) - Google Analytics