溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

pt-online-schema-change使用參數(shù)是怎樣的呢

發(fā)布時(shí)間:2021-10-08 16:44:36 來源:億速云 閱讀:188 作者:柒染 欄目:MySQL數(shù)據(jù)庫

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)pt-online-schema-change使用參數(shù)是怎樣的呢,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

pt-online-schema-change使用


工作原理:
1、如果存在外鍵,根據(jù)alter-foreign-keys-method參數(shù)的值,檢測外鍵相關(guān)的表,做相應(yīng)設(shè)置的處理。沒有使用 --alter-foreign-keys-method=rebuild_constraints 指定特定的值,該工具不予執(zhí)行
2、創(chuàng)建一個(gè)和源表表結(jié)構(gòu)相同的表(table_new),執(zhí)行alter修改臨時(shí)表結(jié)構(gòu)
3、在原表上創(chuàng)建三個(gè)觸發(fā)器,insert,delete,udpate對應(yīng)的觸發(fā)器,(用于copy數(shù)據(jù)的過程中,在原表的更新操作更新到新表)
4、從原表拷貝數(shù)據(jù)到新表,拷貝過程中在原表的寫操作都會更新到新建的臨時(shí)表
5、修改外鍵相關(guān)的子表,根據(jù)修改后的數(shù)據(jù),修改外鍵關(guān)聯(lián)的子表
6、rename源數(shù)據(jù)表為old,把新表rename為源表明,并將old表刪除
7、刪除觸發(fā)器

執(zhí)行條件:
1、操作的表必須有主鍵或者唯一索引,否則報(bào)錯(cuò)
2、該表不能定義觸發(fā)器,否則報(bào)錯(cuò)

用法介紹:
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 創(chuàng)建并修改新表,但不創(chuàng)建觸發(fā)器,也不復(fù)制表,或者替換原表,與--execute互斥
--execute 這個(gè)參數(shù)的作用和前面工作原理的介紹的一樣,會建立觸發(fā)器,來保證最新變更的數(shù)據(jù)會影響至新表。注意:如果不加這個(gè)參數(shù),這個(gè)工具會在執(zhí)行一些檢查后退出
--critical-load 每次chunk操作前后,會根據(jù)show global status統(tǒng)計(jì)指定的狀態(tài)量的變化,默認(rèn)是統(tǒng)計(jì)Thread_running。目的是為了安全,防止原始表上的觸發(fā)器引起負(fù)載過高。這也是為了防止在線DDL對線上的影響。超過設(shè)置的閥值,就會終止操作,在線DDL就會中斷。提示的異常如上報(bào)錯(cuò)信息
--charset=utf8 連接到MySQL后運(yùn)行SET NAMES UTF8
--check-slave-lag 檢查主從延遲
--check-replication-filters 檢查復(fù)制中是否設(shè)置了過濾條件,如果設(shè)置了,程序?qū)⑼顺?br/>--nocheck-replication-filters 不檢查復(fù)制中是否設(shè)置了過濾條件
--set-vars 設(shè)置mysql的變量值
--sleep 每個(gè)chunk導(dǎo)入后與下一次chunk導(dǎo)入開始前sleep一會,sleep時(shí)間越長,對于磁盤IO的沖擊就越小
--[no]drop-old-table rename新表后drop舊表,可以no-xxx來保留舊表
--[no]drop-new-table 如果復(fù)制原表失敗則刪除新表; 也可以no-xxx來保留新表
--chunk-size chunk的行數(shù),默認(rèn)1000
--chunk-index-columns 有復(fù)合索引的時(shí)候,指定索引列
--critical-load 默認(rèn)Threads_running=50; 每次chunk執(zhí)行后會自動(dòng)用SHOW GLOBAL STATUS檢查負(fù)載情況,如果超過閾值則放棄;
--execute 執(zhí)行操作 與 --dry-run互斥
--force 強(qiáng)制運(yùn)行,可能打破外鍵約束
--skip-check-slave-lag 檢查SLAVE的時(shí)候,指定該SLAVE跳過;
--print 將會顯示工具執(zhí)行的命令
--null-to-not-null 修改允許null值為not null
--preserve-triggers 保留原表的觸發(fā)器,不刪除
--max-lag 默認(rèn)1s, 如果主從延時(shí)的時(shí)間超過這個(gè)值,則復(fù)制會暫停"--check-interval"秒時(shí)間;然后再檢查,直到主從延時(shí)小于該值;如果指定了"--check-slave-lag",則只會檢查指定slave延時(shí),而不是檢查所有slave;如果有任何SLAVE stop了,那么工具會一直等待下去;每次停止的時(shí)候都會打印報(bào)告
--ask-pass 連接的時(shí)候會要求提供密碼

上述就是小編為大家分享的pt-online-schema-change使用參數(shù)是怎樣的呢了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI