percona-toolkit常用操作

2019-11-29  本文已影响0人  Baiyh

安装文档

sudo apt install percona-toolkit

参考:https://segmentfault.com/a/1190000014924677

--user=        连接mysql的用户名

--password=    连接mysql的密码

--host=        连接mysql的地址

P=3306        连接mysql的端口号

D=            连接mysql的库名

t=            连接mysql的表名

--alter        修改表结构的语句

--execute      执行修改表结构

--charset=utf8 使用utf8编码,避免中文乱码

--no-version-check  不检查版本,在阿里云服务器中一般加入此参数,否则会报错

注意:

{xxxxx}:表示参数。

D={mine},t={quick}逗号那儿不能添加空格,之前被坑了一次。

表添加字段

pt-online-schema-change --host=localhost --user=root --password=123456 --port=3306 --no-drop-old-table --execute --charset=utf8mb4 --no-version-check --alter "add column {coin} mediumint" D={mine},t={quick}

表字段去掉默认值

pt-online-schema-change --host=localhost --user=root --password=123456 --port=3306 --no-drop-old-table --execute --charset=utf8mb4 --no-version-check --alter "alter column {coin} drop default" D={mine},t={quick}

表字段添加默认值

pt-online-schema-change --host=localhost --user=root --password=123456 --port=3306 --no-drop-old-table --execute --charset=utf8mb4 --no-version-check --alter "alter column {coin} set default {0}" D={mine},t={quick}

表字段添加索引

pt-online-schema-change --host=localhost --user=root --password=123456 --port=3306 --no-drop-old-table --execute --charset=utf8mb4 --no-version-check --alter "ADD INDEX {idx_name} (`{column}`)" D={mine},t={quick}

表删除外键

注意:修改含有外键的表结构,需要加参数:

--alter-foreign-keys-method

如何把外键引用到新表?需要特殊处理带有外键约束的表,以保证它们可以应用到新表.当重命名表的时候,外键关系会带到重命名后的表上。

该工具有两种方法,可以自动找到子表,并修改约束关系。

auto: 在rebuild_constraints和drop_swap两种处理方式中选择一个。

rebuild_constraints:使用 ALTER TABLE语句先删除外键约束,然后再添加.如果子表很大的话,会导致长时间的阻塞。

drop_swap: 执行FOREIGN_KEY_CHECKS=0,禁止外键约束,删除原表,再重命名新表。这种方式很快,也不会产生阻塞,但是有风险:

在删除原表和重命名新表的短时间内,表是不存在的,程序会返回错误。

如果重命名表出现错误,也不能回滚了.因为原表已经被删除。

none: 类似"drop_swap"的处理方式,但是它不删除原表,并且外键关系会随着重命名转到老表上面。

删除外键:DROP FOREIGN KEY _{foreign_key},注意前面加个_

pt-online-schema-change \

--host={ip} \

--user={user} \

--password={password} \

--port=3306 \

--no-drop-old-table \

--execute \

--charset=utf8mb4 \

--no-version-check \

--alter-foreign-keys-method auto \

--alter "DROP FOREIGN KEY _{foreign_key}" \

D={database},t={table}

上一篇下一篇

猜你喜欢

热点阅读