真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MySQLonlineddl工具之pt-online-schema-change怎么用

這篇文章主要介紹MySQL online ddl工具之pt-online-schema-change怎么用,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),蟠龍企業(yè)網(wǎng)站建設(shè),蟠龍品牌網(wǎng)站建設(shè),網(wǎng)站定制,蟠龍網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,蟠龍網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

MySQL ddl 的問題現(xiàn)狀

在運維mysql數(shù)據(jù)庫時,我們總會對數(shù)據(jù)表進(jìn)行ddl 變更,修改添加字段或者索引,對于mysql 而已,ddl 顯然是一個令所有MySQL dba 詬病的一個功能,因為在MySQL中在對表進(jìn)行ddl時,會鎖表,當(dāng)表比較小比如小于1w上時,對前端影響較小,當(dāng)時遇到千萬級別的表 就會影響前端應(yīng)用對表的寫操作。

目前InnoDB引擎是通過以下步驟來進(jìn)行DDL的:

1 按照原始表(original_table)的表結(jié)構(gòu)和DDL語句,新建一個不可見的臨時表(tmp_table)

2 在原表上加write lock,阻塞所有更新操作(insert、delete、update等)

3 執(zhí)行insert into tmp_table select * from original_table

4 rename original_table和tmp_table,最后drop original_table

5 釋放 write lock。

我們可以看見在InnoDB執(zhí)行DDL的時候,原表是只能讀不能寫的。為此 perconal 推出一個工具 pt-online-schema-change ,其特點是修改過程中不會造成讀寫阻塞。

工作原理:

如果表有外鍵,除非使用 --alter-foreign-keys-method 指定特定的值,否則工具不予執(zhí)行。

1 創(chuàng)建一個和你要執(zhí)行 alter 操作的表一樣的空表結(jié)構(gòu)。

2 執(zhí)行表結(jié)構(gòu)修改,然后從原表中的數(shù)據(jù)到copy到 表結(jié)構(gòu)修改后的表,

3 在原表上創(chuàng)建觸發(fā)器將 copy 數(shù)據(jù)的過程中,在原表的更新操作 更新到新表.

   注意:如果表中已經(jīng)定義了觸發(fā)器這個工具就不能工作了。

4 copy 完成以后,用rename table 新表代替原表,默認(rèn)刪除原表。

用法介紹:

pt-online-schema-change [OPTIONS] DSN

options 可以自行查看 help,DNS 為你要操作的數(shù)據(jù)庫和表。這里有兩個參數(shù)需要介紹一下:

--dry-run 

 這個參數(shù)不建立觸發(fā)器,不拷貝數(shù)據(jù),也不會替換原表。只是創(chuàng)建和更改新表。

--execute 

這個參數(shù)的作用和前面工作原理的介紹的一樣,會建立觸發(fā)器,來保證最新變更的數(shù)據(jù)會影響至新表。注意:如果不加這個參數(shù),這個工具會在執(zhí)行一些檢查后退出。

依賴條件

1操作的表必須有主鍵否則 報如下錯誤。

[root@rac1 bin]#  ./pt-online-schema-change -u root -h 10.250.7.50  -p yang --alter='add column vid int ' --execute D=houyi,t=ga      

Cannot connect to D=houyi,h=127.0.0.1,p=...,u=root

Cannot chunk the original table `houyi`.`ga`: There is no good index and the table is oversized. at ./pt-online-schema-change line 5353.

測試?yán)樱?/strong>

1 添加字段

[root@rac1 bin]#  ./pt-online-schema-change -u root -h 10.250.7.50  -p yang --alter='add column vid int ' --execute D=houyi,t=ga  

Cannot connect to D=houyi,h=127.0.0.1,p=...,u=root

Operation, tries, wait:

  copy_rows, 10, 0.25

  create_triggers, 10, 1

  drop_triggers, 10, 1

  swap_tables, 10, 1

  update_foreign_keys, 10, 1

Altering `houyi`.`ga`...

Creating new table...

Created new table houyi._ga_new OK.

Altering new table...

Altered `houyi`.`_ga_new` OK.

Creating triggers...

Created triggers OK.

Copying approximately 746279 rows...

Copied rows OK.

Swapping tables...

Swapped original and new tables OK.

Dropping old table...

Dropped old table `houyi`.`_ga_old` OK.

Dropping triggers...

Dropped triggers OK.

Successfully altered `houyi`.`ga`.

2 添加索引

[root@rac1 bin]# ./pt-online-schema-change -u root -h 10.250.7.50  -p yang --alter='add key indx_vid(vid) ' --execute D=houyi,t=ga    

3 刪除字段         

[root@rac1 bin]# ./pt-online-schema-change -u root -h 10.250.7.50  -p yang --alter='drop  column vid ' --execute D=houyi,t=ga         

以上是“MySQL online ddl工具之pt-online-schema-change怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


分享名稱:MySQLonlineddl工具之pt-online-schema-change怎么用
分享路徑:http://weahome.cn/article/jhodoc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部