我正在向复制的 MySQL 设置添加新的从属服务器。我建议执行以下流程:
- 将其中一个节点克隆到新虚拟机
- 无需网络即可启动
- 停止mysql
- 将 my.cnf 中的 server-id 更改为新的 id
- 重启 mysql 和网络
这应该可以正常工作吗?还是 MySQL 会因为之前使用的服务器 ID 不同而感到困惑?
操作系统:Ubuntu 10.10
虚拟机平台:VMWare 5
MySQL:服务器版本:5.1.49-1ubuntu8.1-log(Ubuntu)
答案1
我不熟悉 VMWare,但我熟悉跨任意逻辑卷执行此过程。首先,您必须以某种方式克隆 VM,以便您的 VM 快照以一致状态复制服务器(如 LV Snap)。您还需要能够在开始复制时获取从属服务器的当前复制坐标。因此,需要以下机制:
- 使用读锁刷新表;
- 显示从服务器状态 a. 从此输出中检索 Exec_Master_Log_Pos 和 Relay_Master_Log_File,这些是您在新的从服务器上设置复制时要使用的坐标
- -- 开始创建快照
- 解锁桌子;
完成此操作并从映像构建新服务器后,您将需要在从属服务器上执行 CHANGE master 语句来更新这些 binlog 坐标:
将 MASTER 更改为 MASTER_LOG_FILE="${来自 2a 的 Relay_Master_Log_File}", MASTER_LOG_POS=${来自 2a 的 Exec_Master_Log_Pos};
例如,此方法适用于 LV 快照。某些工具(例如 hollandbackup)支持这种风格的 LVM 复制:http://wiki.hollandbackup.org/mysqllvm