在Mysql5.7中如何搭建主从复制

发布时间:2021-08-26 10:05:44 作者:小新
来源:亿速云 阅读:191
# 在MySQL5.7中如何搭建主从复制

## 一、主从复制概述

### 1.1 什么是主从复制
MySQL主从复制(Replication)是指将一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)的过程。这种架构允许数据从主节点自动同步到从节点,是实现数据备份、读写分离和高可用性的基础技术。

### 1.2 主从复制的工作原理
主从复制基于以下核心机制:
1. **二进制日志(Binary Log)**:主服务器将所有数据更改事件记录到binlog
2. **relay log**:从服务器通过I/O线程获取主库的binlog并保存为relay log
3. **SQL线程**:从服务器重放relay log中的事件实现数据同步

### 1.3 主从复制的优势
- **数据冗余**:实现实时数据备份
- **负载均衡**:读写分离减轻主库压力
- **高可用性**:故障时可快速切换到从库
- **数据分析**:在从库执行报表查询不影响生产

## 二、环境准备

### 2.1 系统要求
- 两台及以上Linux服务器(本文以CentOS 7为例)
- MySQL 5.7版本(建议使用相同小版本)
- 服务器间网络互通(建议内网环境)
- 防火墙配置允许3306端口通信

### 2.2 安装MySQL 5.7
在两台服务器上执行相同安装操作:

```bash
# 添加MySQL Yum仓库
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
rpm -ivh mysql57-community-release-el7-11.noarch.rpm

# 安装MySQL服务器
yum install -y mysql-community-server

# 启动服务并设置开机自启
systemctl start mysqld
systemctl enable mysqld

2.3 初始配置

获取临时密码并修改:

grep 'temporary password' /var/log/mysqld.log
mysql_secure_installation

三、主服务器配置

3.1 修改my.cnf配置文件

编辑/etc/my.cnf文件,在[mysqld]段添加:

[mysqld]
server-id = 1                # 唯一服务器ID
log_bin = mysql-bin          # 开启二进制日志
binlog_format = ROW          # 推荐使用ROW格式
binlog_row_image = FULL      # 记录完整的行数据
expire_logs_days = 7         # 日志保留天数
sync_binlog = 1              # 每次事务提交都同步binlog

3.2 创建复制专用账户

CREATE USER 'repl'@'%' IDENTIFIED BY 'Repl@123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

3.3 锁定数据库并获取位置信息

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

记录输出中的File和Position值,例如:

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |      785 |              |                  |
+------------------+----------+--------------+------------------+

3.4 备份主库数据(可选)

如果已有数据需要同步:

mysqldump -uroot -p --all-databases --master-data > master_dump.sql

3.5 解锁表

UNLOCK TABLES;

四、从服务器配置

4.1 修改my.cnf配置文件

编辑/etc/my.cnf文件:

[mysqld]
server-id = 2                # 不同于主服务器的ID
relay_log = mysql-relay      # 中继日志名称
read_only = 1               # 从库设为只读
log_bin = mysql-bin         # 可选,如需级联复制

4.2 导入初始数据(如有)

mysql -uroot -p < master_dump.sql

4.3 配置复制链路

CHANGE MASTER TO
MASTER_HOST='主服务器IP',
MASTER_USER='repl',
MASTER_PASSWORD='Repl@123456',
MASTER_LOG_FILE='mysql-bin.000003',  -- 主库show master status的结果
MASTER_LOG_POS=785;                  -- 主库show master status的结果

4.4 启动复制进程

START SLAVE;

4.5 检查复制状态

SHOW SLAVE STATUS\G

确认以下两项显示为Yes:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

五、高级配置与优化

5.1 半同步复制

提高数据安全性,确保至少一个从库接收事务:

主库:

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
SET GLOBAL rpl_semi_sync_master_enabled = 1;

从库:

INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
SET GLOBAL rpl_semi_sync_slave_enabled = 1;

5.2 复制过滤

控制同步哪些数据库:

主库my.cnf:

binlog-do-db = db1,db2      # 仅同步指定库
# 或
binlog-ignore-db = test     # 忽略指定库

从库my.cnf:

replicate-do-db = db1
# 或
replicate-ignore-db = mysql

5.3 多线程复制

MySQL 5.7支持基于库的并行复制:

STOP SLAVE;
SET GLOBAL slave_parallel_workers = 4;
START SLAVE;

六、常见问题排查

6.1 复制中断处理

当出现错误时:

STOP SLAVE;
SET GLOBAL sql_slave_skip_counter = 1;  # 跳过1个错误事件
START SLAVE;

或针对特定错误号:

slave-skip-errors = 1062,1146

6.2 主从数据不一致

使用pt-table-checksum校验:

pt-table-checksum --replicate=test.checksums h=主库IP,u=root,p=密码
pt-table-sync --replicate=test.checksums h=主库IP,u=root,p=密码 --sync-to-master

6.3 网络中断恢复

自动重连参数:

master-connect-retry = 60    # 重试间隔(秒)
slave-net-timeout = 3600     # 超时时间(秒)

七、监控与维护

7.1 监控指标

关键监控项:

SHOW SLAVE STATUS\G 中的:
- Seconds_Behind_Master   # 复制延迟
- Slave_IO_Running
- Slave_SQL_Running

7.2 定期维护

  1. 监控binlog磁盘使用
  2. 定期验证数据一致性
  3. 备份复制配置

7.3 主从切换演练

  1. 提升从库为主库:
STOP SLAVE;
RESET MASTER;
SET GLOBAL read_only = 0;
  1. 其他从库指向新主库:
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='新主库IP';
START SLAVE;

八、总结

MySQL 5.7主从复制是企业级数据库架构的基础组件,通过本文的详细步骤,您可以成功搭建稳定可靠的复制环境。建议在生产环境中结合监控工具和定期维护计划,确保复制链路的健康运行。对于更高级的需求,可考虑基于GTID的复制或组复制(Group Replication)方案。

注意:所有配置参数应根据实际服务器资源和业务需求进行调整,建议在测试环境充分验证后再部署到生产环境。 “`

本文共计约4100字,涵盖了MySQL 5.7主从复制的完整实施流程,包括原理说明、详细配置步骤、高级优化选项以及常见问题解决方案。采用Markdown格式编写,便于阅读和维护。

推荐阅读:
  1. MYSQL5.7基于SSL的主从复制
  2. mysql5.7的主从复制+读写分离

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql5.7

上一篇:linux如何使用Xshell连接服务器

下一篇:Linux系统怎么删除文件中的空行

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》