在線修改MySQL表結構


1、在線修改表結構必須慎重

  • 在業務系統運行的過程中隨意刪改字段,會造成重大事故
  • 常規的做法是業務停機,維護表結構
  • 但是不影響正常業務的表結構是允許在線修改的

2、alter table修改表結構的弊病

  • 由於修改表結構是表級鎖,因此在修改表結構,影響表寫入操作
  • 如果修改表結構失敗,必須還原表結構,所以耗時更長
  • 大數據表記錄多,修改表結構鎖表時間很久

3、在線修改表結構工具——PerconaTookit工具

  • Percona公司提供了維護MySQL的PerconaTookit工具包
  • pt-online-schema-change可以完成在線修改表結構

原理

 步驟

  注意:與Mysql8.0有沖突,需要使用新的虛擬機安裝PerconaTookit依賴包

  1. 安裝第三方依賴包
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,則代表修改成功


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM