SQL pt-osc 的 recursion-method=none 的无递归模式适用场景

7次阅读

SQL pt-osc 的 recursion-method=none 的无递归模式适用场景

当使用 pt-online-schema-change(pt-osc)执行在线表结构变更时,recursion-method=none 表示跳过对从库(replica)的自动发现与检测,即不递归检查主从拓扑关系。

适用于单机或无复制环境

数据库是单实例部署,没有主从复制,或者你明确知道当前操作仅影响一个独立实例,则无需探测复制关系。启用 recursion-method=none 可避免因探测失败(如无法连接从库、从库不可达、权限不足等)导致工具提前退出。

适用于已手动确认复制状态的场景

在复杂架构中(如多级复制、GTID + 传统复制混用、中间件代理后端等),pt-osc 自动探测可能误判或超时。此时可先通过 SHOW SLAVE STATUSselect * FROM performance_schema.replication_connection_status 等方式人工确认复制健康,再加 –recursion-method=none 强制跳过探测,让变更流程继续执行。

适用于受限权限或网络隔离环境

运维账号可能只具备主库 DML/DDL 权限,不具备访问 information_schema.PROCESSLISTperformance_schema 或从库的权限;或主从之间存在防火墙策略,导致 pt-osc 的默认探测端口(如 3306)不通。此时设为 none 可绕过权限和网络校验环节。

不适用的情况需特别注意

  • 正在运行主从复制且依赖从库延迟监控(如 –max-lag)——跳过递归将导致延迟判断失效,可能引发从库追不上、数据不一致风险
  • 使用 –check-replication-filters–chunk-index 等依赖复制拓扑的参数——这些功能会因跳过探测而行为异常或报错
  • 自动化运维平台统一调用 pt-osc 且未区分环境类型——盲目设为 none 可能在复制环境中埋下隐患
text=ZqhQzanResources