使用pt工具检测MySQL主从延迟(r12笔记第7天)
今天翻看了下《高性能MySQL》,真是让人拍手称绝,里面的很多实战思路非常不错,各种问题分析如数家珍,如果是有一定基础的同学,看起来会非常不错。 当然里面提到的一个地方,感觉很有意思,那就是主从延迟的一个测算思路。书中他们是通过建立一张表,插入时间相关的数据,值得一提的是这个表的存...
使用sysbench压力测试MySQL(三)(r12笔记第6天)
昨天使用gdb调试MySQL中事务临界状态的时候,发现其实有些场景可能比我想得还要复杂一些,所以我在昨天的测试中结尾也是快快扫过,但是表明了意思即可。这一点上我在后面会把Oracle的临界事务状态也拿出来对比一下,还是蛮有意思的。 今天简单写了几个脚本继续对一个测试环境的MySQL进行sysbench压力测...
MySQL中的binlog和redo浅析(r12笔记第5天)
有一个小问题可能很多人都想起过,那就是MySQL中既然已经有了binlog,为什么还需要redo,这个问题看起来好像很简单,但是细细品来,还是有不少值得注意的地方。 对于数据恢复,尤其是异常宕机的情况下,再次启动的时候,如何恢复,恢复的数据依据,这个尤为重要,在MySQL中是有checkpoi...
使用sysbench压力测试MySQL(二)
昨天有了第一篇的测试之后,仅仅是一个开始。 我接下来做sysbench压测的主要思路是根据现有的配置作出调整,能够持续性的优化和压力测试达到目的,而不是简单的去对比连接数在不同数量级会有多大的差别,所以你会在里面看到一些问题的排查,一些问题的解决,可能有些又不是压测相关的。...
使用sysbench压力测试MySQL(二)
昨天有了第一篇的测试之后,仅仅是一个开始。 我接下来做sysbench压测的主要思路是根据现有的配置作出调整,能够持续性的优化和压力测试达到目的,而不是简单的去对比连接数在不同数量级会有多大的差别,所以你会在里面看到一些问题的排查,一些问题的解决,可能有些又不是压测相关的。...
使用sysbench压力测试MySQL(一)(r11笔记第3天)
今天用了下新版本的sysbench,发现和早期版本的差别还不小,确实有不少有趣的地方,是的,我们继续测试下MySQL。 如果大家看过《高性能MySQL》这本书,就会发现里面对于基准测试的描述非常全面和专业,里面的测试场景都是基于早期版本,这个版本有一个不太方便的地方就是无法抓取到更细节...
MySQL传输表空间小结(r12笔记第2天)
在MySQL中如果要迁移一个表导另外一个服务器/环境中,常规的做法就是使用备份工具备份,比如mysqldump,然后拷贝备份到目标服务器或者环境导入。如果某一个表数据量很大,导出dump文件很大的情况下,使用导出导入工具其实会花费不少的时间. 怎么样提高效率呢,可以有一种想法就是直接拷贝数据文件...
sysbench压测小记(r11笔记第99天)
对于很多线上业务而言,如果有新服务器,新的环境,新的业务,到底资源和预期的承载压力是否匹配,这个得用数据说话,或是通过严谨的论证来阐述。 比如一台新的服务器,一般都需要经过压力测试,我们也叫拷机测试。一般都会从多个维度来进行加压(比如CPU,内存,IO等等),看看服务器是否依...
MySQL参数对比浅析(r11笔记第97天)
今天按照计划,决定得总结下MySQL的参数了,说来想来,立即就做。大体算了下,手头的环境主要还是使用了Percona分支,官方的相对较少,就暂且按照Percona的版本来统计参数的情况,可能和官方的会有一些出入。 数据版本会有一个较大的跨度,从5.0到5.7都有,这也能够间接反映出一个系统的变迁...
MySQL中的undo截断(r11笔记第89天)
MySQL中的undo截断还是一个很不错的特性。这让我想起了很久以前看到一个诺大的ibdata,但是却拿它无能为力,想把它收缩唯一的办法就是重建或者重构数据。 Oracle用得久了,总会有一些想法,看起来很平常的技术怎么在MySQL中却无能为力。当然这个念头也有些日子了。 MySQL 5.6中把undo做了剥...
MySQL Online DDL(二)(r11笔记第88天)
对于Online DDL,之前简单分析了一些场景MySQL中的Online DDL(第一篇)(r11笔记第3天),其实有一个很关键的点没提到,那就是online DDL的算法,目前有三个操作选项,default,inplace,copy可选具体可以参考 https://dev.mysql.com/doc/refman/5.6/en/innodb-online-ddl.html> select count(*) from newtest;...
浅谈MySQL中的事务隔离级别(r11笔记第86天)
之前写了一篇浅谈事务(一),算是对事务的一个基本认识,今天来简单总结一下事务的隔离级别,虽然是老掉牙的知识点,重温一下还是值得的。 在MySQL中基本有这两种事务隔离级别的设置,默认的RR(Repeatable-Read)和实际中常见的RC(Read-Committed)。两者区别是什么,怎么正确理解,用几个...
动态创建MySQL Group Replication的节点(r11笔记第84天)
前几天分享了下搭建MySQL Group Replication的脚本,其实感觉还是不太踏实,虽然我成功搭建了3个节点的环境,但是有不少问题还没有解决,甚至是特意避开了。 1.节点数都是在脚本里固定的,想搭建4个,6个节点的,完全适应不了 2.模板臃肿,每个节点一个参数模板,其实就几个...
MySQL 5.7 Group Replication错误总结(r11笔记第84天)
今天来总结下MySQL 5.7中的一些问题处理,相对来说常规一些。搭建的过程我就不用多说了,昨天的文章里面可以看到一个基本的方式,在测试环境很容易模拟,如果在多台物理机环境中搭建是不是也一样呢,答案是肯定的,我自己都一一试过了。 因为搭建的环境官方建议也是single_primary的...
分分钟搭建MySQL Group Replication测试环境(r11笔记第83天)
最近看了下MySQL 5.7中的闪亮特性Group Replication,也花了不少做了些测试,发现有些方面的表现确实不赖。当然要模拟这么一套环境还是需要花不少的功夫的,一般来说都是3个节点的环境,实际中要找这样的环境也不是很容易。我们怎么快速模拟呢。一种方式就是在一台服务器上搭建多实例。 这...
MySQL Group Replication小试
最近看了下MySQL Group Replication的内容,因为发布的时间不是很长,可以算是一个新鲜玩意,而且因为它特有的意义,这个特性显得更加意味深长。 我接触Oracle的时间要长一些,所以很多时候都喜欢带着对比的眼光来看,单着自己尝试着用了下这个特性,感觉一下子让我找到了当年学习Oracle 10g RAC时的感...
MySQL和Oracle行值表达式对比(r11笔记第74天)
行值表达式也叫作行值构造器,在很多SQL使用场景中会看到它的身影,一般是通过in的方式出现,但是在MySQL和Oracle有什么不同之处呢。我们做几个简单的测试来说明一下。MySQL 5.6,5.7版本的差别首先我们看一下MySQL 5.6, 5.7版本中的差别,在这一方面还是值得说道说道的。我们创建一个表users,然后就模拟同样的...
MySQL误操作数据恢复的简单实践(r11笔记第67天)
前几天有个同事碰到了一个MySQL数据恢复的问题,他运行了一条update语句,结果忘记了加where条件,结果等反应过来已经晚了。我简单确认了下,是否存在备份,没有,是否开启了日志,没有。所以这个恢复无从谈起。 当然后来他也花了些功夫逐条数据修复,事情过去了,数据恢复的重...
MySQL中的半同步复制(r11笔记第65天)
关于MySQL的复制架构,大体有下面三种方式,异步,全同步复制,半同步复制。三种复制方式 第一种是异步复制,是比较经典的主从复制,搭建主从默认的架构方式,就是属于异步的,相对来说性能要好一些。但是还是会有丢失数据的情况。 第二种是全复制,比如说MySQL Clust...
MySQL 5.7 General Tablespace学习(r11笔记第34天)
MySQL里面的文件蛮有意思,之前大体有两个参数来做基本的控制。一个是innodb_data_file_path就是一个共享表空间,数据都往这一个文件里放,也就是ibdata1,这个文件其实角色是有重复的,undo,数据都会放在一起。ibdata1会持续增长,无法收缩。另外一个参数是innodb_file_per_table,这样一来,就成了独立表空间,通俗一些...