MySQL主从复制配置指南

一、为什么需要主从复制?

  • 数据冗余:实时热备份避免数据丢失
  • 负载均衡:分离读写操作提升性能
  • 高可用:快速故障切换保障业务连续性
  • 数据分析:不影响主库的情况下进行统计运算

二、配置前准备

  1. 确保主从服务器MySQL版本兼容
  2. 主从服务器网络互通
  3. 同步主库现有数据(建议使用mysqldump)
  4. 配置服务器时区与字符集一致

三、主库配置步骤

  1. 修改配置文件my.cnf
[mysql]
socket=/tmp/mysql3307.sock

[mysqld]
user=mysql
port=3307
basedir=/usr/local/mysql
datadir=/data/3307/data
socket=/tmp/mysql3307.sock
  1. 启动MySQL服务:
mysqld_safe --defaults-file=/data/3307/data/my.cnf &
  1. 主数据库检查二进制日志功能是否开启:
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)
   
  1. 创建复制账户:
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

四、从库配置步骤

  1. 修改配置文件my.cnf
[mysql]
socket=/tmp/mysql3308.sock

[mysqld]
user=mysql
port=3308
basedir=/usr/local/mysql
datadir=/data/3308/data
socket=/tmp/mysql3308.sock
  1. 启动MySQL服务:
mysqld_safe --defaults-file=/data/3308/data/my.cnf &
  1. 先将主库上的部分数据同步到从库中
mysql> source /tmp/full.sql;
  1. 配置复制链路:
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;
  1. 启动复制进程:
START SLAVE;
  1. 检查复制状态:
SHOW SLAVE STATUS\G

确认以下参数:

  • Slave_IO_Running: Yes
  • Slave_SQL_Running: Yes
  • Seconds_Behind_Master: 0

五、验证主从同步

  1. 主库执行数据操作:
create database test;
use test;
create  table test_table (id int);
insert into test_table values (1);
  1. 从库查询验证:
show databases;         # 查看是否有test库
SELECT * FROM test_table;           # 查看是否有test_table表

六、常见问题排查

连接失败:检查防火墙、网络连通性、权限配置
Position不匹配:重新执行RESET SLAVE后配置
重复server-id:确保主从服务器ID唯一
二进制日志损坏:使用mysqlbinlog工具验证

七、注意事项

  1. 避免在从库执行写操作
  2. 定期检查复制延迟
  3. 重要操作前始终备份数据
  4. 监控Seconds_Behind_Master指标

希望这篇文章能帮助你!如果需要补充特定细节或调整技术深度,请随时告知。

posted @ 2025-05-23 23:19  不断精进,终生成长  阅读(90)  评论(0)    收藏  举报