在Ubuntu 16.04上配置MySQL主从同步是一项关键的任务,对于实现高可用性和数据备份至关重要。以下是一个详细的步骤指南:
**准备工作**
1. **主从数据库版本一致**:为了确保兼容性和数据一致性,建议主从数据库使用相同的MySQL版本。在这个例子中,两个数据库都是MySQL 5.7.21。
2. **数据同步**:在开始配置之前,确保主数据库和从数据库的数据一致,以避免同步时出现冲突。
**防火墙配置**
防火墙配置是为了保护数据库免受不必要的访问,只允许特定IP地址进行通信。
**主库防火墙配置**
1. **允许特定IP访问**:使用`iptables`命令添加规则,允许从库的IP(182.254.149.39)和本地回环地址(127.0.0.1)访问3306端口。
2. **删除已有规则**:先删除可能存在的旧规则,防止重复。
3. **阻止其他所有IP**:对3306端口的TCP和UDP流量执行DROP操作,以阻止其他所有IP。
4. **保存配置**:安装`iptables-persistent`以保存这些规则,并使用`netfilter-persistent save`命令保存到配置文件。
**从库防火墙配置**
1. **允许主库IP访问**:同样地,配置从库的防火墙,允许主库的IP(121.199.27.227)访问3306端口。
2. **保存配置**:与主库一样,保存规则到相应的配置文件。
**主数据库配置**
1. **修改配置文件**:编辑`/etc/mysql/mysql.conf.d/mysqld.cnf`,在[mysqld]部分开启二进制日志(`log-bin`)和设置`server-id`(唯一标识符),并放开`bind-address`允许远程连接。
2. **重启MySQL服务**:应用配置更改,重启MySQL服务。
3. **创建同步用户**:创建一个名为`repl`的新用户,并赋予它从任何主机(%)连接到主库并进行复制的权限。例如:
```
CREATE USER 'repl'@'%' IDENTIFIED BY 'slavepass';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
```
**从数据库配置**
1. **获取主库的二进制日志信息**:从主库运行`SHOW MASTER STATUS;`命令,记下文件名和位置。
2. **修改配置文件**:编辑从库的`/etc/mysql/mysql.conf.d/mysqld.cnf`,设置`server-id`(不同于主库的值)。
3. **启动复制**:重启从库的MySQL服务,然后使用以下命令开始复制:
```
CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='repl', MASTER_PASSWORD='slavepass', MASTER_LOG_FILE='记下的文件名', MASTER_LOG_POS='记下的位置';
START SLAVE;
SHOW SLAVE STATUS\G;
```
这将显示复制的状态,确保一切正常。
通过以上步骤,你已经在Ubuntu 16.04上成功配置了MySQL的主从同步。记得定期检查复制状态,确保数据的一致性和完整性。如果遇到问题,如网络中断或数据不一致,可能需要进行故障排查和修复。同时,考虑定期备份,以防止不可预见的损失。