获取一致性检查结果
percona-toolkit 中提供一个叫 pt-table-sync 的工具,可以获取一致性检查结果
代码语言:javascript复制[root@opti-master checkdb]# pt-table-sync --replicate ptcheck.checksum h=opti-slave,u=ptcheck --ask-pass --sync-to-master --databases=youku_db,jd_db,elearning_db,bat_db --print > /tmp/users.sql
Enter password for opti-slave: [root@opti-master checkdb]#
[root@opti-master checkdb]# cat /tmp/users.sql
[root@opti-master checkdb]#
其实这个工具是用来根据 pt-table-checksum 生成的结果来同步差异部分的,但是如若不使用 --execute
就不会执行,使用 --print
可以打印出差异的部分,我们就是通过有无差异的记录条目来确认一致性
从结果来看,是空的,说明主备数据是一致的
Note: 此时指定的host要是slave,也就是待检查的对象
停止复制
在待优化的slave上停止复制
代码语言:javascript复制mysql> show slave statusG
mysql> stop slave;
停止复制后,最好再使用一个文本记录一下当前的position,以避免窗口信息丢失后,又执行了reset slave命令产生不良后果
生成优化语句
代码语言:javascript复制mysql> select concat('optimize table ',TABLE_SCHEMA,'.',TABLE_NAME,';') from information_schema.TABLES where (ENGINE='MyISAM' or ENGINE='InnoDB') and TABLE_SCHEMA!='information_schema' and TABLE_SCHEMA!='mysql' into outfile "/tmp/optimize.sql";
Query OK, 365 rows affected (0.09 sec)
mysql>