当前位置: 首页 > news >正文

MySQL 主从同步完整配置示例

以下是 MySQL 主从同步完整配置示例(基于 Linux 系统),包含主库和从库的配置步骤:


一、主库(Master)配置

1. 安装 MySQL(以 CentOS 为例)
yum install -y mysql-server
systemctl start mysqld
systemctl enable mysqld
2. 修改主库配置文件 /etc/my.cnf
[mysqld]
# 唯一 Server ID(主从需不同)
server-id=1
# 启用二进制日志(必须)
log-bin=mysql-bin
# 指定日志存储位置(可选)
binlog-dir=/var/lib/mysql
3. 重启 MySQL
systemctl restart mysqld
4. 创建复制用户并授权
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
FLUSH PRIVILEGES;
5. 查看主库状态(记录 File 和 Position)
SHOW MASTER STATUS;

输出示例:

File: mysql-bin.000001
Position: 120

二、从库(Slave)配置

1. 安装 MySQL
yum install -y mysql-server
systemctl start mysqld
systemctl enable mysqld
2. 修改从库配置文件 /etc/my.cnf
[mysqld]
# 唯一 Server ID(与主库不同)
server-id=2
# 禁用二进制日志(可选)
skip-log-bin
# 设置为只读(推荐)
read-only=1
3. 重启 MySQL
systemctl restart mysqld
4. 导入主库数据(初次同步)

方法 1:通过物理拷贝数据(推荐快速初始化)

# 停止从库 MySQL
systemctl stop mysqld# 删除原有数据目录(谨慎操作!)
rm -rf /var/lib/mysql/*# 从主库复制数据(需主库执行 FLUSH TABLES WITH READ LOCK)
scp -r user@master:/var/lib/mysql /var/lib/# 解锁主库
mysql -u root -p
UNLOCK TABLES;# 启动从库 MySQL
systemctl start mysqld

方法 2:通过 SQL 导出导入

# 在主库执行
mysqldump -u root -p --all-databases --triggers --events > all_db.sql
scp all_db.sql user@slave:/root/# 在从库执行
mysql -u root -p < /root/all_db.sql

三、配置从库复制

1. 连接主库并配置复制
CHANGE MASTER TOMASTER_HOST='主库IP',MASTER_USER='replica_user',MASTER_PASSWORD='your_password',MASTER_LOG_FILE='mysql-bin.000001',       -- 主库 SHOW MASTER STATUS 的 FileMASTER_LOG_POS=120;                        -- 主库 SHOW MASTER STATUS 的 Position
2. 启动从库复制进程
START SLAVE;
3. 检查从库状态
SHOW SLAVE STATUS\G

关键字段应满足:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0

四、测试验证

  1. 在主库创建测试表

    CREATE DATABASE test;
    USE test;
    CREATE TABLE t1 (id INT PRIMARY KEY, name VARCHAR(10));
    INSERT INTO t1 VALUES (1, 'master');
    
  2. 在从库查看同步结果

    USE test;
    SELECT * FROM t1;  # 应显示主库插入的数据
    

五、常见问题排查

  1. 主从网络不通:检查防火墙(firewall-cmdiptables)是否开放 3306 端口。
  2. 权限错误:确保从库使用 REPLICATION SLAVE 权限的用户连接主库。
  3. 数据不一致:重新导入数据或检查 master-logrelay-log

附:SELinux 配置(如启用)

# 临时关闭 SELinux(仅测试环境)
setenforce 0# 永久关闭(修改 /etc/selinux/config)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

通过以上步骤,您可以完成完整的 MySQL 主从同步配置。

相关文章:

  • 虚拟与现实交融视角下定制开发开源AI智能名片S2B2C商城小程序赋能新零售商业形态研究
  • 华为OD机考-网上商城优惠活动-模拟(JAVA 2025B卷)
  • 华为公布《鸿蒙编程语言白皮书》V1.0 版:解读适用场景
  • Ragflow 源码:task_executor.py
  • 数据库(1)-SQL
  • 超详细YOLOv8/11图像菜品分类全程概述:环境、数据准备、训练、验证/预测、onnx部署(c++/python)详解
  • 46- 赎金信
  • VB.NET,C#在线程中修改UI的安全操作
  • Oracle 数据库查询:单表查询
  • Portable Watch:基于STM32的便携智能手表
  • (三十四)深度解析领域特定语言(DSL)第六章——语法分析:第三个案例——优惠规则语法分析器
  • (线性代数最小二乘问题)Normal Equation(正规方程)
  • 跨个体预训练与轻量化Transformer在手势识别中的应用:Bioformer
  • springboot通过独立事务管理器实现资源隔离与精准控制​
  • 2025最新Python 100个常用函数在线体验项目
  • CSP-S 模拟赛一总结(T1、T2)
  • 秋招Day14 - MySQL - SQL优化
  • Java面试复习指南:JVM原理、并发编程与Spring框架
  • JAVA锁机制:对象锁与类锁
  • Windows/Linux系统 Ollama部署deepseek 大模型
  • 商务网站建设多少钱/seo搜索
  • 网站上关键词的推广怎么做/网络服务主要包括什么
  • 网站维护需要多少钱/品牌营销策划方案怎么做
  • 网站建设测试验收报告/西安seo网站建设
  • 像wordpress一样的网站吗/如何做网络营销
  • 重庆网站建设价格/百度账户托管运营