MySQL主从复制配置指南
一、为什么需要主从复制?
- 数据冗余:实时热备份避免数据丢失
- 负载均衡:分离读写操作提升性能
- 高可用:快速故障切换保障业务连续性
- 数据分析:不影响主库的情况下进行统计运算
二、配置前准备
- 确保主从服务器MySQL版本兼容
- 主从服务器网络互通
- 同步主库现有数据(建议使用mysqldump)
- 配置服务器时区与字符集一致
三、主库配置步骤
- 修改配置文件
my.cnf:
[mysql]
socket=/tmp/mysql3307.sock
[mysqld]
user=mysql
port=3307
basedir=/usr/local/mysql
datadir=/data/3307/data
socket=/tmp/mysql3307.sock
- 启动MySQL服务:
mysqld_safe --defaults-file=/data/3307/data/my.cnf &
- 主数据库检查二进制日志功能是否开启:
mysql> show variables like '%log_bin%';
+---------------------------------+------------------------------+
| Variable_name | Value |
+---------------------------------+------------------------------+
| log_bin | ON |
| log_bin_basename | /data/3308/data/binlog |
| log_bin_index | /data/3308/data/binlog.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
+---------------------------------+------------------------------+
6 rows in set (0.00 sec)
- 创建复制账户:
create user repl@'10.0.0.%' identified with mysql_native_password by '123456';
grant replication slave on *.* to repl@'10.0.0.%';
FLUSH PRIVILEGES;
5.查看主库状态并记录关键信息:
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS; # 查看使用的二进制文件及位置点信息
保存显示的File(如mysql-bin.000001)和Position(如628)值
6.备份主库,进行从库部分数据信息的同步
mysqldump -uroot -A -S /tmp/mysql3307.sock --master-data=2 --singletransaction >/tmp/full.sql
四、从库配置步骤
- 修改配置文件
my.cnf:
[mysql]
socket=/tmp/mysql3308.sock
[mysqld]
user=mysql
port=3308
basedir=/usr/local/mysql
datadir=/data/3308/data
socket=/tmp/mysql3308.sock
- 启动MySQL服务:
mysqld_safe --defaults-file=/data/3308/data/my.cnf &
- 先将主库上的部分数据同步到从库中
mysql> source /tmp/full.sql;
- 配置复制链路:
CHANGE MASTER TO
MASTER_HOST ='10.0.0.201',
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_PORT=3307,
MASTER_LOG_FILE='binlog.000001',
MASTER_LOG_POS =628,
MASTER_CONNECT_RETRY=10;
- 启动复制进程:
START SLAVE;
- 检查复制状态:
SHOW SLAVE STATUS\G
确认以下参数:
Slave_IO_Running: YesSlave_SQL_Running: YesSeconds_Behind_Master: 0
五、验证主从同步
- 主库执行数据操作:
create database test;
use test;
create table test_table (id int);
insert into test_table values (1);
- 从库查询验证:
show databases; # 查看是否有test库
SELECT * FROM test_table; # 查看是否有test_table表
六、常见问题排查
❌ 连接失败:检查防火墙、网络连通性、权限配置
❌ Position不匹配:重新执行RESET SLAVE后配置
❌ 重复server-id:确保主从服务器ID唯一
❌ 二进制日志损坏:使用mysqlbinlog工具验证
七、注意事项
- 避免在从库执行写操作
- 定期检查复制延迟
- 重要操作前始终备份数据
- 监控
Seconds_Behind_Master指标
希望这篇文章能帮助你!如果需要补充特定细节或调整技术深度,请随时告知。

浙公网安备 33010602011771号