美文网首页
MySQL系列 Pt-osc

MySQL系列 Pt-osc

作者: 开心的蛋黄派 | 来源:发表于2024-01-11 20:49 被阅读0次

    1. 组合使用参数:

    当使用 pt-online-schema-change 时,以下参数组合可能是一个常见的选择:

    pt-online-schema-change  --user=USERNAME  --password=PASSWORD --host=HOSTNAME D=DATABASE,t=TABLE  --sock=/tmp/mysql.sock  --alter 'YOUR_ALTER_STATEMENT'  --charset=utf8  --alter-foreign-keys-method=auto --maxload='Threads_running=35,Threads_connected=10000' --critical-load='Threads_running=200,Threads_connected=10000'  --no-check-replication-filters   --recursion-method=none   --print --execute

    其中:

    --no-check-replication-filters:此参数表示不考虑复制过滤规则。

    --recursion-method=none:此参数指定不使用默认方法来发现从库,必须显式指定。

    --max-load:默认 Threads_running=25。一旦超过此值,pt-online-schema-change 可能会暂缓任务执行。根据实际情况,可以调整此参数。

    2. 无法生效的情况:

    1、表没有任何唯一性索引。

    2、表本身拥有触发器。

    3、表本身拥有外键(尽量避免使用 pt-online-schema-change)。

    4、捕捉到 warning 级别的 MySQL 错误,例如 1264 错误。

    3. 风险情况:

    1、在给表增加唯一性索引时,务必确保该列没有重复数据,否则可能会导致数据丢失。可以通过 count(distinct(column_name)) 的值来判断。

    2、有几率触发死锁情况。

    3、消费 binlog 可能有异常,务必及时通知消费端。

    4、在高负载情况下,使用 pt-online-schema-change 应特别谨慎。

    4. pt-online-schema-change 强制终止清理流程:

    1、终止与 pt-online-schema-change 相关的进程。

    2、删除触发器(如果存在)。如果遇到 MDL 锁,需要进行 MDL 锁定位(通常是由慢查询导致的)。

    3、在确认触发器已被删除后,执行 drop _table_new 操作。

        请注意,在使用 pt-online-schema-change 或进行任何数据库操作时,务必先备份数据,以防万一。

    相关文章

      网友评论

          本文标题:MySQL系列 Pt-osc

          本文链接:https://www.haomeiwen.com/subject/zbotodtx.html