使用alter语句修改表的结构的时候,有的时候会卡住,可以使用pt-online ,这个是在线修改表结构的一个工具
使用pi-online-schema-change执行sql的日志 SQL语句:
alter table `tmp_task_user` ADD support tinyint(1) unsigned NOT NULL DEFAULT '1'; sh pt.sh tmp_task_user "ADD COLUMN support tinyint(1) unsigned NOT NULL DEFAULT '1'"日志输出:
tmp_task_user ADD COLUMN support tinyint(1) unsigned NOT NULL DEFAULT '1' No slaves found. See --recursion-method if host h=127.0.0.1,P=3306 has slaves. Not checking slave lag because no slaves were found and --check-slave-lag was not specified. 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 `test_db`.`tmp_task_user`... Creating new table... Created new table test_db._tmp_task_user_new OK. Altering new table... Altered `test_db`.`_tmp_task_user_new` OK. 2018-05-14T18:14:21 Creating triggers... 2018-05-14T18:14:21 Created triggers OK. 2018-05-14T18:14:21 Copying approximately 6 rows... 2018-05-14T18:14:21 Copied rows OK. 2018-05-14T18:14:21 Analyzing new table... 2018-05-14T18:14:21 Swapping tables... 2018-05-14T18:14:21 Swapped original and new tables OK. 2018-05-14T18:14:21 Dropping old table... 2018-05-14T18:14:21 Dropped old table `test_db`.`_tmp_task_user_old` OK. 2018-05-14T18:14:21 Dropping triggers... 2018-05-14T18:14:21 Dropped triggers OK. Successfully altered `test_db`.`tmp_task_user`.好处:
降低主从延时的风险可以限速、限资源,避免操作时mysql负载过高 建议:在业务低峰期做,将影响降到最低使用pt-online-schema-change则可以这么写
sh pt.sh tb_test "ADD COLUMN column1 tinyint(4) DEFAULT NULL"sql语句
ALTER TABLE `tb_test` MODIFY COLUMN `num` int(11) unsigned NOT NULL DEFAULT '0';使用pt-online-schema-change则可以这么写
sh pt.sh tb_test "MODIFY COLUMN num int(11) unsigned NOT NULL DEFAULT '0'"sql语句
ALTER TABLE `tb_test` CHANGE COLUMN age adress varchar(30);使用pt-online-schema-change则可以这么写
sh pt.sh tb_test "CHANGE COLUMN age address varchar(30)"sql语句
ALTER TABLE `tb_test` ADD INDEX idx_address(address);使用pt-online-schema-change则可以这么写
sh pt.sh tb_test "ADD INDEX idx_address(address)"参考链接:https://www.cnblogs.com/lkj371/p/11430265.html