本文将详细介绍MySQL主从复制的配置过程,包括主库配置、从库配置、主从同步状态监控等内容,帮助你轻松实现数据库的读写分离。
一、主从复制简介
MySQL主从复制是一个异步的复制过程,通过它可以让一台MySQL服务器(从库)的数据与另一台MySQL服务器(主库)的数据保持同步。
1.1 主从复制的优势
- 实现读写分离,提升系统性能
- 数据备份,提高数据安全性
- 高可用性,故障快速切换
- 便于数据分析和报表生成
二、环境准备
2.1 服务器规划
- 主库:192.168.1.100
- 从库:192.168.1.101
2.2 MySQL版本
- MySQL 8.0及以上版本
三、主库配置
3.1 修改主库配置文件
# 编辑my.cnf文件
vim /etc/my.cnf# 添加以下配置
[mysqld]
# 服务器唯一ID
server-id=1
# 开启二进制日志
log-bin=mysql-bin
# 需要同步的数据库
binlog-do-db=your_database
# 不需要同步的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
3.2 创建复制用户
-- 创建用户并授权
CREATE USER 'repl'@'192.168.1.%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.%';
FLUSH PRIVILEGES;-- 查看主库状态
SHOW MASTER STATUS;
四、从库配置
4.1 修改从库配置文件
# 编辑my.cnf文件
vim /etc/my.cnf# 添加以下配置
[mysqld]
# 服务器唯一ID,与主库不同
server-id=2
# 开启中继日志
relay-log=mysql-relay
4.2 配置主从关系
STOP SLAVE;CHANGE MASTER TOMASTER_HOST='192.168.1.100',MASTER_USER='repl',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000001', -- 使用SHOW MASTER STATUS查看到的值MASTER_LOG_POS=123; -- 使用SHOW MASTER STATUS查看到的值START SLAVE;
五、验证主从同步
5.1 查看从库状态
SHOW SLAVE STATUS\G-- 检查以下两项是否都为Yes
-- Slave_IO_Running: Yes
-- Slave_SQL_Running: Yes
5.2 测试主从同步
-- 在主库执行
CREATE DATABASE test;
CREATE TABLE test.users (id INT PRIMARY KEY,name VARCHAR(50)
);
INSERT INTO test.users VALUES (1, 'test');-- 在从库查看
SELECT * FROM test.users;
六、常见问题处理
6.1 同步失败处理
-- 查看详细错误信息
SHOW SLAVE STATUS\G-- 常见解决方案
-- 1. 跳过错误
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE;-- 2. 重置从库
STOP SLAVE;
RESET SLAVE;
START SLAVE;
6.2 数据不一致处理
- 使用pt-table-checksum工具检查数据一致性
- 使用pt-table-sync工具修复不一致数据
七、性能优化建议
- 合理设置binlog格式
SET GLOBAL binlog_format = 'ROW';
- 配置从库并行复制
slave_parallel_workers = 4
slave_parallel_type = LOGICAL_CLOCK
- 设置半同步复制提高数据安全性
-- 主库安装插件
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;
八、监控和维护
8.1 关键监控指标
- 主从延迟时间
SHOW SLAVE STATUS\G
-- 查看 Seconds_Behind_Master 值
- 复制线程状态
- 主从数据一致性
8.2 定期维护任务
- 检查主从状态
- 验证数据一致性
- 清理旧的二进制日志
PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL 7 DAY);
九、总结
通过本文的配置步骤,你应该已经成功搭建了MySQL主从复制环境。记住以下要点:
- 主从配置前要做好规划
- 定期检查主从状态
- 做好监控和维护工作
- 重要操作前要先备份数据
如果你在配置过程中遇到问题,欢迎在评论区讨论!