博客 MySQL主从切换配置与步骤详解

MySQL主从切换配置与步骤详解

   数栈君   发表于 2026-01-24 15:57  73  0

在现代企业中,数据中台、数字孪生和数字可视化技术的应用越来越广泛,而这些技术的核心离不开高效、稳定的数据库支持。MySQL作为全球最受欢迎的开源数据库之一,凭借其高性能、高可用性和易扩展性,成为许多企业的首选。然而,在实际应用中,MySQL的高可用性保障通常依赖于主从复制(Master-Slave)架构。当主库发生故障时,能够快速实现主从切换,确保业务的连续性,是企业必须掌握的关键技能。

本文将详细介绍MySQL主从切换的配置步骤,并结合实际应用场景,为企业提供实用的指导。


一、MySQL主从切换简介

MySQL主从复制是一种常见的数据库同步技术,通过在主库(Master)和从库(Slave)之间建立复制关系,实现数据的实时同步。主库负责处理写入操作,从库负责处理读取操作,从而提高系统的读写分离能力,降低主库的负载压力。

在某些情况下,例如主库故障或需要进行维护时,企业需要将从库提升为主库,以确保业务的连续性。这就是MySQL主从切换的核心应用场景。


二、MySQL主从切换的配置环境

在进行主从切换配置之前,需要确保以下条件:

  1. 硬件和软件环境

    • 操作系统:Linux(推荐 CentOS 7+ 或 Ubuntu 18.04+)。
    • MySQL版本:MySQL 5.7+ 或 MariaDB 10.3+。
    • 主库和从库之间具备网络连通性。
  2. 主从复制的必要条件

    • 主库需要开启二进制日志(binlog),以便从库能够通过日志文件进行数据同步。
    • 主库和从库的数据库版本必须一致,或从库版本不得高于主库版本。
  3. 权限管理

    • 从库需要拥有复制权限,通常通过创建一个具有REPLICATION SLAVE权限的用户来实现。

三、MySQL主从切换的配置步骤

1. 配置主库(Master)

(1)开启二进制日志

在主库的my.cnf文件中,添加或修改以下配置:

[mysqld]log_bin = /var/log/mysql/mysql-bin.logbinlog_format = ROWSserver_id = 1
  • log_bin:指定二进制日志的存储路径。
  • binlog_format:设置二进制日志的格式,推荐使用ROW格式,因为它支持更多的复制场景。
  • server_id:主库和从库的唯一标识符,必须唯一。

重启MySQL服务以使配置生效:

systemctl restart mysqld

(2)创建复制用户

为从库创建一个用于复制的用户,并授予REPLICATION SLAVE权限:

CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password';GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';FLUSH PRIVILEGES;
  • repl_user:从库连接主库的用户名。
  • password:从库用户的密码。

(3)查看主库状态

执行以下命令,记录主库的二进制日志文件名和位置:

SHOW MASTER STATUS;

输出示例:

+------------------+------------------+| File             | Position         |+------------------+------------------+| mysql-bin.000001 | 100              |+------------------+------------------+

2. 配置从库(Slave)

(1)修改从库配置

在从库的my.cnf文件中,添加或修改以下配置:

[mysqld]server_id = 2relay_log = /var/log/mysql/mysql-relay.log
  • server_id:从库的唯一标识符,必须与主库不同。
  • relay_log:指定中继日志的存储路径。

重启MySQL服务以使配置生效:

systemctl restart mysqld

(2)初始化从库复制

执行以下命令,将从库初始化为从主库复制数据:

CHANGE MASTER TOMASTER_HOST = '主库IP',MASTER_USER = 'repl_user',MASTER_PASSWORD = 'password',MASTER_LOG_FILE = 'mysql-bin.000001',MASTER_LOG_POS = 100;
  • MASTER_HOST:主库的IP地址。
  • MASTER_USERMASTER_PASSWORD:从库连接主库的用户名和密码。
  • MASTER_LOG_FILEMASTER_LOG_POS:从主库获取的二进制日志文件名和位置。

(3)启动从库复制

执行以下命令,启动从库的复制进程:

START SLAVE;

(4)查看从库状态

执行以下命令,检查从库的复制状态:

SHOW SLAVE STATUS\G

输出示例:

Slave_IO_Running: YesSlave_SQL_Running: Yes

如果Slave_IO_RunningSlave_SQL_Running都为Yes,说明从库复制正常。


3. 测试主从同步

(1)在主库执行写入操作

在主库中执行以下命令,插入一条测试数据:

USE test_db;INSERT INTO test_table (id, name) VALUES (1, 'Test Record');

(2)在从库查询数据

在从库中执行以下命令,检查数据是否同步:

USE test_db;SELECT * FROM test_table;

如果数据同步正常,说明主从复制关系已经建立成功。


四、MySQL主从切换的步骤

在实际应用中,当主库发生故障时,需要将从库快速提升为主库,以确保业务的连续性。以下是具体的主从切换步骤:

1. 切换前的准备工作

(1)停止从库的复制进程

在从库中执行以下命令,停止复制进程:

STOP SLAVE;

(2)备份从库数据

为了确保数据一致性,建议在切换前对从库进行备份:

mysqldump -u root -p test_db > /备份路径/test_db_$(date +%Y%m%d%H%M).sql

2. 修改从库配置

(1)修改server_id

在从库的my.cnf文件中,将server_id修改为新的主库标识符(例如1):

[mysqld]server_id = 1

(2)清除中继日志

执行以下命令,清除从库的中继日志:

RESET MASTER;

3. 提升从库为主库

(1)重启MySQL服务

重启从库的MySQL服务,使其以新的主库身份运行:

systemctl restart mysqld

(2)删除旧的复制信息

执行以下命令,删除从库中的旧复制信息:

CHANGE MASTER TOMASTER_HOST = NULL,MASTER_USER = NULL,MASTER_PASSWORD = NULL;

4. 同步数据到新主库

(1)将旧主库的数据同步到新主库

如果旧主库的数据没有完全同步到从库,可以通过以下命令将旧主库的数据同步到新主库:

scp -r /var/lib/mysql/旧主库IP:/var/lib/mysql/

(2)执行数据同步

在新主库中执行以下命令,确保数据一致性:

FLUSH TABLES WITH READ LOCK;

5. 切换应用

将应用程序的连接从旧主库切换到新主库,并确保所有业务操作都已正常运行。


五、注意事项

  1. 数据备份:在进行主从切换之前,务必备份数据,以防止数据丢失。
  2. 网络稳定性:确保主库和从库之间的网络连接稳定,避免因网络问题导致复制中断。
  3. 监控机制:建议部署监控工具,实时监控主从复制的状态,及时发现和解决问题。
  4. 负载均衡:在切换完成后,可以通过负载均衡器将读写请求分发到新主库和从库,进一步提高系统的可用性。

六、FAQ

1. 为什么主从复制会出现延迟?

答:主从复制的延迟通常由网络带宽、主库负载和二进制日志的写入速度等因素引起。可以通过优化主库性能、增加带宽或使用异步复制来减少延迟。

2. 切换主库后,如何处理旧主库?

答:旧主库可以作为新的从库,继续参与复制,或者用于其他用途,例如数据归档或测试环境。

3. 如何避免主从切换时的数据不一致?

答:可以通过以下措施减少数据不一致的风险:

  • 确保主从复制的延迟在可接受范围内。
  • 在切换前进行数据同步。
  • 使用半同步复制模式。

七、申请试用

如果您对MySQL主从切换的配置和优化还有疑问,或者需要更专业的技术支持,欢迎申请试用我们的解决方案:申请试用。我们的团队将竭诚为您服务,帮助您实现高效、稳定的数据库管理。

通过本文的详细指导,相信您已经掌握了MySQL主从切换的核心配置和操作步骤。希望这些内容能够为您的数据中台、数字孪生和数字可视化项目提供有力支持!

申请试用&下载资料
点击袋鼠云官网申请免费试用:https://www.dtstack.com/?src=bbs
点击袋鼠云资料中心免费下载干货资料:https://www.dtstack.com/resources/?src=bbs
《数据资产管理白皮书》下载地址:https://www.dtstack.com/resources/1073/?src=bbs
《行业指标体系白皮书》下载地址:https://www.dtstack.com/resources/1057/?src=bbs
《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001/?src=bbs
《数栈V6.0产品白皮书》下载地址:https://www.dtstack.com/resources/1004/?src=bbs

免责声明
本文内容通过AI工具匹配关键字智能整合而成,仅供参考,袋鼠云不对内容的真实、准确或完整作任何形式的承诺。如有其他问题,您可以通过联系400-002-1024进行反馈,袋鼠云收到您的反馈后将及时答复和处理。
0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料