概述
因为OSC和innotop这两个需要的依赖包比较接近,所以这次就写一起了,下面介绍下完整的部署教程,以下基于centos7操作系统。
官网文档:http://dev.mysql.com/doc/refman/5.7/en/innodb-create-index-overview.html
- OSC:在线DDL操作不锁表
- innotop:类似服务器的TOP命令--监控mysql
一、依赖包安装
配置yum这个教程就不介绍了,之前介绍N次了..
yum -y install perl-TermReadKey.x86_64 perl-IO-Socket-SSL perl-DBI.x86_64 perl-DBD-MySQL.x86_64 perl-Digest-MD5 perl-ExtUtils-MakeMaker
二、安装percona
# wget -c https://www.percona.com/downloads/percona-toolkit/3.0.13/binary/redhat/7/x86_64/percona-toolkit-3.0.13-1.el7.x86_64.rpm# rpm -ivh percona-toolkit-3.0.13-1.el7.x86_64.rpm
三、监控工具innotop
# git clone https://github.com/innotop/innotop# cd innotop# perl Makefile.PL# ./innotop -h
测试一下innotop
innotop -h 172.16.1.179 -u root -pxxx
输入:Q 可看当前查询情况
四、限制(OSC)
这里要注意一下osc的一些限制。
1、服务器空间检查与评估
如最大的表50G,索引10G,所以至少需要 “60G临时空间” + “binlog空间也算50G”吧 ,也就110G以上。
使用OSC会使增加一倍的空间,包括索引
而且在 Row Based Replication 下,还会写一份binlog。不要想当然使用–set-vars去设置 sql_log_bin=0,因为在这个session级别,alter语句也要在从库上执行,除非你对从库另有打算。
2、原表不能有trigger检查
3、外键检查,最好不要有外键
4、主键或唯一索引检查
绝大部分情况下表上需要有主键或唯一索引,因为工具在运行当中为了保证新表也是最新的,需要旧表上创建 DELETE和UPDATE 触发器,同步到新表的时候有主键会更快。个别情况是,当alter操作就是在c1列上建立主键时,DELETE触发器将基于c1列。
5、mysql服务器参数检查
(1)连接时间参数:
wait_timeout 值24小时,
innodb_lock_wait_timeout 50秒
(2)在Online DDL过程中,需要保持这段时间内,“增删改”的最大日志大小。 小了报错,大了产生锁表时间长
innodb_online_alter_log_max_size 134217728
这个参数是mysql 5.6.6引入的,因为在online ddl过程中需要保持delete、update、insert这些数据,所以需要一个日志去保持,这个参数就是限制这个日志的最大大小,当ddl过程中需要的这个日志的大小比这个限制还大的时候就会报错。
(3)主从复制参数
max_binlog_cache_sziemax_allowed_packet
这里主要分享的是这两个的部署教程,后面会分享具体的一些功能,感兴趣的朋友可以关注一下~