mysql如何迁移MySQL Router配置_mysql路由策略搬迁

3次阅读

mysql router 默认按顺序查找配置文件:/etc/mysqlrouter/mysqlrouter.conf、$home/.mysqlrouter/mysqlrouter.conf、当前目录mysqlrouter.conf;生产环境应显式指定–config路径,并确保文件权限正确。

mysql如何迁移MySQL Router配置_mysql路由策略搬迁

MySQL Router 配置文件位置和识别逻辑

MySQL Router 不会自动读取任意路径的配置,它只认固定位置或显式指定的 mysqlrouter.conf。默认启动时按顺序查找:/etc/mysqlrouter/mysqlrouter.conf$HOME/.mysqlrouter/mysqlrouter.conf、当前工作目录下的 mysqlrouter.conf。迁移前必须确认目标环境用的是哪个路径,否则改了文件也无效。

  • mysqlrouter --help 查看 “default config file” 行,确认默认路径
  • 生产环境建议统一用 --config 显式指定路径,避免依赖默认查找逻辑
  • 注意文件权限:Router 进程用户(如 mysqlrouter)必须有读取权限,否则启动报错 Failed to open configuration file

路由策略(routing_section)不能直接复制粘贴

MySQL Router 的 [routing] 段落看似简单,但实际生效依赖后端 MySQL 实例的拓扑状态。直接把旧配置里的 destinations 地址拷过去,如果新集群 IP/端口/角色(PRIMARY vs SECONDARY)变了,Router 启动会成功,但连接一发就失败——因为底层节点不可达或角色不匹配。

  • destinations 必须指向新集群中真实存活且角色正确的实例,例如:destinations=metadata-cache://mycluster/?role=PRIMARYdestinations=10.20.30.40:3306
  • 若用元数据缓存(metadata-cache),确保 [metadata_cache] 段落里的 bootstrap_server_addresses 已更新为新集群的 InnoDB Cluster 或 Group Replication 成员地址
  • 老配置里常见的 routing_strategy=round-robin-with-fallback 在 8.0.22+ 已弃用,新版本应改用 first-availablenext-available,否则启动警告并降级为 first-available

迁移时 metadata-cache 和 bootstrap 的联动关系

Router 本身不存集群拓扑,它靠启动时向 MySQL Server(InnoDB Cluster)拉取元数据来构建路由决策。所以迁移配置 ≠ 迁移拓扑信息。如果只搬 mysqlrouter.conf,但没重新运行 mysqlrouter --bootstrap,Router 仍会尝试连老集群的元数据节点,导致 Failed to fetch cluster metadata 错误。

  • 必须在新环境执行完整引导:mysqlrouter --bootstrap user@new-cluster-ip:3306 --conf-use-sockets --Directory /opt/mysqlrouter
  • --bootstrap 会覆盖已有配置,并自动生成含正确 [metadata_cache][routing] 的文件;手动编辑前先备份原始生成结果
  • 若无法直连新集群(比如网络隔离),需先在可连通机器上 --bootstrap,再把生成的 mysqlrouter.confdata/ 目录一起迁移到目标机

ssl 和用户权限容易被忽略的细节

Router 连接后端 MySQL 时,默认走明文,但新集群可能强制 SSL。这时配置里没开 ssl_mode=DISABLED 或没配证书路径,就会卡在连接阶段,日志只显示 Connection refused 或超时,实际是 SSL 握手失败。

  • 检查新集群是否启用 require_secure_transport=ON,若是,Router 配置中对应 [routing] 段必须加 ssl_mode=REQUIRED 并设置 ssl_cassl_certssl_key
  • Bootstrap 用户(如 mysql_router@%)需在新集群中存在,且拥有 select 权限于 performance_schema.replication_group_membersmysql_innodb_cluster_metadata.*(取决于集群类型)
  • Router 日志级别设为 level=DEBUG 才能看到 SSL 握手和元数据获取的详细过程,光看 Error 级别日志找不到根因

迁移本质不是搬文件,而是重建 Router 与新集群之间的信任链和通信契约。每个环节断掉,都可能表现为“配置没变,就是连不上”。最常漏掉的是重新 bootstrap 和校验 SSL 上下文,而不是配置项本身。

text=ZqhQzanResources