1、在線修改表結構必須慎重
- 在業務系統運行的過程中隨意刪改字段,會造成重大事故
- 常規的做法是業務停機,維護表結構
- 但是不影響正常業務的表結構是允許在線修改的
2、alter table修改表結構的弊病
- 由於修改表結構是表級鎖,因此在修改表結構,影響表寫入操作
- 如果修改表結構失敗,必須還原表結構,所以耗時更長
- 大數據表記錄多,修改表結構鎖表時間很久
3、在線修改表結構工具——PerconaTookit工具
- Percona公司提供了維護MySQL的PerconaTookit工具包
- pt-online-schema-change可以完成在線修改表結構
原理
步驟
注意:與Mysql8.0有沖突,需要使用新的虛擬機安裝PerconaTookit依賴包
- 安裝第三方依賴包
yum install -y perl-DBI yum install -y perl-DBD-mysql yum install -y perl-IO-Socket-SSL yum install -y perl-Digest-MD5 yum install -y perl-TermReadKey
2.安裝PerconaTookit
3.pt-online-schema-change參數
pt-online-schema-change OPTIONS DSN
例子:
把客戶收貨地址表中的name字段改成varchar(20)
pt-online-schema-change --host=192.168.0.114 --port=3306 --user=root -password=123456 --alter "modify name varchar(20) not null comment '收貨人' D=neti,t=t_customer_address --print --execute
由於PerconaTookit工具連接Mysql,還是使用老的連接方式,Mysql8.0使用了新的密碼認證方式,需要將其改為舊的密碼認證方式,由於在連接Mysql,我已經修改過,不在進行修改
alter user 'root'@'%' identified by 'password' password expire never; alter user 'root'@'%' identified with mysql_native_password by '123456';
在沒有安裝Mysql的虛擬機的PerconaTookit文件夾下執行上述命令
最終報:Successfully,則代表修改成功