<small id="7ktuj"></small>
      <bdo id="7ktuj"></bdo>
        <mark id="7ktuj"></mark>

        <source id="7ktuj"></source>
        <small id="7ktuj"></small>

        ITPub博客

        首頁 > 數據庫 > MySQL > MySQL 5.7使用pt-online-schema-change對大表加字段

        MySQL 5.7使用pt-online-schema-change對大表加字段

        原創 MySQL 作者:ywxj_001 時間:2019-10-23 20:53:04 0 刪除 編輯

        業務需求:

        對一張線上的3000W行的表加字段:

        用普通方式,建議小表使用:

        ALTER TABLE `idempotent`

        ADD COLUMN `orderid` VARCHAR(20) NULL DEFAULT NULL COMMENT '業務單據號' AFTER `isdelete`;

        大表會鎖表。


        對大表加字段,建議用pt-online-schema-change工具,可以不鎖表。

        對表 idempotent加字段 orderid:

        命令:

        [root@DB001 ~]#pt-online-schema-change --user=root --password=123456 --host=192.168.1.18  --alter "ADD COLUMN orderid VARCHAR(20) NULL DEFAULT NULL COMMENT '業務單據號'" D=ora,t=idempotent --no-check-replication-filters  --execute


        Found 1 slaves:

        localhost.localdomain -> 192.168.1.19:socket

        Will check slave lag on:

        localhost.localdomain -> 192.168.1.19:socket

        Operation, tries, wait:

          analyze_table, 10, 1

          copy_rows, 10, 0.25

          create_triggers, 10, 1

          drop_triggers, 10, 1

          swap_tables, 10, 1

          update_foreign_keys, 10, 1

        Altering `ora`.`idempotent`...

        Creating new table...

        Created new table ora._idempotent_new OK.

        Altering new table...

        Altered `ora`.`_idempotent_new` OK.

        2019-10-23T19:01:00 Creating triggers...

        2019-10-23T19:01:00 Created triggers OK.

        2019-10-23T19:01:00 Copying approximately 24968401 rows...

        Copying `ora`.`idempotent`:   4% 10:53 remain

        Copying `ora`.`idempotent`:   8% 10:40 remain

        Copying `ora`.`idempotent`:  11% 11:49 remain

        Copying `ora`.`idempotent`:  14% 12:08 remain

        Copying `ora`.`idempotent`:  17% 12:09 remain

        Copying `ora`.`idempotent`:  19% 12:15 remain

        Copying `ora`.`idempotent`:  22% 12:15 remain

        Copying `ora`.`idempotent`:  24% 12:11 remain

        Copying `ora`.`idempotent`:  27% 12:09 remain

        Copying `ora`.`idempotent`:  29% 12:03 remain

        Copying `ora`.`idempotent`:  31% 11:45 remain

        Copying `ora`.`idempotent`:  34% 11:23 remain

        Copying `ora`.`idempotent`:  37% 11:01 remain

        Copying `ora`.`idempotent`:  39% 10:39 remain

        Copying `ora`.`idempotent`:  42% 10:11 remain

        Copying `ora`.`idempotent`:  44% 09:50 remain

        Copying `ora`.`idempotent`:  47% 09:35 remain

        Copying `ora`.`idempotent`:  49% 09:14 remain

        Copying `ora`.`idempotent`:  52% 08:44 remain

        Copying `ora`.`idempotent`:  55% 08:10 remain

        Copying `ora`.`idempotent`:  59% 07:17 remain

        Copying `ora`.`idempotent`:  63% 06:21 remain

        Copying `ora`.`idempotent`:  67% 05:32 remain

        Copying `ora`.`idempotent`:  71% 04:44 remain

        Copying `ora`.`idempotent`:  75% 03:59 remain

        Copying `ora`.`idempotent`:  80% 03:11 remain

        Copying `ora`.`idempotent`:  84% 02:28 remain

        Copying `ora`.`idempotent`:  88% 01:49 remain

        Copying `ora`.`idempotent`:  92% 01:08 remain

        Copying `ora`.`idempotent`:  96% 00:28 remain

        2019-10-23T19:18:24 Copied rows OK.

        2019-10-23T19:18:24 Analyzing new table...

        2019-10-23T19:18:24 Swapping tables...

        2019-10-23T19:18:24 Swapped original and new tables OK.

        2019-10-23T19:18:24 Dropping old table...

        2019-10-23T19:18:26 Dropped old table `ora`.`_idempotent_old` OK.

        2019-10-23T19:18:26 Dropping triggers...

        2019-10-23T19:18:26 Dropped triggers OK.

        Successfully altered `ora`.`idempotent`.

        You have mail in /var/spool/mail/root


        整個過程持續10幾分鐘,不鎖表。

        字段添加完成。


        PS:

        切記在業務低峰運行。

        pt-online-schema-change --user=user --password=xxx --host=ip --port=3306 --alter “add column col1 VARCHAR(64) NULL COMMENT ‘訂單號’” D=sy,t=t1 --execute --charset=utf8  --nocheck-replication-filters --max-load=“Threads_running=20”

        可以指定字符集,防止加好字段的表的注釋出現亂碼。

        修改注釋:

        ALTER TABLE idempotent MODIFY COLUMN `sysno` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '編號';

        來自 “ ITPUB博客 ” ,鏈接:http://www.ep4tq.com/22996654/viewspace-2661185/,如需轉載,請注明出處,否則將追究法律責任。

        請登錄后發表評論 登錄
        全部評論
        在零售、金融行業從事數據庫相關工作10余年,有豐富的數據庫管理的相關經驗。 涉及SqlServer、Oracle、MySQL、PostgreSQL等多種數據庫。 專注于各類數據庫的研究。 目前在一家外資的上市零售公司擔任資深DBA崗位。負責整個集團數據庫的架構設計和管理。

        注冊時間:2010-01-19

        • 博文量
          121
        • 訪問量
          101567
        妹子图每日分享