pt-online-schema-change使用引數說明

haoge0205發表於2020-03-24

pt-online-schema-change使用


工作原理:
1、如果存在外來鍵,根據alter-foreign-keys-method引數的值,檢測外來鍵相關的表,做相應設定的處理。沒有使用 --alter-foreign-keys-method=rebuild_constraints 指定特定的值,該工具不予執行
2、建立一個和源表表結構相同的表(table_new),執行alter修改臨時表結構
3、在原表上建立三個觸發器,insert,delete,udpate對應的觸發器,(用於copy資料的過程中,在原表的更新操作更新到新表)
4、從原表複製資料到新表,複製過程中在原表的寫操作都會更新到新建的臨時表
5、修改外來鍵相關的子表,根據修改後的資料,修改外來鍵關聯的子表
6、rename源資料表為old,把新表rename為源表明,並將old表刪除
7、刪除觸發器

執行條件:
1、操作的表必須有主鍵或者唯一索引,否則報錯
2、該表不能定義觸發器,否則報錯

用法介紹:
pt-online-schema-change --host=ip --port=3306 --user=username --password='password' D=db_name,t=table_name --alter="modify order_id bigint(20) COMMENT '訂單id';" --critical-load="Threads_running=200" --sleep=1 --charset=utf8mb4 --check-slave-lag="192.168.1.2,192.168.1.3" --check-interval=1 --execute

--dry-run 建立並修改新表,但不建立觸發器,也不復製表,或者替換原表,與--execute互斥
--execute 這個引數的作用和前面工作原理的介紹的一樣,會建立觸發器,來保證最新變更的資料會影響至新表。注意:如果不加這個引數,這個工具會在執行一些檢查後退出
--critical-load 每次chunk操作前後,會根據show global status統計指定的狀態量的變化,預設是統計Thread_running。目的是為了安全,防止原始表上的觸發器引起負載過高。這也是為了防止線上DDL對線上的影響。超過設定的閥值,就會終止操作,線上DDL就會中斷。提示的異常如上報錯資訊
--charset=utf8 連線到MySQL後執行SET NAMES UTF8
--check-slave-lag 檢查主從延遲
--check-replication-filters 檢查複製中是否設定了過濾條件,如果設定了,程式將退出
--nocheck-replication-filters 不檢查複製中是否設定了過濾條件
--set-vars 設定mysql的變數值
--sleep 每個chunk匯入後與下一次chunk匯入開始前sleep一會,sleep時間越長,對於磁碟IO的衝擊就越小
--[no]drop-old-table rename新表後drop舊錶,可以no-xxx來保留舊錶
--[no]drop-new-table 如果複製原表失敗則刪除新表; 也可以no-xxx來保留新表
--chunk-size chunk的行數,預設1000
--chunk-index-columns 有複合索引的時候,指定索引列
--critical-load 預設Threads_running=50; 每次chunk執行後會自動用SHOW GLOBAL STATUS檢查負載情況,如果超過閾值則放棄;
--execute 執行操作 與 --dry-run互斥
--force 強制執行,可能打破外來鍵約束
--skip-check-slave-lag 檢查SLAVE的時候,指定該SLAVE跳過;
--print 將會顯示工具執行的命令
--null-to-not-null 修改允許null值為not null
--preserve-triggers 保留原表的觸發器,不刪除
--max-lag 預設1s, 如果主從延時的時間超過這個值,則複製會暫停"--check-interval"秒時間;然後再檢查,直到主從延時小於該值;如果指定了"--check-slave-lag",則只會檢查指定slave延時,而不是檢查所有slave;如果有任何SLAVE stop了,那麼工具會一直等待下去;每次停止的時候都會列印報告
--ask-pass 連線的時候會要求提供密碼


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28939273/viewspace-2682152/,如需轉載,請註明出處,否則將追究法律責任。

相關文章