主从复制实验

发布时间:2026/8/1 3:56:10
主从复制实验 主从复制实验部署实验环境说明操作系统CentOS7.9 数据库版本MySQL5.7 服务器规划Master 主库192.168.10.16Slave1 从库192.168.10.14Slave2 从库192.168.10.153.1 三台服务器时间同步前置必备主从服务器时间不一致会直接导致同步异常需要统一时钟源。3.1.1 Master 主服务器配置时间服务安装时间同步工具bash[rootmaster ~]# yum -y install ntpdate ntp同步阿里云公网标准时间bash[rootmaster ~]# ntpdate ntp.aliyun.com修改 ntp 配置把本机作为内网时间同步源bash[rootmaster ~]# vi /etc/ntp.conf # 添加如下配置 fudge 127.127.1.0 stratum 10 server 127.127.1.0启动 ntp 服务关闭防火墙与安全策略bash[rootmaster ~]# systemctl start ntpd [rootmaster ~]# systemctl stop firewalld.service [rootmaster ~]# setenforce 03.1.2 两台 Slave 从服务器统一配置安装 ntp 工具bash[rootlocalhost ~]# yum install ntp ntpdate -y单次同步主服务器时间bash[rootlocalhost ~]# ntpdate 192.168.10.16设置定时任务每 10 分钟自动同步主库时间bash[rootlocalhost ~]# crontab -e # 添加定时规则 */10 * * * * /usr/sbin/ntpdate 192.168.10.16关闭防火墙与 selinuxbash[rootlocalhost ~]# systemctl stop firewalld.service [rootlocalhost ~]# setenforce 03.2 Master 主库配置主从同步修改 MySQL 配置文件/etc/my.cnf在[mysqld]模块添加配置ini# 开启二进制日志日志前缀master-bin log_binmaster-bin # 开启级联同步日志多级主从架构必须开启 log_slave-updatestrue # 数据库服务唯一ID集群内不可重复主库固定为1 server_id 1保存退出后重启 MySQL 服务bash[rootmaster ~]# systemctl restart mysqld登录 MySQL创建同步专用账号授权从库复制权限sqlmysql GRANT REPLICATION SLAVE ON *.* TO myslave192.168.10.% IDENTIFIED BY 123456; mysql flush privileges;语句说明允许 192.168.10 网段所有从库使用 myslave 账号同步全库数据密码 123456。查看主库二进制日志同步位点从库配置依赖 File 和 Positionsqlmysql show master status;执行结果会输出File日志文件名、Position日志偏移位置记录这两个参数后续从库配置需要使用。3.3 Slave 从服务器同步配置Slave1、Slave2 操作一致仅 server_id 区分3.3.1 修改从库 my.cnf 配置文件Slave1192.168.10.14配置inilog-binmaster-bin # 从库ID必须唯一Slave1设22Slave2设23 server_id 22 # 开启中继日志 relay-logrelay-log-bin # 中继日志索引文件 relay-log-indexslave-relay-bin.indexSlave2 只需修改server_id 23其余配置完全相同修改完成重启 mysqld。3.3.2 登录从库 MySQL绑定主库同步信息sqlchange master to master_host192.168.10.16, master_usermyslave, master_password123456, master_log_filemaster-bin.000001, master_log_pos412;参数说明master_host主库 IP 地址master_user/master_password前面主库创建的同步账号密码master_log_file/master_log_posshow master status查询到的日志名和偏移量3.3.3 启动同步并查看同步状态开启从库同步sqlmysql start slave;查看详细同步状态sqlmysql show slave status\G;同步正常判定标准plaintextSlave_IO_Running: Yes Slave_SQL_Running: Yes Seconds_Behind_Master: 0Slave_IO_Running负责拉取主库 binlogYes 代表网络、账号、IP 连通正常Slave_SQL_Running负责回放中继日志同步数据Yes 代表无数据冲突Seconds_Behind_Master主从延迟秒数0 代表无延迟3.4 主从同步功能测试在 Master 主库创建测试数据库sqlmysql create database work; mysql show databases;分别登录两台 Slave 从库执行查看库命令sqlmysql show databases;若从库列表中自动同步出现work库代表主从复制搭建成功。3.5 主从同步常见故障排查故障 1Slave_IO_Running: ConnectingIO 线程一直连接中报错原因防火墙拦截、账号密码错误、主从网络不通、binlog 文件 / 位点不匹配 解决步骤主库刷新二进制日志生成全新日志文件sqlflush logs;重新查询主库最新同步位点sqlshow master status\G;从库停止同步重新绑定新的日志文件与偏移量sqlstop slave; change master to master_log_filemaster-bin.000012,master_log_pos154; start slave;故障 2Slave_SQL_Running: NoSQL 线程执行失败数据冲突适用于测试环境临时跳过冲突语句生产环境不推荐长期使用sqlstop slave; SET GLOBAL SQL_SLAVE_SKIP_COUNTER1; START SLAVE;