09、PT工具用法
目录
5、pt-table-checksum进行主从一致性排查和修复
1、PT工具原理
创建一张与原始表结构相同的临时表 然后对临时表进行表结构变更 通过触发器实现增量数据处理 将原始表中的数据复制到新表中 把原始表重命名为 _x_old,将临时表重命名为x 删除 _xxx_old表,删除3个触发器 表结构变更完成。
使用注意事项:表必须有主键或唯一索引、保证足够空间、原表上不能有触发器。
2、在线修改表结构
示例:
pt工具安装 wget https://downloads.percona.com/downloads/percona-toolkit/3.5.4/binary/redhat/7/x86_64/percona-toolkit-3.5.4-2.el7.x86_64.rpm yum install percona-toolkit-3.5.4-2.el7.x86_64.rpm 创建测试用户测试表 CREATE USER 'pt_osc'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'iUdy87G_caq'; GRANT create,drop,alter,insert,delete,select,update,process,replication slave,trigger ON *.* TO 'pt_osc'@'localhost'; use martin CREATE TABLE users_info ( id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(50) ); INSERT INTO users_info (id, name, email) VALUES (1, 'John', 'john@example.com'); INSERT INTO users_info (id, name, email) VALUES (2, 'Jane', 'jane@example.com'); 可以打开generallog方便观察分析 set global general_log=on tail -f /data/mysql/log/mysql-general.log
用pt-osc增加字段
增加字段 pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock --alter "ADD COLUMN age INT" -- D=martin,t=users_info 删除列 pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock --alter "DROP COLUMN age" --execute D=martin,t=users_info 修改列类型 pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock --alter "MODIFY COLUMN email varchar(100)" --execute D=martin,t=users_info 修改列名 pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock --alter "CHANGE COLUMN name user_name varchar(50)" --execute --no-check-alter D=martin,t=users_info 添加索引 pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock --alter "ADD INDEX index_user_name (user_name)" --execute D=martin,t=users_info 删除索引 pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock --alter "DROP INDEX index_user_name" --execute D=martin,t=users_info 构造重复数据 INSERT INTO users_info (id, user_name, email) VALUES (3, 'John', 'john1@example.com'); 使用pt-osc添加唯一索引 pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock --alter "ADD unique key uniq_user_name (user_name)" --execute D=martin,t=users_info 可以通过这个语句查看添加唯一索引的字段是否有重复值 SELECT IF(COUNT(DISTINCT user_name) = COUNT(*), 'Yes, the desired unique index currently contains only unique
原文地址:https://blog.csdn.net/Timebro/article/details/145210909
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!