TypechoJoeTheme

至尊技术网

登录
用户名
密码

如何搭建MySQL主从复制:详细步骤与实战指南

2025-11-24
/
0 评论
/
3 阅读
/
正在检测是否收录...
11/24


在现代Web应用中,数据库的性能和可靠性至关重要。为了提升系统的读取能力并实现数据冗余,MySQL主从复制是一种被广泛采用的技术方案。通过将一个MySQL实例(主库)的数据自动同步到另一个或多个实例(从库),不仅可以实现读写分离,还能为灾难恢复提供保障。本文将手把手带你完成MySQL主从复制的搭建过程,确保每一步清晰明了,适合初学者和中级开发者参考。

首先,我们需要明确主从复制的基本原理。主库负责处理所有的写操作(INSERT、UPDATE、DELETE),并将这些操作记录在二进制日志(binlog)中。从库通过I/O线程连接主库,读取binlog日志并写入本地的中继日志(relay log)。随后,SQL线程会逐条执行中继日志中的语句,从而实现数据的同步。整个过程是异步的,因此对主库的性能影响较小。

在开始搭建之前,请确保两台服务器已经安装好MySQL服务,并且能够互相通信。假设我们有两台服务器:

  • 主库:IP 192.168.1.10,MySQL端口 3306
  • 从库:IP 192.168.1.20,MySQL端口 3306

第一步,配置主库。我们需要编辑主库的MySQL配置文件,通常位于 /etc/mysql/mysql.conf.d/mysqld.cnf/etc/my.cnf。在 [mysqld] 段落下添加以下内容:

ini server-id = 1 log-bin = mysql-bin binlog-format = ROW expire_logs_days = 7

其中,server-id 是主库的唯一标识,必须为正整数且在整个复制集群中唯一;log-bin 开启二进制日志功能;binlog-format 推荐使用ROW模式,能更精确地记录数据变更。修改完成后重启MySQL服务。

接着,登录主库MySQL,创建用于从库连接的复制账号:

sql CREATE USER 'repl'@'192.168.1.20' IDENTIFIED BY 'your_password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.20'; FLUSH PRIVILEGES;

然后查看主库当前的binlog状态,以便从库初始化同步位置:

sql SHOW MASTER STATUS;

记下输出中的 FilePosition 值,后续配置从库时需要用到。

接下来配置从库。同样编辑从库的MySQL配置文件,在 [mysqld] 中添加:

ini server-id = 2 relay-log = mysql-relay-bin log-slave-updates = 1 read-only = 1

server-id 必须与主库不同;relay-log 指定中继日志名称;read-only 确保从库不会被意外写入数据。保存后重启MySQL服务。

登录从库MySQL,执行CHANGE MASTER命令,连接主库并指定同步起点:

sql CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_USER='repl', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;

注意:MASTER_LOG_FILEMASTER_LOG_POS 的值需与前面 SHOW MASTER STATUS 的结果一致。

一切就绪后,启动从库的复制进程:

sql START SLAVE;

然后通过以下命令检查复制状态:

sql SHOW SLAVE STATUS\G

重点关注 Slave_IO_RunningSlave_SQL_Running 是否都为 Yes,以及 Seconds_Behind_Master 是否为0或接近0。如果出现错误,可根据 Last_Error 字段排查问题,常见原因包括网络不通、权限不足或pos位置不匹配。

为了验证复制是否生效,可以在主库创建一个测试数据库和表,并插入几条数据:

sql CREATE DATABASE test_replication; USE test_replication; CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50)); INSERT INTO users VALUES (1, 'Alice'), (2, 'Bob');

稍等片刻后,在从库执行 SELECT * FROM users;,若能查到相同数据,则说明主从复制已成功建立。

在实际运维中,还需定期监控复制延迟、设置告警机制,并考虑使用半同步复制或GTID来增强数据一致性。此外,建议定期对从库进行全量备份,作为主库故障时的恢复手段。

总之,MySQL主从复制是构建高可用数据库系统的基础。只要按照上述步骤严谨操作,绝大多数问题都能避免。掌握这一技术,不仅能提升系统性能,也为后续的分库分表、高可用架构打下坚实基础。

数据备份数据库同步读写分离MySQL主从复制主从架构
朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwws.cn/archives/39247/(转载时请注明本文出处及文章链接)

评论 (0)