pt-online-schema-change使用引數說明
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- GoldenGate HANDLECOLLISIONS引數使用說明Go
- mydumper和myloader引數使用說明
- TOP引數說明
- mysqldump引數說明MySql
- 資料泵的TRANSFORM引數說明及使用ORM
- ABAP-BITMAP的命令引數的使用說明
- Oracle Table建立引數說明Oracle
- linux常用核心引數說明Linux
- Nginx的gzip配置引數說明Nginx
- pytest(10)-常用執行引數說明
- Azure Blob (三)引數設定說明
- 所有初始化引數說明(轉)
- Mysql my.cnf部分引數說明MySql
- /etc/sysctl.conf部分引數說明
- mysql relay log相關引數說明MySql
- MogDB 2.1.1 初始化引數概要說明
- 【cartographer_ros】七: 主要配置引數說明ROS
- 介紹tomcat Connector 引數優化說明Tomcat優化
- JQuery Datatables Columns API 引數詳細說明jQueryAPI
- makefile中的一些引數說明
- MySQL Galera cluster叢集常用引數說明MySql
- C10-05-1-Nmap常用引數說明
- 關於xtrabackup --slave-info引數的說明
- gnupg2 2.2.20版本,命令引數說明
- 使用說明
- 關於 navigator.mediaDevices.getUserMedia 的輸入引數說明dev
- 插曲:Kafka的生產者原理及重要引數說明Kafka
- PHP中$_SERVER的常用引數與說明——收錄篇PHPServer
- 桌上型電腦電源相關引數說明
- cmake使用說明
- certbot 使用說明
- FreeSql 使用說明SQL
- postman 使用說明Postman
- QLExpress使用說明Express
- WebApiClientCore使用說明WebAPIclient
- ApplicationContextAware使用說明APPContext
- Jupiter 使用說明
- PbootCMS模板呼叫幻燈片輪播圖及引數說明boot