新聞中心
這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
pt-online-schema-change在線修改表結(jié)構(gòu)
1. 參數(shù)
參數(shù) | 默認(rèn)值 | 說明 |
---|---|---|
--host=xxx --user=xxx --password=xxx | 連接實(shí)例信息,縮寫-h xxx -u xxx -p xxx,密碼可以使用參數(shù)--ask-pass 手動(dòng)輸入。 | |
--alter | 結(jié)構(gòu)變更語句,不需要 ALTER TABLE關(guān)鍵字。與原始ddl一樣可以指定多個(gè)更改,用逗號(hào)分隔。 | |
D=db_name,t=table_name | 指定要ddl的數(shù)據(jù)庫名和表名 | |
--max-load | 默認(rèn)為Threads_running=25。每個(gè)chunk拷貝完后,會(huì)檢查 SHOW GLOBAL STATUS 的內(nèi)容,檢查指標(biāo)是否超過了指定的閾值。如果超過,則先暫停。這里可以用逗號(hào)分隔,指定多個(gè)條件,每個(gè)條件格式: status指標(biāo)=MAX_VALUE或者status指標(biāo):MAX_VALUE。如果不指定MAX_VALUE,那么工具會(huì)這只其為當(dāng)前值的120%。 | |
--max-lag | 默認(rèn)1s。每個(gè)chunk拷貝完成后,會(huì)查看所有復(fù)制Slave的延遲情況(Seconds_Behind_Master)。要是延遲大于該值,則暫停復(fù)制數(shù)據(jù),直到所有從的滯后小于這個(gè)值。--check-interval配合使用,指定出現(xiàn)從庫滯后超過 max-lag,則該工具將睡眠多長(zhǎng)時(shí)間,默認(rèn)1s,再檢查。如--max-lag=5 --check-interval=2。 | |
--chunk-time | 默認(rèn)0.5s,即拷貝數(shù)據(jù)行的時(shí)候,為了盡量保證0.5s內(nèi)拷完一個(gè)chunk,動(dòng)態(tài)調(diào)整chunk-size的大小,以適應(yīng)服務(wù)器性能的變化。 | |
--set-vars | 使用pt-osc進(jìn)行ddl要開一個(gè)session去操作,set-vars可以在執(zhí)行alter之前設(shè)定這些變量,比如默認(rèn)會(huì)設(shè)置--set-vars "wait_timeout=10000,innodb_lock_wait_timeout=1,lock_wait_timeout=60"。 | |
--dry-run | 創(chuàng)建和修改新表,但不會(huì)創(chuàng)建觸發(fā)器、復(fù)制數(shù)據(jù)、和替換原表。并不真正執(zhí)行,可以看到生成的執(zhí)行語句,了解其執(zhí)行步驟與細(xì)節(jié),和--print配合最佳。。 | |
--execute | 確定修改表,則指定該參數(shù)。真正執(zhí)行alter。–dry-run與–execute必須指定一個(gè),二者相互排斥 |
1. --alter說明
1.絕大部分情況下表上需要有主鍵或唯一索引,因?yàn)楣ぞ咴谶\(yùn)行當(dāng)中為了保證新表也是最新的,需要舊表上創(chuàng)建 DELETE和UPDATE 觸發(fā)器,同步到新表的時(shí)候有主鍵會(huì)更快。個(gè)別情況是,當(dāng)alter操作就是在c1列上建立主鍵時(shí),DELETE觸發(fā)器將基于c1列。
在和縣等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都全網(wǎng)營(yíng)銷推廣,外貿(mào)網(wǎng)站制作,和縣網(wǎng)站建設(shè)費(fèi)用合理。
- 子句不支持 rename 去給表重命名。
- alter命令原表就不支持給索引重命名,需要先drop再add,在pt-osc也一樣。(MySQL 5.7 支持 RENAME INDEX old_index_name TO new_index_name)。但給字段重命名,千萬不要drop-add,整列數(shù)據(jù)會(huì)丟失,使用change col1 col1_new type constraint(保持類型和約束一致,否則相當(dāng)于修改 column type,不能online)
- 子句如果是add column并且定義了not null,那么必須指定default值,否則會(huì)失敗。
- 如果要?jiǎng)h除外鍵(名 fk_foo),使用工具的時(shí)候外鍵名要加下劃線,比如--alter "DROP FOREIGN KEY _fk_foo"
2. 使用限制
- 原表上不能有觸發(fā)器存在
- 在使用之前需要對(duì)磁盤容量進(jìn)行評(píng)估。因?yàn)閿?shù)據(jù)量會(huì)多一倍
3. 使用示例
1. 添加字段
pt-online-schema-change --user=user --password=password --host=10.0.201.34 --alter "ADD COLUMN f_id int default 0" D=confluence,t=sbtest3 --print --execute
網(wǎng)站題目:pt-online-schema-change在線修改表結(jié)構(gòu)
當(dāng)前路徑:http://fisionsoft.com.cn/article/iphdsh.html