在数据库运维中,主从复制是保障数据高可用、实现读写分离的核心方案。基于位点的复制作为 mysql 最经典的主从部署方式,具备配置灵活、兼容性强的特点。本文将从前置准备到验证测试,一步步拆解完整部署流程,帮助运维人员快速落地。
一、前置准备(必做!)
主从复制的成功依赖基础环境配置,需重点完成以下三项工作:
1. 确认主库 binlog 已开启
binlog 是主从数据同步的核心日志,主库需通过它记录所有数据变更操作。
- 查看当前状态:登录主库执行
show global variables like "log_bin";
若value为on则已开启,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

核心关注三个关键字段:
slave_io_running:需为yes(io 线程正常读取主库 binlog)slave_sql_running:需为yes(sql 线程正常执行中继日志)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,说明主从数据同步正常。

五、注意事项
- 生产环境中,复制用户应限制为从库 ip(替换
%为具体 ip) - binlog 文件需定期清理,避免磁盘空间溢出
- 若
slave_sql_running为no,需检查从库数据与主库一致性 - 同步延迟需监控,可通过
seconds_behind_master指标告警 - 配置文件修改后必须重启 mysql,动态修改仅临时生效
以上就是mysql基于位点的主从复制完整部署指南的详细内容,更多关于mysql基于位点主从复制的资料请关注代码网其它相关文章!
发表评论