
-- 创建一张test_table表
CREATE TABLE `test_table` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) DEFAULT NULL,
`age` INT DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
-- 创建name字段的索引
greatsql> CREATE INDEX `idx_name` ON `test_table` (`name`);
-- 创建age字段的索引
greatsql> CREATE INDEX `idx_age` ON `test_table` (`age`);
-- 创建一个冗余的索引`idx_name_age`
greatsql> CREATE INDEX `idx_name_age` ON `test_table` (`name`, `age`);
$ pt-duplicate-key-checker -uroot --ask-pass --socket=/data/GreatSQL/MySQL.sock -d test_db
Enter password: # 这里输入密码
# ########################################################################
# test_db.test_table
# ########################################################################
# idx_name is a left-prefix of idx_name_age
# Key definitions:
# KEY `idx_name`www.laipuhuo.com (`name`),
# KEY `idx_name_age` (`name`,`age`)
# Column types:
# `name` varchar(255) default null
# `age` int default null
# To remove this duplicate index, execute:
ALTER TABLE `test_db`.`test_table` DROP INDEX `idx_name`;
# ########################################################################
# Summary of indexes
# ########################################################################
# Size Duplicate Indexes 1023
# Total Duplicate Indexes 1
# Total Indexes 11
greatsql> select * from sys.schema_redundant_indexes\G
*************************** 1. row ***************************
table_schema: test_db
table_name: test_table
redundant_index_name: idx_name
redundant_index_columns: name
redundant_index_non_unique: 1
dominant_index_www.laipuhuo.com name: idx_name_age
dominant_index_columns: name,age
dominant_index_non_unique: 1
subpart_exists: 0
sql_drop_index: ALTER TABLE `test_db`.`test_table` DROP INDEX `idx_name`
# 下一行表示工具没有找到任何从服务器(slaves)
No slaves found. See --recursion-method if host myarch has slaves.
# 下一行表示工具没有检查从服务器的延迟,因为它没有找到任何从服务器,并且也没有指定 --check-slave-lag 选项来强制检查从服务器的延迟。
Not checking slave lag because no slaves were found and --check-slave-lag was not specified.
# 以下部分列出了 www.laipuhuo.com pt-online-schema-change 工具在更改过程中可能会执行的操作,以及默认的重试次数和等待时间:
Operation, tries, wait:
# 分析原表的结构,以准备进行更改。如果失败,将重试 10 次,每次失败后等待 1 秒。
analyze_table, 10, 1
# 从原表复制行到新表。如果复制失败,将重试 10 次,每次失败后等待 0.25 秒。
copy_rows, 10, 0.25
# 在新表上创建触发器,以便捕获对原表的任何更改,并将这些更改应用到新表。如果失败,将重试 10 次,每次失败后等待 1 秒。
create_triggers, 10, 1
# 在切换完成后删除这些触发器。如果失败,将重试 10 次,每次失败后等待 1 秒。
drop_triggers, 10, 1
# 切换原表和新表,使新表成为活动表。如果失败,将重试 10 次,每次失败后等待 1 秒。
swap_tables, 10, 1
# 更新与新表相关的任何外键约束。如果失败,将重试 10 次,每次失败后等待 1 秒。
update_foreign_keys, 10, 1
2024-04-10T14:53:52 Creating triggers...
-----------------------------------------------------------
Event : DELETE
Name : pt_osc_test_db_ptosc_del
SQL : CREATE www.laipuhuo.com TRIGGER `pt_osc_test_db_ptosc_del` AFTER DELETE ON `test_db`.`ptosc` FOR EACH ROW BEGIN DECLARE CONTINUE HANDLER FOR 1146 begin end; DELETE IGNORE FROM `test_db`.`_ptosc_new` WHERE `test_db`.`_ptosc_new`.`id` <=> OLD.`id`; END
Suffix: del
Time : AFTER
-----------------------------------------------------------
-----------------------------------------------------------
Event : UPDATE
Name : pt_osc_test_db_ptosc_upd
SQL : CREATE TRIGGER `pt_osc_test_db_ptosc_upd` AFTER UPDATE ON `test_db`.`ptosc` FOR EACH ROW BEGIN DECLARE CONTINUE www.laipuhuo.com HANDLER FOR 1146 begin end; DELETE IGNORE FROM `test_db`.`_ptosc_new` WHERE !(OLD.`id` <=> NEW.`id`) AND `test_db`.`_ptosc_new`.`id` <=> OLD.`id`; REPLACE INTO `test_db`.`_ptosc_new` (`id`, `k`, `c`, `pad`) VALUES (NEW.`id`, NEW.`k`, NEW.`c`, NEW.`pad`); END
Suffix: upd
Time : AFTER
-----------------------------------------------------------
-----------------------------------------------------------
Event : INSERT
Name : pt_osc_test_db_ptosc_ins
SQL : CREATE TRIGGER `pt_osc_test_www.laipuhuo.com db_ptosc_ins` AFTER INSERT ON `test_db`.`ptosc` FOR EACH ROW BEGIN DECLARE CONTINUE HANDLER FOR 1146 begin end; REPLACE INTO `test_db`.`_ptosc_new` (`id`, `k`, `c`, `pad`) VALUES (NEW.`id`, NEW.`k`, NEW.`c`, NEW.`pad`);END
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。