一种直观记录表结构变更历史的方法
1. Story 在没有形成自己的数据库管理平台以前,数据库实例一多(包括生产和测试环境),许多表要执行DDL会变得异常繁杂。 说个自己的经历,需要改现网的一个索引来看优化的效果,因为存在风险,不会一次全改,先只改1个库,然后逐步放开。前后验证效果可能花上一两周的时间,除非实现完整的记录了当时的ddl语句和对应的库,否则根本难以记得。这就完全依赖于个人的习惯及能力。 ...
1. Story 在没有形成自己的数据库管理平台以前,数据库实例一多(包括生产和测试环境),许多表要执行DDL会变得异常繁杂。 说个自己的经历,需要改现网的一个索引来看优化的效果,因为存在风险,不会一次全改,先只改1个库,然后逐步放开。前后验证效果可能花上一两周的时间,除非实现完整的记录了当时的ddl语句和对应的库,否则根本难以记得。这就完全依赖于个人的习惯及能力。 ...
1. 简介 项目地址:https://github.com/seanlook/px-table-checksum 主从环境下数据一致性校验经常会用 pt-table-checksum 工具,它的原理及实施过程之前写过一篇文章:生产环境使用 pt-table-checksum 检查MySQL数据一致性。但是DBA工作中还会有些针对两个表检查是否一致,而这两个表之间并没有主从关系,pt工具是基于binlog把在主库进行的检查动作,在从库重放一遍,此时就不适用了。 ...
1. 简介 取名mypumpkin,是python封装的一个让mysqldump以多线程的方式导出库表,再以mysql命令多线程导入新库,用于成倍加快导出,特别是导入的速度。这一切只需要在 mysqldump 或 mysql 命令前面加上 mypumpkin.py 即可,所以称作魔法。 ...
1. utf8 与 utf8mb4 异同 先看 官方手册 https://dev.mysql.com/doc/refman/5.6/en/charset-unicode-utf8mb4.html 的说明: 1 2 3 4 The character set named utf8 uses a maximum of three bytes per character and contains only BMP characters. The utf8mb4 character set uses a maximum of four bytes per character supports supplementary characters: - For a BMP character, utf8 and utf8mb4 have identical storage characteristics: same code values, same encoding, same length. - For a supplementary character, utf8 cannot store the character at all, whereas utf8mb4 requires four bytes to store it. Because utf8 cannot store the character at all, you have no supplementary characters in utf8 columns and need not worry about converting characters or losing data when upgrading utf8 data from older versions of MySQL. MySQL在 5.5.3 之后增加了 utf8mb4 字符编码,mb4即 most bytes 4。简单说 utf8mb4 是 utf8 的超集并完全兼容utf8,能够用四个字节存储更多的字符。 ...
最近一个与qq有关的服务迁到腾讯云上,相应的数据库也要从原阿里云RDS迁移到腾讯云CDB上,经过一番摸索,不带任何政治色彩的说,CDB跟RDS相比弱的不止一条街。比如看个错误日志还要提工单,数据库访问没有白名单,数据传输服务竞不支持源库的开启GTID,自带的后台管理是phpMyAdmin,要临时看查询日志也要提工单,当然这些都是可以容忍通过其它方法解决的,但是如果使用上带来了mysql数据库本身的影响,就用的不太爽了。 ...
Python完成的一个小程序,初衷用于杀掉 MySQL 上的异常线程,如慢查询、处于Sleep状态的,但上线运行以后,以另一种模式运行来实时发现现网的慢查询特别有用,挖掘了许多潜在问题。 项目地址:https://github.com/seanlook/myquerykill ...
经常会被问到 InnoDB隔离级别中 READ-COMMITED和REPEATABLE-READ 的区别,今天就整理了一下,不再从“脏读”、“幻读”这样的名词解释一样去回答了。 ...
这段时间在公司内部准备了一个分享,主题是关于 MySQL事务与锁,准备过程内容很多,也深入弄清楚了一些以前比较迷糊的地方,加上后面的讨论也就一个半小时。 ...
端午在家无聊,又不想学习。于是在Youtube随便逛,看到一个很不错的分享,来自 Percona Database Performance。下面是演示稿: slideshare: http://www.slideshare.net/ssuser5a0bc0/webinar-2013-advancedquerytuning {% pdf https://www.slideshare.net/slideshow/embed_code/key/3HLJJcJmM9KLGT %} Youtube: https://www.youtube.com/watch?v=TPFibi2G_oo 能 条件 的可以看看。 ...
如果正在看这篇文章,相信你已经知道自己的需求了。 在 mysql 5.5 版本以前,修改表结构如添加索引、修改列,需要锁表,期间不能写入,对于大表这简直是灾难。从5.5特别是5.6里,情况有了好转,支持Online DDL,相关介绍见 这篇文章,而我在实际alter table过程中还是会引起 data meta lock 问题。pt-online-schema-change是Percona-toolkit一员,通过改进原生ddl的方式,达到不锁表在线修改表结构。 ...