
当使用 pt-online-schema-change(pt-osc)执行在线表结构变更时,recursion-method=none 表示跳过对从库(replica)的自动发现与检测,即不递归检查主从拓扑关系。
适用于单机或无复制环境
若数据库是单实例部署,没有主从复制,或者你明确知道当前操作仅影响一个独立实例,则无需探测复制关系。启用 recursion-method=none 可避免因探测失败(如无法连接从库、从库不可达、权限不足等)导致工具提前退出。
适用于已手动确认复制状态的场景
在复杂架构中(如多级复制、GTID + 传统复制混用、中间件代理后端等),pt-osc 自动探测可能误判或超时。此时可先通过 SHOW SLAVE STATUS 或 SELECT * FROM performance_schema.replication_connection_status 等方式人工确认复制健康,再加 --recursion-method=none 强制跳过探测,让变更流程继续执行。
适用于受限权限或网络隔离环境
运维账号可能只具备主库 DML/DDL 权限,不具备访问 information_schema.PROCESSLIST、performance_schema 或从库的权限;或主从之间存在防火墙策略,导致 pt-osc 的默认探测端口(如 3306)不通。此时设为 none 可绕过权限和网络校验环节。
不适用的情况需特别注意
- 正在运行主从复制且依赖从库延迟监控(如 --max-lag)——跳过递归将导致延迟判断失效,可能引发从库追不上、数据不一致风险
- 使用 --check-replication-filters 或 --chunk-index 等依赖复制拓扑的参数——这些功能会因跳过探测而行为异常或报错
- 自动化运维平台统一调用 pt-osc 且未区分环境类型——盲目设为 none 可能在复制环境中埋下隐患










