Mysql主从复制,ip地址变化后的处理
在 Ubuntu 14.04 + MySQL 5.5 的环境下,如果两台虚拟服务器的 IP 地址发生变化,主从复制可能会失效,因为 MySQL 复制配置通常依赖于 IP 地址或主机名。因此,需要手动调整配置并重新建立主从复制。以下是详细步骤:
1. 确认新的 IP 地址
在两台服务器上执行以下命令,获取新的 IP 地址:
ip a
假设:
主服务器 (Master) 新 IP:192.168.1.100
从服务器 (Slave) 新 IP:192.168.1.101
2. 修改 MySQL 主从配置
(1)修改 Master 配置
编辑 MySQL 配置文件:
sudo vi /etc/mysql/my.cnf
检查或添加以下内容:
[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-do-db = your_database # 需要复制的数据库
bind-address = 192.168.1.100 # 修改为新 IP
然后重启 MySQL:
sudo service mysql restart
在 MySQL 主服务器上,重新授权从服务器访问:
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'192.168.1.101' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
(2)修改 Slave 配置
编辑从服务器的 MySQL 配置:
sudo vi /etc/mysql/my.cnf
修改以下内容:
[mysqld]
server-id = 2
relay-log = mysql-relay-bin
replicate-do-db = your_database # 需要复制的数据库
bind-address = 192.168.1.101 # 修改为新 IP
然后重启 MySQL:
sudo service mysql restart
3. 重新配置 Slave
登录从服务器的 MySQL:
mysql -u root -p
停止复制:
STOP SLAVE;
重设主服务器信息:
CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='replica_user',
MASTER_PASSWORD='your_password',
MASTER_LOG_FILE='mysql-bin.000001', -- 请使用 SHOW MASTER STATUS 查看的最新 binlog 文件
MASTER_LOG_POS=107; -- 请使用 SHOW MASTER STATUS 查看的最新 Position
启动复制:
START SLAVE;
4. 检查主从同步状态
在从服务器上执行:
SHOW SLAVE STATUS\G
关键检查项:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0(或接近 0)
如果 Slave_IO_Running 或 Slave_SQL_Running 不是 Yes,可以查看 Last_Error 进行排查。
5. 设置主机名绑定(可选,防止 IP 变更问题)
如果 IP 可能再次变动,建议使用主机名代替 IP 地址:
在 /etc/hosts 文件中添加:
192.168.1.100 mysql-master
192.168.1.101 mysql-slave
在 MySQL 的 CHANGE MASTER TO 语句中使用 mysql-master 代替 IP。
总结
确认新的 IP 地址,并修改 MySQL 配置文件。
重新授权从服务器的访问权限。
在 Slave 端重新配置 CHANGE MASTER TO。
启动 Slave 并检查同步状态。
(可选)使用主机名绑定,避免 IP 变更影响。
这样,你的 MySQL 5.5 主从复制应该可以恢复正常运行。