MySQL主从不一致发现的细小问题分析(r12笔记第63天)
今天和同事一起看了一个问题,她在一个主从环境中发现了数据不一致,存在主键冲突。 show slave status的报错信息大概是下面的样子。Last_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 0 failed executing...
MySQL service启动脚本浅析(r12笔记第59天)
我们在搭建MySQL环境的时候,一般都会按照建议的标准规范来做,比如拷贝mysql.server到自启动目录下。cp -rf $basedir/support-files/mysql.server /etc/init.d/mysql然后设置MySQL自启动的服务,配置完成之后就可以运行命令service mysql.server start 来启动MySQL了。/sbin/chkconfig --add mysql/sbin/ch...
MySQL中的derived table(r12笔记第47天)
初始MySQL中的derived table还是在一个偶然的问题场景中。下面的语句在执行的时候抛出了错误。UPDATE payment_data rr SET rr.penalty_date = '2017-4-12' where rr.id = (SELECT min(r.id) FR...
MySQL中的反连接(r12笔记第45天)
关于Oracle的半连接,反连接,我一直认为这是一个能讲很长时间的话题,所以在我的新书《Oracle DBA工作笔记》中讲性能优化的时候,我花了不少的笔墨做了阐述,结果在做MySQL性能优化的时候,优化思路切换到MySQL层面,我发现要说的东西要更多。总体来看,这部分的优化细节MySQL还在路上,不同的版本中都能够一窥...
分分钟搭建MySQL Group Replication测试环境(二)(r12笔记第41天)
之前总结过一篇,是分分钟搭建MySQL MGR环境的,但是有一个地方还有待改善,那就是那个脚本仅仅支持single-primary模式,不支持多主模式,而官方文档中这部分信息还比较少。 我觉得这部分内容一方面和本身MGR的多主支持还不够成熟也有关系,需要一个过渡。但是如果想测试测试也是完全可以的...
MySQL中GTID和自增列的数据测试(r12笔记第38天)
昨天的一篇文章,今天有不少网友向我确认一些细节,我想最近正好在看GTID的东西,可以揉在一起来说说。 GTID这个概念看似简单,实际上还是有不少的门道。我们来从架构的设计角度来看看存在哪些场景需要考虑GTID的变化。 一主两从的架构模式下GTID的变化 我们就以一主...
MySQL自增列主从不一致的测试(r12笔记第37天)
MySQL里面有一个问题尤其值得注意,那就是自增列的重复值问题,之前也简单分析过一篇,但是在后续我想了下,还有很多地方需要解释,一个就是从库的自增列是如何维护的,是否重启从库,自增列会受到影响。 我们继续来测试一下。首先复现这个问题。 创建表t1,插入3行...
MySQL中的MVCC(r12笔记第35天)
最近同事也问了我关于MySQL MVCC的一些问题,我觉得这个话题蛮有意思, 而之前似乎也没有总结过,就参考了一些资料,把一些内容摘录出来。什么是MVCC以下内容摘自:http://www.jdon.com/repository/database-mvcc.html关系数据库管理系统使用MVCC(Multiversion Concurrency Control多版本并发控制)来避免...
MySQL频繁停库的问题分析(r12笔记第33天)
最近也抽空帮一些网友解决一些问题,有些是Oracle,有些是MySQL,有时候虽然忙忙乎乎,但是解决问题之后还是很有成就感的。 今天来说一个蛮有意思的问题,听起来还很诡异。是一个网友向我咨询,看看能不能给出一些建议。当我看到日志,隐隐感觉这是一个bug的感觉。详细的日志如下:2017-04-13 1...
sandbox和MHA快速测试(r12笔记第32天)
昨天写了一篇使用脚本搭建一主多从的脚本之后,奇龙兄建议我看看sandbox的功能,可以秒级搭建主从环境,简单试了下,确实很好很强大。 环境部署其实很简单,如果有网络环境,直接cpan一个命令即可。或者使用wget的方式来安装也可以。安装sandbox使用cpan来安装,非常简单,就是下面的命令:cpa...
分分钟搭建MySQL一主多从环境(r12笔记第31天)
之前写过一篇分分钟搭建MySQL Group Replication的测试环境,如果我们在一台服务器上想搭建一主多从的测试环境,怎么能够分分钟搞定呢,其实稍花点时间写个脚本即可搞定,无非就是把哪些程式化的东西整合起来,化繁为简。能够提高效率才是好。 搭建主从的环境,我们还是准备一个配置文件ini...
相同update语句在MySQL,Oracle的不同表现(r12笔记第30天)
今天有个朋友问我一个SQL问题,大体是一个update语句,看起来逻辑没有问题,但是执行的时候却总是报错。语句和报错信息为:UPDATE payment_data rr SET rr.penalty_date = '2017-4-12' where rr.id = (SELECT min(r.id)  ...
MySQL自增列的重复值问题(r12笔记第25天)
如果需要把一台MySQL中的数据定期归档到另外一台MySQL历史库中,那么很可能会发现会有重复值的问题,导致数据导入会失败,而这个问题其实是和自增列的重复值有关,我们来简单看看。 这方面丁奇大师也做了很多详细的说明,还定制了参数,具体可以参见 http://www.csdn.net/article/2015-01-1...
MySQL中的double write(二)(r12笔记第17天)
MySQL里的double write是InnoDB的三大闪亮特性,另外两个是insert buffer 和自适应哈希,其实还有几个比如异步IO,Flush neighbour Page(刷新邻接页),这个和系统层面的关联性较高,所以三大亮点还是更有针对性的。 当然一说到MySQL里的double write,其实主要是要应对一个很自然的...
在eclipse中配置MySQL源码环境(r12笔记第14天)
今天费了些周折,总算搭建好了MySQL源码的调试环境,主要的目的就是想在看代码的时候有一些头绪,让这些开发技巧派上用场。不至于盲人摸象一般的拿着命令肉眼扫视,当然对于代码至于能不能啃下来,那是另外一回事了。 我来说说我的情况,Java开发还有一点基础,所以以前的eclipse还算用得...
压测工具swingbench和sysbench对比
今天来说说两款压测工具sysbench,swingbench,早些时候傻傻分不清楚,其实两个差别大了去了。 swingbench 先来说说swingbench,这款工具是Oracle英国的一个员工用Java开发的,没想到一下子成了压测Oracle的不二之选。当然Oracle还有不少这样的工具,比如DUL(Data UnLoader),是新西兰的一个员...
MySQL源码安装总结(r12笔记第12天)
作为一个DBA, MySQL源码安装还是要做做的,虽然不是推荐线上批量安装部署,但是自己作为了解MySQL的一个学习过程,还是值得的。 相比商业软件来说,开源的这一点上就让人很羡慕,商业软件我们总是使用各种工具和底层原理去反推,探测,但是离代码还是有一定的距离。当然商业有...
MySQL中xtrabackup备份恢复全攻略
XtraBackup是Percona推出的一款备份工具,算是对于mysqldump的一个补充。对于大批量数据的导入使用mysqldump会出现一定的瓶颈,这一点做过一些数据迁移项目的同学可能感同身受。 数据迁移中的数据量,小有小的好,大有大的招,见招拆招,找到适合的场景是最佳的。 如果现在...
MySQL 5.6, 5.7并行复制测试(二)(r12笔记第10天)
昨天花了点时间整理了下并行复制在5.6,5.7中的一些差别和测试,当然只是一个开始,因为里面还有不少需要完善的部分,总体的感觉来看MySQL 5.7里的并行复制改进很大,能够极大提高效率,充分利用资源。 那我们来简单回顾一下MySQL的复制里的一些事情,然后继续展开测试。 首先借丁奇大师...
MySQL 5.6, 5.7并行复制测试(r12笔记第9天)
对于主从延迟,其实一直以来就是一个颇有争议的话题,在MySQL阵营中,如果容忍一定的延迟的场景,通过主从来达到读写分离是个很不错的方案,但是延迟率到底有多高可以接受,新版本中的并行复制效果怎么样,在不同的版本中是否有改变,我们能否找到一些参考的数据来佐证,这一点上我们可以通过一些小测试来...