MySQL中使用undrop来恢复drop的表(上)
MySQL中可以使用编程语言(比如Python)来解析binlog中DML的逆操作来达到闪回的效果,如果数据不多,手工解析也可以。这也是现在大家碰到的很多DML Flashback的一个基本原理。而如果是DDL,比如DROP,那就得叹声气了。GitHub上有一个很不错的项目是undrop,基于InnoDB,也就意味着如果你所在的环境有了drop操作还是存在...
Oracle和MySQL的高可用方案对比(二)
对比 昨天聊了一篇关于高可用方案中Oracle的RAC和MySQL的MHA的对比。今天来说下Oracle的DG和MySQL的方案对比,相比来说,可能这方面MySQL会单薄一些,所以文末会说下InnoDB Cluster。在灾备的概念中,Oracle DBA喜欢叫做主备,即为Primary,Standby,而MySQL喜欢叫做主从,即为Master,Slave首先在Oracl...
MHA的补充和定制规划
之前画过一版MHA的故障图,最近和同事做了系统详细的测试,发现了一些问题,有些是预料之外的场景,有些是目前MHA没有更好的保证和实现,斟酌再三做了取舍。因为有些场景是组合出现的,比如网络波动,ssh不可达,但是已有的应用连接正常,那么这种情况就需要一些更全面的校验机制。所以MHA的测试如果简单那还...
MySQL创建表失败的问题
今天有一个朋友问我一个MySQL的建表问题,问题的现象是创建表失败,根据他的反馈,问题比较奇怪,CREATE TABLE XXX..此处省略260多个字段`xxxxIsAllowIn` varchar(4) COLLATE utf8_bin DEFAULT NULL COMMENT 'xx是否准入(是,否)',`xxxxIsAllowIn` varchar(30) COLLATE utf8_bin DEFAULT NULL COMMENT '...
MySQL偏移量的一点分析
在搭建MySQL主从的时候,change master是一个关键,如果没有使用GTID的方式,就需要使用偏移量和指定的binlog,每次需要手工去抓取这些信息,感觉还是比较费力,而且偏移量对我们来说就是一个黑盒子,到底递增多少,我们也不知道,只是给我们一个结果,但是搭建了一些环境之后,我突然发现了一些“规律”,比如下面...
停止MySQL服务hang的问题简单分析(一)
写第一篇,意味着还有第二篇的内容,这个也是自己今天偶然发现的问题。同事之前碰到了一个MySQL服务不断重启的问题,究其原因,其实倒还合理,今天的这个问题比较纠结,看起来好像没有直接的联系,问题算是比较诡异。我简单复现下这个问题,我在5.7.19的版本中做了测试,可以复现。首先搭建一主两从的测试环...
Oracle和MySQL的高可用方案对比(一)
关于Oracle和MySQL的高可用方案,其实一直想要总结了,就会分为几个系列来简单说说。通过这样的对比,会对两种数据库架构设计上的细节差异有一个基本的认识。Oracle有一套很成熟的解决方案。用我在OOW上的ppt来看,是MAA的方案,今年是这个方案的16周年了。而MySQL因为开源的特点,社区里推出了更多的解决方案...
MySQL高可用方案MHA的一些总结和思考
MySQL高可用方案中MHA绝地是一个相当成熟的实现。对于数据的切换,其实MGR也能很好的完成,也就是说,数据层面的角色切换已经刻意很平滑的做好了,但是对于访问IP的处理,还是有很大的空间,MHA提供了很多可选的空间来支持。常见的组合方式有:MHA+VIPMHA+keepaliveMHA+Zookeeper当然MHA+VIP是一种很...
由小见大-MySQL脚本部署中的一些策略
在线上环境中部署脚本,可谓是常在河边走,哪有不湿鞋,所以大大小小的案例总结下来,还是会发现一些有趣的地方,这些可以作为操作时的一些参考,仅供参考而已。第一类脚本是修复脚本,比如提供的数据修复功能,数据补丁等,这类脚本的特点是后续的数据变更很可能会依赖于之前的操作,环环相扣。所以一旦执行过程...
MySQL备份和恢复工具图谱
之前没有认真整理,感觉备份工具就是mysqldump,xtrabackup了,但是如果认真想一想,其实会发现还是有很多其他丰富的功能。比如数据的逻辑导出,比如某个表的数据(全部,部分)等都可以很方便的实现,这些比那些备份工具来说要轻巧很多,方便迁移。把这些工具和方式都打通就会发现,可实现的功能点其实很...
MySQL 5.5复制升级到5.7的一点简单尝试
最近有个需求是升级MySQL 5.5到MySQL 5.7版本,为此我们想了一些方案,比如MySQL级联复制升级,这么考虑主要是基于版本的差异性,尽可能保持兼容。还有逻辑备份恢复,物理备份恢复的方案,当然无论如何体现业务价值才能使得技术价值更有意义。所以我们希望通过升级版本来尽可能使得线上版本统一的同时,带给业务...
我们的1024,自嗨一下
今天在地铁上看到,各种刷屏。哦,今天是10月24日了,1024的程序猿节日啊。我的脑海里面自动搜索出来了一首诗,来自青莲居士李白-早发白帝城,所以我会着重分析下这首诗,生活给了我力量,我从工作生活入手来解读,哈哈。上班路上早发白帝城唐(李白)朝辞白帝彩云间,千里江陵一日还。两岸猿声啼...
当Python字符串遇上MySQL
学习的时候我喜欢对比,MySQL和Oracle比,Python和MySQL比,总能有一些收获,也有了新的理解。今天整理这部分内容的时候,我发现Python和MySQL还是有很多相似之处。学习一门语言,一个数据库,字符串的处理都是一个相对重要的部分,所以我决定对比一下两者的差别。下面的演示会一边Python,一边MySQL,所以按照这个...
MySQL字符串中抽取数值的方法
MySQL的字符串函数非常多,以至于有时候我不知道该如何灵活的使用这些函数。字符串基本信息函数 collation convert,char_length等加密函数 password(x),encode, aes_encrypt字符串连接函数 concat(x1,x2,….)修剪...
从MySQL源码看日志命令失效的原因
今天看数据库内核月报,发现一个蛮有意思的问题,就是show binary logs的时候没有任何结果,这个问题的原因很简单,但是分析问题的过程相比是艰辛的,需要在各种潜在的可能中找到那个肯定的结果。当然这个问题带给我的最大福利不是解决了这个问题,而是通过这个问题我们可以换一个思路来分析,...
MySQL字符函数的压力测试
MySQL中的字符串处理函数非常多,以至于我在整理的这部分内容的时候也眼前一亮,有一种进了大观园的感觉,哦,原来有这个函数,哦,竟然可以这样实现,以前怎么没想到,等等。 比如字符串查找函数,instr,locate,position三个函数的功能都是很相似的。如果要实现一个功能,从字符串foobarba...
MySQL MHA源码解析
MySQL的高可用方案很多,MHA算是其中最流行的一种方案之一。目前最新的版本是0.57,它分为两部分,一部分水himanager,另外一部分是node. 了解学习一个开源项目,阅读源码是一个很不错的开始,所以MHA就成为了我学习的一个重点内容。我们先从manager开始,当然因为这个开源项目是基于perl开发,...
MySQL中需要考虑的一些工具
日子就如同十一长假一样快,还想给祖国母亲过一次生日。 回到工作,在做一些规划,会发现有一些事情需要前置和规划,比如说MySQL里面的工具,如果等到实际碰到了各色的问题再来统一,就比较难了。有沟通成本,人力成本,技术沉淀和持续交付等等的成本,这些最好提前和团队有一个基本的沟通,达成...
MySQL执行计划里面的key_len
以前看MySQL的执行计划,感觉内容有些简陋,平时分析主要就是看是否全表扫描,索引使用是否合理等。基本上也能分析出很多问题来,但是显然有时候会有些疑惑,那就是对于复合索引,多列值的情况下,到底启用了那些索引列,这个时候索引的使用情况就很值得琢磨琢磨了,我们得根据执行计划里面的key_len做一个重要的...
MySQL断电恢复的一点简单分析
今天有个网友问我一个MySQL的恢复问题。提供的截图如下。 对于这个问题,在一些断电的场景下还是可能出现的。我首先是要确认是否为线上业务还是测试环境,线上业务来说这个影响还是很大的。如果数据库无法启动,首要任务还是把数据库启动,然后在这个基础上查看丢失的数据程度,安排数据修复的事宜。...