MySQL双机热备怎么弄,实际操作步骤和配置细节分享
- 问答
- 2026-01-10 23:44:03
- 2
双机热备通常指的是主从复制(Master-Slave Replication),即一台MySQL服务器(主库)处理所有写操作,另一台或多台服务器(从库)同步主库的数据,处理读操作,主库出问题时,可以手动切换到从库继续服务,下面以两台全新的CentOS 7服务器为例,假设IP分别为192.168.1.100(主库)和192.168.1.101(从库)。
第一步:准备工作
- 安装MySQL:确保两台服务器上都安装了相同版本的MySQL(比如MySQL 5.7或8.0),可以使用yum安装,参考来源[1]中提到了具体的yum安装命令,但这里我们更关注配置。
- 网络互通:确保两台服务器之间网络通畅,可以使用ping命令测试。
- 防火墙设置:开放MySQL的默认端口3306,在CentOS 7上,可以使用以下命令:
firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --reload
- 创建复制账号:在主库上,我们需要创建一个专门用于数据复制的用户账号,从库会用这个账号来连接主库并拉取数据。
第二步:配置主库(192.168.1.100)
- 编辑MySQL配置文件:打开主库的MySQL配置文件,通常是
/etc/my.cnf或/etc/mysql/my.cnf。 - 修改配置:在
[mysqld]部分添加或修改以下几行关键配置,参考来源[2]和[3]都详细解释了这些参数的作用:[mysqld] server-id = 1 # 必须唯一,主库设为1,从库不能是1 log-bin = mysql-bin # 开启二进制日志,这是数据复制的基础 binlog-format = ROW # 推荐使用ROW格式,复制更安全 binlog-do-db = your_database_name # 可选,指定要复制的数据库,不配置则复制所有库
server-id是服务器的唯一标识,必须不同。log-bin开启后,MySQL会把所有引起数据变化的操作(如INSERT, UPDATE, DELETE)记录到二进制日志文件中。binlog-do-db可以指定只复制某个数据库,如果需要复制多个,可以写多行,如果所有库都需要复制,可以不设置此项。
- 重启MySQL服务:让配置生效。
systemctl restart mysqld
- 创建复制用户并授权:登录主库的MySQL命令行。
mysql -u root -p
执行以下SQL语句,创建一个用户(例如
repl),并授予复制权限,参考来源[1]和[3]都提到了这一步:CREATE USER 'repl'@'192.168.1.101' IDENTIFIED BY 'YourStrongPassword123!'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.101'; FLUSH PRIVILEGES;
这里
'repl'@'192.168.1.101'表示只允许从IP为192.168.1.101的服务器用repl用户连接,为了安全,密码要设得复杂一些。 - 查看主库状态:这是非常关键的一步,记录下结果中的
File和Position值,配置从库时会用到。SHOW MASTER STATUS;
输出会类似:

+------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 154 | | | | +------------------+----------+--------------+------------------+-------------------+
第三步:配置从库(192.168.1.101)
- 编辑MySQL配置文件:同样打开从库的MySQL配置文件。
- 修改配置:
[mysqld] server-id = 2 # 必须唯一,不能和主库相同 relay-log = mysql-relay-bin # 中继日志的文件名 read-only = 1 # 设置从库为只读,防止误操作写入从库导致数据不一致
- 重启MySQL服务:
systemctl restart mysqld
- 配置主库连接信息:登录从库的MySQL命令行,执行以下命令,将步骤二中记录的信息填进去,参考来源[1]和[2]的步骤非常相似:
CHANGE MASTER TO MASTER_HOST='192.168.1.100', -- 主库的IP地址 MASTER_USER='repl', -- 主库上创建的复制账号 MASTER_PASSWORD='YourStrongPassword123!', -- 复制账号的密码 MASTER_LOG_FILE='mysql-bin.000001', -- 主库状态中的File值 MASTER_LOG_POS=154; -- 主库状态中的Position值
- 启动复制:
START SLAVE;
- 检查从库复制状态:这是检查配置是否成功的关键命令。
SHOW SLAVE STATUS\G
使用
\G是为了让结果以更易读的垂直格式显示,重点关注以下两个字段:Slave_IO_Running: 是否正在从主库读取二进制日志,必须是Yes。Slave_SQL_Running: 是否正在执行读取到的SQL语句,必须是Yes。 如果这两个值都是Yes,恭喜你,主从复制已经搭建成功,如果出现No或Connecting,需要根据后面的Last_IO_Error或Last_SQL_Error字段提示来排查错误。
第四步:测试验证

在主库上创建一个新的数据库、表,或者插入一些数据,然后在从库上查询,看数据是否已经同步过来,这是最直接的验证方法。
关于故障切换
需要注意的是,上述配置是单向复制,只能从主库同步到从库,当主库宕机时,需要手动进行故障切换:
- 在从库上执行
STOP SLAVE;停止复制。 - 将应用的数据库连接地址修改为从库的IP(192.168.1.101)。
- 如果原主库修复后,需要重新配置主从关系,可能需要将新主库(原从库)的数据同步回原主库,并重新设置主从。
要实现自动故障切换,需要更复杂的工具,如MHA(Master High Availability)或Orchestrator,或者使用MySQL Group Replication、InnoDB Cluster等更高级的方案,但那些配置起来就复杂得多了,以上步骤是构建MySQL高可用架构最基础也是最核心的部分。
引用来源说明:
[1] 主要参考了CSDN博客上关于MySQL主从同步的典型配置步骤,包括安装、创建用户、CHANGE MASTER命令等。
[2] 参考了博客园中一篇详细解释my.cnf配置参数和SHOW SLAVE STATUS结果分析的文章。
[3] 综合了开源中国等社区中关于主从复制原理和实战操作的讨论,强调了二进制日志和server-id的重要性。
本文由革姣丽于2026-01-10发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/78354.html