MySQL双主配置详解:Linux环境下的同步设置

需积分: 12 3 下载量 71 浏览量 更新于2024-09-07 收藏 15KB DOCX 举报
"MySQL双主配置教程" MySQL双主配置是一种高可用性和负载均衡的解决方案,它允许两台MySQL服务器互为主从,数据双向同步。在本配置中,两台服务器A(192.168.2.1)和B(192.168.2.2)都将既是主服务器也是从服务器,任何一台服务器上的数据更改都会被复制到另一台服务器,从而确保数据的一致性。 ### 1. 前置条件与环境准备 - **操作系统**: Linux,例如Ubuntu、CentOS等支持MySQL服务的操作系统。 - **MySQL版本**: 在这个示例中使用的是`mysql-5.7.10`,但其他版本也可适用,只需注意不同版本间的配置差异。 - **网络连接**: 两台服务器必须能够相互通信。如果不在同一网段,需要通过路由器进行联通,并确保路由可达。 - **防火墙设置**: 两台服务器的Windows防火墙(如果有)应关闭或配置好相应的端口放行规则,通常MySQL使用3306端口。 ### 2. 创建同步用户 为了实现数据同步,需要在每台服务器上创建一个可以相互访问的用户。在这个例子中,我们创建了一个名为`tongbu`的用户,分配了全库权限,并设置了密码`111111`。同时,为了本地管理,也给`root`用户分配了密码。在A服务器上,为B服务器创建用户;在B服务器上,为A服务器创建用户。 ```sql # 在A服务器上为B服务器创建用户 mysql> flush privileges; mysql> GRANT ALL PRIVILEGES ON *.* TO 'tongbu'@'192.168.2.2' IDENTIFIED BY '111111'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '111111'; mysql> flush privileges; # 在B服务器上为A服务器创建用户 mysql> flush privileges; mysql> GRANT ALL PRIVILEGES ON *.* TO 'tongbu'@'192.168.2.1' IDENTIFIED BY '111111'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '111111'; mysql> flush privileges; ``` ### 3. 主服务器数据库备份 在开始配置之前,建议对当前的数据进行备份,以防配置过程中发生错误导致数据丢失。 ### 4. 修改配置文件 接下来,我们需要编辑MySQL的配置文件(通常是`my.cnf`或`my.ini`),在两台服务器上添加以下参数: - `log-bin`: 开启二进制日志,这是复制的基础。 - `server-id`: 为每台服务器设置唯一的ID,区分主从。 - `expire-logs-days`: 设置二进制日志的保留天数,防止日志文件过多。 - `replicate-do-db` / `binlog-ignore-db`: 指定需要或忽略复制的数据库。 - `auto-increment-increment` 和 `auto-increment-offset`: 配置自动增长ID的步长和起始值,防止主从服务器生成相同的ID。 对于A服务器(192.168.2.1)的配置: ```ini [mysqld] log-bin=mysql-bin server-id=1 expire-logs-days=100 replicate-do-db=test binlog-ignore-db=mysql binlog-ignore-db=information_schema auto-increment-increment=2 auto-increment-offset=1 ``` 对于B服务器(192.168.2.2)的配置: ```ini [mysqld] log-bin=mysql-bin server-id=2 expire-logs-days=100 ``` ### 5. 启动复制 - **在A服务器上**:设置B服务器为它的从服务器。 ```sql mysql> CHANGE MASTER TO MASTER_HOST='192.168.2.2', MASTER_USER='tongbu', MASTER_PASSWORD='111111', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=4; mysql> START SLAVE; ``` - **在B服务器上**:设置A服务器为它的从服务器,步骤类似。 ### 6. 验证复制 确认主从同步是否正常工作,可以查询每个服务器的状态。 ```sql mysql> SHOW SLAVE STATUS\G ``` 检查`Slave_IO_Running`和`Slave_SQL_Running`都为`Yes`,表明复制正在运行。 ### 7. 日常维护 在日常运维中,监控复制状态、定期检查错误日志以及调整复制配置以适应业务变化是必要的。 ### 注意事项 - 数据库同步可能会引入延迟,特别是在大量写操作的场景下。 - 配置过程中务必小心,错误的配置可能导致数据丢失或不一致。 - 对于生产环境,强烈建议使用更安全的密码策略,并避免明文存储。 - 考虑到性能和安全性,可能需要进一步优化配置,如使用专用的复制用户,限制其权限,以及调整复制延迟策略。 MySQL双主配置完成后,两台服务器将能够相互复制数据,提高系统的可靠性和容错性。然而,这种配置也需要对MySQL有深入理解,以确保在故障切换或恢复时能正确处理。