MySQL基于位点的主从复制完整部署指南

 更新时间:2026年02月27日 08:44:54   作者:·云扬·  
本文详细介绍了MySQL主从复制的部署流程,包括前置准备、主从协同操作、复制状态验证和功能测试,并提供了关键步骤和注意事项,需要的朋友可以参考下

在数据库运维中,主从复制是保障数据高可用、实现读写分离的核心方案。基于位点的复制作为 MySQL 最经典的主从部署方式,具备配置灵活、兼容性强的特点。本文将从前置准备到验证测试,一步步拆解完整部署流程,帮助运维人员快速落地。

一、前置准备(必做!)

主从复制的成功依赖基础环境配置,需重点完成以下三项工作:

1. 确认主库 Binlog 已开启

Binlog 是主从数据同步的核心日志,主库需通过它记录所有数据变更操作。

  • 查看当前状态:登录主库执行
show global variables like "log_bin";

ValueON则已开启,OFF需手动配置。

  • 配置文件持久化(避免重启失效):
vim /data/mysql/conf/my.cnf

添加 / 确认配置:

log-bin=/data/mysql/binlog/mysql-bin  # 指定Binlog存储路径

配置后重启 MySQL 生效。

2. 配置主从库唯一 server_id

server_id是 MySQL 实例的唯一标识,同一主从架构中必须不同(取值范围 1-2³²-1)。

  • 推荐方案:使用 IP 后两段作为server_id(如 192.168.184.151→184151)
  • 主库配置:
set global server_id=184151;  # 动态生效(无需重启)

编辑配置文件持久化:

vim /data/mysql/conf/my.cnf

server-id=184151
  • 从库配置:
set global server_id=184152;  # 需与主库不同

配置文件添加:

server-id=184152

3. 关闭 GTID 模式

本文基于传统位点复制,需关闭 GTID(全局事务标识)避免冲突。

  • 编辑主从库配置文件:
vim /data/mysql/conf/my.cnf

添加配置:

gtid_mode=off

# enforce_gtid_consistency=on  # 注释或删除该行
  • 重启 MySQL 服务:
/etc/init.d/mysql.server restart

二、部署步骤(主从协同操作)

1. 主库:创建复制专用用户

从库需通过专用用户连接主库读取 Binlog,建议限制访问 IP(生产环境)。

# 创建用户(%表示允许所有IP,替换为从库IP更安全)

CREATE USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'Uid_dQc63';

# 授予复制权限

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

2. 主库:导出全量数据并记录位点

通过mysqldump导出数据,同时记录备份时的 Binlog 位点(从库同步起点)。

  • 执行全量备份:
# 提前创建备份目录

mkdir -p /data/backup && cd /data/backup

# 导出所有数据库(--databases 可指定单个库)

mysqldump -uroot -p --single-transaction --all-databases --master_data=2 --set-gtid-purged=OFF > alldb_bak.sql

关键参数说明:

  • --single-transaction:事务级备份,不阻塞主库写操作
  • --master_data=2:以注释形式记录 Binlog 位点
  • --set-gtid-purged=OFF:适配传统位点复制
  • 提取位点信息:
head -n 30 alldb_bak.sql

记录输出中的位点信息(示例):

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000027', MASTER_LOG_POS=717;

3. 从库:导入主库全量数据

确保主从数据初始一致,避免同步冲突。

  • 传输备份文件(主库执行):
scp /data/backup/alldb_bak.sql 192.168.184.152:/data/backup
  • 从库导入数据:
cd /data/backup

mysql -uroot -p < alldb_bak.sql

4. 从库:配置主从复制关系

指定主库地址、复制用户及同步位点。

CHANGE MASTER TO

MASTER_HOST='192.168.184.151',  # 主库IP

MASTER_USER='repl',            # 复制用户

MASTER_PASSWORD='Uid_dQc63',   # 用户密码

MASTER_LOG_FILE='mysql-bin.000027',  # 主库Binlog文件名(从备份提取)

MASTER_LOG_POS=717;            # 主库Binlog位点(从备份提取)

# 启动复制进程

start slave;

三、复制状态验证

配置完成后,需确认复制进程正常运行:

SHOW SLAVE STATUS\G

核心关注三个关键字段:

  1. Slave_IO_Running:需为Yes(IO 线程正常读取主库 Binlog)
  2. Slave_SQL_Running:需为Yes(SQL 线程正常执行中继日志)
  3. Seconds_Behind_Master:需为0(数据实时同步,无延迟)

四、功能测试(验证同步效果)

1. 主库执行写操作

use maria;  # 切换到目标数据库(需提前存在)

create table repl_test(id int);  # 创建测试表

insert into repl_test select 1;  # 插入测试数据

2. 从库验证同步结果

use maria;

select * from repl_test;

若查询到id=1,说明主从数据同步正常。

五、注意事项

  1. 生产环境中,复制用户应限制为从库 IP(替换%为具体 IP)
  2. Binlog 文件需定期清理,避免磁盘空间溢出
  3. Slave_SQL_RunningNo,需检查从库数据与主库一致性
  4. 同步延迟需监控,可通过Seconds_Behind_Master指标告警
  5. 配置文件修改后必须重启 MySQL,动态修改仅临时生效

以上就是MySQL基于位点的主从复制完整部署指南的详细内容,更多关于MySQL基于位点主从复制的资料请关注脚本之家其它相关文章!

相关文章

  • MySQL自定义排序方法的使用小结

    MySQL自定义排序方法的使用小结

    本文介绍了MySQL中进行自定义排序的两种方法,包含使用CASE语句和FIELD函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-12-12
  • MySQL数据库如何给表设置约束详解

    MySQL数据库如何给表设置约束详解

    约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除,本篇文章教你如何给表设置约束
    2022-03-03
  • Mysql中SQL语句不使用索引的情况

    Mysql中SQL语句不使用索引的情况

    今天小编就为大家分享一篇关于Mysql中SQL语句不使用索引的情况,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • SQLyog错误号码2058最新解决办法

    SQLyog错误号码2058最新解决办法

    这篇文章主要给大家介绍了关于SQLyog错误号码2058的最新解决办法,使用sqlyog连接数据库过程中可能会出现2058错误,出现的原因是因为MYSQL8.0对密码的加密方式进行了改变,需要的朋友可以参考下
    2023-08-08
  • MYSQL中binlog优化的一些思考汇总

    MYSQL中binlog优化的一些思考汇总

    这篇文章主要给大家介绍了关于MYSQL中binlog优化的一些思考,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-06-06
  • 设置MySQL中的数据类型来优化运行速度的实例

    设置MySQL中的数据类型来优化运行速度的实例

    这篇文章主要介绍了设置MySQL中索引的数据类型来优化运行速度的实例,主要是适当使用短字节的数据类型来处理短索引,需要的朋友可以参考下
    2015-05-05
  • mysql数据库中各种锁归纳总结

    mysql数据库中各种锁归纳总结

    相对于其他的数据库而言,MySQL的锁机制比较简单,最显著的特点就是不同的存储引擎支持不同的锁机制,这篇文章主要给大家介绍了关于mysql数据库中各种锁归纳总结的相关资料,需要的朋友可以参考下
    2024-08-08
  • MySQL中读写分离方案对比分析与选型建议

    MySQL中读写分离方案对比分析与选型建议

    MySQL读写分离是提升数据库可用性和性能的常见手段,本文将围绕现实生产环境中常见的几种读写分离模式进行系统对比,希望对大家有所帮助
    2025-08-08
  • mysql跨数据库复制表(在同一IP地址中)示例

    mysql跨数据库复制表(在同一IP地址中)示例

    这篇文章主要介绍了mysql跨数据库复制表(在同一IP地址中)示例,需要的朋友可以参考下
    2014-03-03
  • mysql提示Can't connect to MySQL server on localhost (10061)完美解决方法

    mysql提示Can't connect to MySQL server on localhost

    这篇文章主要介绍了Can't connect to MySQL server on localhost (10061)解决方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03

最新评论