mysql5.5.23主从复制配置方法

发布时间:2021-07-24 14:45:15 作者:chen
来源:亿速云 阅读:222
# MySQL5.5.23主从复制配置方法

## 目录
1. [主从复制原理概述](#主从复制原理概述)
2. [环境准备](#环境准备)
3. [主服务器配置](#主服务器配置)
4. [从服务器配置](#从服务器配置)
5. [初始化数据同步](#初始化数据同步)
6. [启动复制进程](#启动复制进程)
7. [常见问题排查](#常见问题排查)
8. [性能优化建议](#性能优化建议)
9. [主从切换方案](#主从切换方案)
10. [日常维护命令](#日常维护命令)

## 主从复制原理概述

MySQL主从复制(Replication)是指数据可以从一个MySQL数据库服务器(主服务器)复制到一个或多个MySQL数据库服务器(从服务器)。其核心原理基于以下三个线程的协作:

1. **Binlog Dump线程**(主服务器)
   - 负责读取主服务器上的二进制日志(binary log)
   - 将日志事件发送给从服务器的I/O线程

2. **I/O线程**(从服务器)
   - 连接到主服务器并请求二进制日志内容
   - 将获取的日志事件写入从服务器的中继日志(relay log)

3. **SQL线程**(从服务器)
   - 读取中继日志中的事件
   - 在从服务器上重放这些事件

![主从复制原理图](https://example.com/mysql-replication.png)

## 环境准备

### 硬件要求
| 组件       | 最低配置要求       |
|------------|-------------------|
| 主服务器   | 4核CPU, 8GB内存   |
| 从服务器   | 2核CPU, 4GB内存   |
| 网络带宽   | 建议≥100Mbps      |

### 软件版本
- 操作系统:CentOS 7.x
- MySQL版本:5.5.23(需确保主从版本一致)
- 防火墙配置:开放3306端口

```bash
# 检查MySQL版本
mysql> SELECT VERSION();

主服务器配置

1. 修改my.cnf配置文件

[mysqld]
server-id = 1                   # 必须唯一
log-bin = mysql-bin             # 启用二进制日志
binlog-format = ROW             # 推荐使用ROW格式
binlog-do-db = your_database    # 需要复制的数据库
expire_logs_days = 7            # 日志保留天数
sync_binlog = 1                 # 每次事务提交都同步日志

2. 创建复制专用账户

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

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

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

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

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 107      | your_database|                  |
+------------------+----------+--------------+------------------+

从服务器配置

1. 修改my.cnf配置文件

[mysqld]
server-id = 2                   # 必须唯一且不同于主服务器
relay-log = mysql-relay-bin     # 中继日志名称
log-slave-updates = 1           # 允许从服务器写二进制日志
read-only = 1                   # 设置从服务器为只读
replicate-do-db = your_database # 需要复制的数据库

2. 配置主从连接信息

CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='repl',
MASTER_PASSWORD='Repl@123',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=107;

初始化数据同步

方法一:使用mysqldump(推荐小数据库)

# 在主服务器执行
mysqldump -uroot -p --all-databases --master-data > dbdump.sql

# 在从服务器导入
mysql -uroot -p < dbdump.sql

方法二:使用物理备份(大数据库)

# 主服务器停止服务后复制数据文件
systemctl stop mysql
rsync -avz /var/lib/mysql slave_ip:/var/lib/mysql

启动复制进程

1. 在从服务器执行

START SLAVE;

2. 检查复制状态

SHOW SLAVE STATUS\G

关键指标检查: - Slave_IO_Running: Yes - Slave_SQL_Running: Yes - Seconds_Behind_Master: 0

常见问题排查

问题1:IO线程连接失败

错误现象

Last_IO_Error: error connecting to master

解决方案: 1. 检查网络连通性 2. 验证复制账号权限 3. 确认防火墙设置

问题2:SQL线程错误

错误现象

Last_SQL_Error: Could not execute Write_rows event

解决方案

STOP SLAVE;
SET GLOBAL sql_slave_skip_counter = 1;
START SLAVE;

性能优化建议

1. 主服务器优化

innodb_flush_log_at_trx_commit = 1
sync_binlog = 1

2. 从服务器优化

slave_parallel_workers = 4      # 并行复制线程数
slave_net_timeout = 60          # 网络超时时间

3. 监控指标

SHOW GLOBAL STATUS LIKE 'Slave_running';
SHOW PROCESSLIST;

主从切换方案

计划内切换流程

  1. 停止主库写入
  2. 确保从库完全同步
  3. 提升从库为主库
STOP SLAVE;
RESET MASTER;

故障切换流程

  1. 确认主库不可用
  2. 选择最新的从库
  3. 修复数据一致性

日常维护命令

监控命令

-- 查看复制延迟
SHOW SLAVE STATUS\G

-- 查看二进制日志
SHOW BINARY LOGS;

维护命令

-- 重置复制
RESET SLAVE ALL;

-- 跳过错误
SET GLOBAL sql_slave_skip_counter = N;

日志清理

PURGE BINARY LOGS TO 'mysql-bin.000010';

总结

MySQL5.5.23主从复制配置需要特别注意版本兼容性和参数配置。本文详细介绍了从环境准备到日常维护的全流程,建议在生产环境实施前进行充分测试。定期监控复制状态和延迟是保证数据一致性的关键。

注意:本文基于MySQL5.5.23编写,不同版本可能存在配置差异。建议在实施前查阅对应版本的官方文档。 “`

注:实际使用时请将示例IP、密码等敏感信息替换为实际值,图片链接需替换为有效地址。本文约为3000字,要达到4900字需要扩展每个章节的详细说明、增加更多配置示例和原理分析。

推荐阅读:
  1. mongodb中怎么配置主从复制
  2. mongodb主从复制配置

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

mysql

上一篇:Jquery EasyUI tree异步加载的示例分析

下一篇:PHP遍历目录文件的常用方法有哪些

相关阅读

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

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