重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
總所周知,數據庫最昂貴的操作莫過于DDL操作,因為MySQL在修改表期間會阻塞任何讀寫操作的,基本上你的業務出于癱瘓狀態了。對于龐大的可能歷時好幾個小時才完成,簡直就是個惡夢,沒法容忍的操作。
創新互聯公司是一家專注于成都網站設計、成都網站建設、外貿網站建設與策劃設計,桐梓網站建設哪家好?創新互聯公司做網站,專注于網站建設10余年,網設計領域的專業建站公司;建站業務涵蓋:桐梓等地區。桐梓做網站價格咨詢:18982081108
Percona開發了一系列工具Percona Toolkit包,其中有一工具pt-online-schema-change可以在線執行DDL操作,不會阻塞讀寫操作從而影響業務程序。當然啦,MySQL 5.6也增強了一些在線DDL功能。下面主要是說pt-online-schema-change在線更改表結構。
pt-online-schema-change原理
1、如果存在外鍵,根據alter-foreign-keys-method參數的值,檢測外鍵相關的表,做相應設置的處理。
2、創建一個新的表,表結構為修改后的數據表,用于從源數據表向新表中導入數據。
3、創建觸發器,用于記錄從拷貝數據開始之后,對源數據表繼續進行數據修改的操作記錄下來,用于數據拷貝結束后,執行這些操作,保證數據不會丟失。
4、拷貝數據,從源數據表中拷貝數據到新表中。
5、修改外鍵相關的子表,根據修改后的數據,修改外鍵關聯的子表。
6、rename源數據表為old表,把新表rename為源表名,并將old表刪除。
7、刪除觸發器。
wget https://www.percona.com/downloads/percona-toolkit/3.0.4/binary/redhat/7/x86_64/percona-toolkit-3.0.4-1.el7.x86_64.rpm
yum install percona-toolkit-3.0.4-1.el7.x86_64.rpm
time pt-online-schema-change --host=10.153.1.200 --port=3306 --user=prod --password="yourpasswd" --alter="ADD COLUMN internalCode VARCHAR(32) DEFAULT '0'" --execute D=trade,t=BorrowOrders --set-vars innodb_lock_wait_timeout=50 --no-check-replication-filters --recursion-method=none
time pt-duplicate-key-checker --host=10.153.1.200 --port=3306 --user=prod --password="yourpasswd",D=trade --tables=Persons