最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

mysql大表修改工具: pt-online-schame-change

2023-04-24 10:53 作者:單純的饒同學(xué)  | 我要投稿

個人博客地址: https://note.raokun.top
擁抱ChatGPT,國內(nèi)訪問網(wǎng)站:https://www.playchat.top

在表數(shù)據(jù)量很大的時候直接添加字段,以及其他表結(jié)構(gòu)修改,會嚴(yán)重影響線上使用,而且耗費時間很長;使用這個工具可以很好的在線修改表結(jié)構(gòu)。

好處:

降低主從延時的風(fēng)險

可以限速、限資源,避免操作時MySQL負(fù)載過高

建議:

在業(yè)務(wù)低峰期做,將影響降到最低

直接原表修改缺點:

當(dāng)表的數(shù)據(jù)量很大的時候,如果直接在線修改表結(jié)構(gòu),嚴(yán)重影響線上環(huán)境,而且耗時不可預(yù)估

注意:

需要確認(rèn)表必須包含主鍵或者唯一索引

工具會創(chuàng)建觸發(fā)器,所以原表上不能有觸發(fā)器

有外鍵的表需要注意使用參數(shù)--alter-foreign-keys-method(現(xiàn)在業(yè)務(wù)上不建議表中外鍵關(guān)聯(lián),建議在業(yè)務(wù)中控制)

原理:

  • 首先它會新建一張一模一樣的表,表名一般是_new后綴

  • 然后在這個新表執(zhí)行更改字段操作

  • 然后在原表上加三個觸發(fā)器,DELETE/UPDATE/INSERT,將原表中要執(zhí)行的語句也在新表中執(zhí)行

  • 最后將原表的數(shù)據(jù)拷貝到新表中,然后替換掉原表

1.數(shù)據(jù)備份

無論操作多么有把握,也要把備份做好(萬一很可怕)**

2.安裝

下載安裝包:

wget??https://downloads.percona.com/downloads/percona-toolkit/3.3.1/source/tarball/percona-toolkit-3.3.1.tar.gz

解壓:

tar?-xvf?percona-toolkit-3.3.1.tar.gz

安裝一些依賴包:

yum?install?perl-DBIyum?install?perl-DBD-MySQLyum?install?perl-Time-HiResyum?install?perl-IO-Socket-SSLyum?-y?install?perl-Digest-MD5

3.測試可用

在解壓包的bin目錄下執(zhí)行,看是否正常,查看命令

./pt-online-schema-change?--help

4.參數(shù)字段及含義

參數(shù)含義--user=連接用戶名--password=連接密碼--host=連接IPP=端口--alter=執(zhí)行表變更的語句D=database 庫名t=table 表名--charset=utf8使用utf8編碼,避免中文亂碼--no-check-alter不檢查alter語句--print打印操作日志--execute執(zhí)行修改表結(jié)構(gòu),真正的執(zhí)行alter,–dry-run與–execute必須指定一個,二者相互排斥–dry-run創(chuàng)建和修改新表,但不會創(chuàng)建觸發(fā)器、復(fù)制數(shù)據(jù)、和替換原表。并不真正執(zhí)行,與--print配合查看執(zhí)行細(xì)節(jié)

5.具體操作

  1. 添加一個字段

如果執(zhí)行失敗,檢查alter語句,如果確認(rèn)無誤 可以避免檢查 --no-check-alter

./pt-online-schema-change?--user=xxxx?--password=xxxx?--host=xxx.xxx.xxx.xxxx?--alter?"add?column?group_id?bigint(20)?not?NULL?default?'0'?comment?'test'?"?P=30306,D=h_pushcenter,t=h_message?--charset=utf8?--no-version-check?--print?--execute

  1. 修改字段

    sql語句:

ALTER?TABLE?`h_message`?MODIFY?COLUMN?`group_id`?int(20)??NOT?NULL?DEFAULT?'1';ALTER?TABLE?`h_message`?MODIFY?COLUMN?`group_id`?int(20)??NOT?NULL?DEFAULT?'1';

pt命令:

--alter?"MODIFY?COLUMN?group_id?int(20)?NOT?NULL?DEFAULT?'1'"

  1. 修改字段名

    sql語句:

ALTER?TABLE?`h_message`?CHANGE?column?group_id?group_id_0?bigint(20);

pt命令:

--alter?"CHANGE?group_id?group_id_0?bigint(20)"

  1. 添加索引

sql語句:

ALTER?TABLE?`h_message`?ADD?INDEX?h_message_n1(group_id);

pt命令:

--alter?"ADD?INDEX?h_message_n1(group_id)"

6.操作日志

  • 創(chuàng)建new結(jié)尾的新表

Creating?new?table...CREATE?TABLE?`h_pushcenter`.`_h_message_new`?.....Created?new?table?h_pushcenter._h_message_new?OK.

  • 新表執(zhí)行alter操作

Altering?new?table...
ALTER?TABLE?`h_pushcenter`.`_h_message_new`?add?column??group_id?bigint(20)?not?NULL?default?'0'??comment?'test'
Altered?`h_pushcenter`.`_h_message_new`?OK.

  • 原表上創(chuàng)建3個觸發(fā)器

Creating?triggers...
Event?:?DELETE
Event?:?UPDATE
Event?:?INSERTCreated?triggers?OK.

  • 復(fù)制數(shù)據(jù)到新表

Copying?approximately?8187?rows...
Copied?rows?OK.

  • 重命名新舊兩個表,然后替換,刪除舊表

2021-05-19T10:33:08?Swapping?tables...RENAME?TABLE?`h_pushcenter`.`h_message`?TO?`h_pushcenter`.`_h_message_old`,?`h_pushcenter`.`_h_message_new`?TO?`h_pushcenter`.`h_message`2021-05-19T10:33:09?Swapped?original?and?new?tables?OK.2021-05-19T10:33:09?Dropping?old?table...DROP?TABLE?IF?EXISTS?`h_pushcenter`.`_h_message_old`2021-05-19T10:33:09?Dropped?old?table?`h_pushcenter`.`_h_message_old`?OK.

  • 刪除觸發(fā)器

2021-05-19T10:33:09?Dropping?triggers...DROP?TRIGGER?IF?EXISTS?`h_pushcenter`.`pt_osc_h_pushcenter_h_message_del`DROP?TRIGGER?IF?EXISTS?`h_pushcenter`.`pt_osc_h_pushcenter_h_message_upd`DROP?TRIGGER?IF?EXISTS?`h_pushcenter`.`pt_osc_h_pushcenter_h_message_ins`2021-05-19T10:33:09?Dropped?triggers?OK.

  • 完成

鏈接:
mysql好用工具: pt-online-schame-change


mysql大表修改工具: pt-online-schame-change的評論 (共 條)

分享到微博請遵守國家法律
松溪县| 富平县| 黄山市| 岳普湖县| 长武县| 芦山县| 神木县| 威远县| 荆门市| 武川县| 莎车县| 禹州市| 怀远县| 鄂托克前旗| 邳州市| 卢氏县| 云浮市| 伊金霍洛旗| 孝义市| 连江县| 阳新县| 横峰县| 莲花县| 双城市| 闵行区| 富裕县| 泗洪县| 大同县| 公安县| 枣阳市| 苏州市| 运城市| 封开县| 威海市| 香港| 潜江市| 察哈| 昌江| 凤城市| 边坝县| 凌云县|