MySQL主从同步架构配置笔记
一、环境准备
部署三台MySQL服务器(主机名分别为MySQL53、MySQL54、MySQL55)及一台Web服务器(模拟业务访问端),完成以下基础配置:
关闭所有服务器防火墙,确保节点间网络互通
所有MySQL服务器安装并启动MySQL服务,安装依赖包:mysql-server、mysql
二、主服务器(Master)配置
规则:业务网站连接并存储数据的MySQL服务器作为主服务器,主从架构中主服务器唯一。
2.1 启用并自定义binlog日志
MySQL默认支持binlog日志,但需自定义日志文件名以适配主从同步:
修改MySQL主配置文件
在[mysqld]配置段头部添加两项核心配置(确保唯一性和可识别性): ① server-id:主从架构中全局唯一的节点标识(如主服务器设为1) ② log-bin:自定义binlog日志文件名(如log-bin=mysql-bin)
重启MySQL服务后,通过命令验证binlog配置生效(确认当前使用的binlog文件名与配置一致)
2.2 创建主从同步专用授权账户
目的:为从服务器提供连接主服务器同步数据的专用账户,遵循最小权限原则授权:
创建同步账户:用户名repluser,密码Huawei@123
授予权限:为repluser账户授予REPLICATION SLAVE权限(核心同步权限,用于拷贝主服务器binlog日志)
2.3 查看主服务器当前binlog状态
执行相关命令(show master status;),记录当前使用的binlog日志文件名及日志偏移量(Position),后续从服务器配置需用到这两个参数。
三、从服务器(Slave)配置
核心目标:通过配置让从服务器自动同步主服务器数据,需完成以下步骤:
3.1 配置从服务器唯一标识
验证当前状态:执行命令查看从服务器配置(若输出为空,说明尚未启用从服务器角色)
修改主配置文件:在[mysqld]配置段添加server-id(需与主服务器及其他从服务器唯一,如从服务器1设为2,从服务器2设为3)
保存配置后重启MySQL服务,使server-id生效
3.2 指定主服务器信息
前置准备:从主服务器获取两项关键信息——当前使用的binlog日志文件名、日志偏移量(Position)
执行change master to命令:明确主服务器IP/主机名、端口、同步账户(repluser/Huawei@123)、binlog文件名及偏移量,完成主从关联配置
3.3 启动从服务器同步进程
初始状态验证:执行show slave status\G; 查看同步状态,此时IO线程和SQL线程状态均为NO,说明未启用从服务器角色
启动同步:执行start slave; 命令启用从服务器角色
最终验证:再次执行show slave status\G; ,确认IO线程和SQL线程状态均为YES,表明主从同步链路正常
3.4 同步状态异常解决方案
若启动slave后IO线程或SQL线程未全部为YES,处理步骤:
执行stop slave; 停止同步进程
重新执行change master to命令(核对主服务器配置信息,确保无错误)
再次执行start slave; 启动同步,重新验证状态
四、补充说明:虚拟机克隆场景问题处理
若从服务器是通过克隆已安装MySQL的虚拟机获得,会出现server-uuid冲突报错,解决方案:
执行命令删除uuid自动生成文件:rm -rf /var/lib/mysql/auto.cnf,重启MySQL服务后会自动生成新的唯一uuid。
五、主从同步功能测试
5.1 基础数据同步验证
主服务器操作:创建数据库、数据表,插入测试数据,验证数据写入正常
从服务器验证:执行查询命令查看对应数据库、数据表,确认数据与主服务器完全一致,同步生效
5.2 Web服务器访问验证
核心目标:验证Web服务器访问主服务器写入数据后,从服务器可正常同步
主服务器配置:创建Web服务器专用访问账户,授予增删改查(SELECT、INSERT、UPDATE、DELETE)权限
账户同步验证:在从服务器执行命令查看用户列表及权限,确认Web专用账户已同步
Web服务器测试:
① 从Web服务器连接主服务器MySQL(使用专用账户)
② 写入测试数据,验证数据正常存储
③ 从服务器验证:查询数据,确认同步成功
④ 可选验证:从Web服务器连接从服务器,查看同步后的数据
六、主从同步故障排查方法
6.1 错误信息查看
当IO线程或SQL线程状态异常时,通过show slave status\G; 命令可查看详细报错信息,定位故障原因。
6.2 常见故障原因及解决方案
IO线程异常: 核心原因:change master to命令中主服务器配置项错误(如IP/端口错误、同步账户密码错误、binlog文件名或偏移量错误) 解决方案:核对主服务器信息,重新执行stop slave; + change master to; + start slave; 流程
SQL线程异常: 核心原因:从服务器执行中继日志(relay log)中的SQL命令时失败,常见场景为命令依赖的数据库/数据表在从服务器不存在 解决方案:① 在主服务器对目标库表执行完全备份 ② 将备份文件拷贝至从服务器并恢复(确保库名、表结构、字符集与主服务器一致) ③ 重启同步进程
七、一主多从架构扩展
7.1 架构优势
通过增加从服务器节点,解决单从服务器场景下的单点故障问题,提升架构可用性,同时可分担主服务器读压力。
7.2 扩展配置(以MySQL55作为新增从服务器为例)
步骤1:配置唯一标识:修改MySQL55的主配置文件,指定唯一server-id(如4),重启MySQL服务
步骤2:数据一致性准备:
① 查看主服务器当前binlog日志文件名及偏移量
② 在主服务器对现有数据执行完全备份(如mysqldump命令)
③ 将备份文件拷贝至MySQL55
④ 在MySQL55恢复备份数据,确保与主服务器数据一致
步骤3:关联主服务器:执行change master to命令,配置主服务器信息(同3.2步骤)
步骤4:启动同步并验证:执行start slave; ,通过show slave status\G; 确认IO线程和SQL线程均为YES
7.3 扩展验证
主服务器操作:插入新测试数据
新增从服务器验证:查询数据,确认同步成功
权限配置:在新增从服务器(MySQL55)创建Web访问专用账户并授予对应权限
八、其他常见主从同步架构
1. 主-从-从架构:在一主多从基础上,新增从服务器从现有从服务器同步数据,进一步分担主服务器压力
2. 主-主架构(互为主从):两台服务器双向同步,均支持Web服务器访问,提升业务可用性(需注意避免数据冲突)