概述
因為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
這里主要分享的是這兩個的部署教程,后面會分享具體的一些功能,感興趣的朋友可以關注一下~
