MySQL主从同步配置实战——从零搭建到验证不是网上抄的教程。是真实项目中两台Windows服务器上MySQL 8.0主从同步的完整配置过程。每一步都是实际执行过的命令。文章目录MySQL主从同步配置实战——从零搭建到验证一、环境二、配置主库三、配置从库四、主库创建同步账户五、从库配置同步六、验证同步状态七、验证数据同步八、常见排错8.1 Slave_IO_Running Connecting8.2 Slave_SQL_Running No8.3 主库已有大量数据从库是全新的九、结语一、环境角色IP说明主库192.168.253.131数据写入节点从库192.168.253.130数据读取节点、灾备两台的MySQL版本一致都是8.0Windows环境。二、配置主库修改my.ini新增以下参数[mysqld] # 服务器唯一标识 server-id1 # 二进制日志文件名前缀 log-binmysql-bin # 指定同步的数据库只同步这个库 binlog-do-dbXXX参数说明server-id集群内每台服务器唯一主库通常设为1log-bin开启二进制日志主库必须开启从库通过读这个日志同步数据binlog-do-db白名单——只同步指定库其他库的变更不写binlog配置完成后重启MySQL服务。三、配置从库同样修改my.ini[mysqld] server-id2 log-binmysql-bin binlog-do-dbXXX注意server-id必须和主库不同——这里是2。重启MySQL服务。四、主库创建同步账户主库上执行-- 创建同步专用用户限制只能从从库IP连接CREATEUSERslave_user192.168.253.130IDENTIFIEDWITHsha256_passwordBY123456;-- 授予复制权限GRANTREPLICATIONSLAVEON*.*TOslave_user192.168.253.130;-- 刷新权限FLUSHPRIVILEGES;-- 查看主库状态记下File和Position从库配置要用SHOWMASTERSTATUS;SHOW MASTER STATUS的输出样例------------------------------------------------------------ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | ------------------------------------------------------------ | mysql-bin.000001 | 5323 | XXX | | ------------------------------------------------------------File和Position这两个值必须记下来——从库要从这个位置开始同步。如果主库已经在运行中才配从库这个Position就是从此刻开始追的起点。五、从库配置同步从库上执行-- 停止当前同步如果之前配过STOP SLAVE;-- 配置主库连接信息CHANGE MASTERTOmaster_host192.168.253.131,master_port3306,master_userslave_user,master_password123456,master_log_filemysql-bin.000001,-- 对应SHOW MASTER STATUS的Filemaster_log_pos5323;-- 对应SHOW MASTER STATUS的Position-- 启动同步STARTSLAVE;-- 查看同步状态SHOWSLAVESTATUS\G六、验证同步状态SHOW SLAVE STATUS的关键字段-- 只看关键信息SHOWSLAVESTATUS\G关注这两个字段字段期望值如果不是Slave_IO_RunningYes从库连不上主库检查网络、防火墙、用户密码Slave_SQL_RunningYesSQL线程报错通常是主键冲突或数据不一致两个都是Yes说明同步正常。七、验证数据同步在主库做一次写入-- 主库执行USEXXX;CREATETABLEtest_sync(idINTPRIMARYKEY,nameVARCHAR(50));INSERTINTOtest_syncVALUES(1,同步测试);在从库查询-- 从库执行USEXXX;SELECT*FROMtest_sync;-- 如果能查到 id1 这条记录同步正常八、常见排错8.1 Slave_IO_Running Connecting从库连不上主库 1. 检查主库MySQL是否正常运行端口3306是否开放 2. 检查从库到主库的网络通不通telnet 192.168.253.131 3306 3. 检查主库创建的slave_user密码是否正确 4. Windows防火墙是否拦截了3306端口8.2 Slave_SQL_Running No通常是SQL执行出错——主库上执行过的语句在从库上重放失败 1. SHOW SLAVE STATUS 查看 Last_SQL_Error 获取具体错误 2. 常见原因从库已经有同名表/数据、主键冲突 3. 解决SET GLOBAL SQL_SLAVE_SKIP_COUNTER 1; START SLAVE; 跳过这一条 4. 根本解决从库重建——清空从库数据重新 CHANGE MASTER TO8.3 主库已有大量数据从库是全新的如果主库已经跑了一段时间从库是全新建的 1. 先对主库做一次全量备份mysqldump -u root -p --all-databases full_backup.sql 2. 从库导入全量备份mysql -u root -p full_backup.sql 3. 再执行 CHANGE MASTER TO 从备份的位置开始追增量九、结语MySQL主从同步的核心就三步主库开binlog → 从库连主库 → SHOW SLAVE STATUS确认状态。剩下的排错都在网络、权限、数据一致性这三个方向上。这个配置跑了多年没出问题——不是配置多复杂是每一步都验证过。
MySQL主从同步配置实战——从零搭建到验证
MySQL主从同步配置实战——从零搭建到验证不是网上抄的教程。是真实项目中两台Windows服务器上MySQL 8.0主从同步的完整配置过程。每一步都是实际执行过的命令。文章目录MySQL主从同步配置实战——从零搭建到验证一、环境二、配置主库三、配置从库四、主库创建同步账户五、从库配置同步六、验证同步状态七、验证数据同步八、常见排错8.1 Slave_IO_Running Connecting8.2 Slave_SQL_Running No8.3 主库已有大量数据从库是全新的九、结语一、环境角色IP说明主库192.168.253.131数据写入节点从库192.168.253.130数据读取节点、灾备两台的MySQL版本一致都是8.0Windows环境。二、配置主库修改my.ini新增以下参数[mysqld] # 服务器唯一标识 server-id1 # 二进制日志文件名前缀 log-binmysql-bin # 指定同步的数据库只同步这个库 binlog-do-dbXXX参数说明server-id集群内每台服务器唯一主库通常设为1log-bin开启二进制日志主库必须开启从库通过读这个日志同步数据binlog-do-db白名单——只同步指定库其他库的变更不写binlog配置完成后重启MySQL服务。三、配置从库同样修改my.ini[mysqld] server-id2 log-binmysql-bin binlog-do-dbXXX注意server-id必须和主库不同——这里是2。重启MySQL服务。四、主库创建同步账户主库上执行-- 创建同步专用用户限制只能从从库IP连接CREATEUSERslave_user192.168.253.130IDENTIFIEDWITHsha256_passwordBY123456;-- 授予复制权限GRANTREPLICATIONSLAVEON*.*TOslave_user192.168.253.130;-- 刷新权限FLUSHPRIVILEGES;-- 查看主库状态记下File和Position从库配置要用SHOWMASTERSTATUS;SHOW MASTER STATUS的输出样例------------------------------------------------------------ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | ------------------------------------------------------------ | mysql-bin.000001 | 5323 | XXX | | ------------------------------------------------------------File和Position这两个值必须记下来——从库要从这个位置开始同步。如果主库已经在运行中才配从库这个Position就是从此刻开始追的起点。五、从库配置同步从库上执行-- 停止当前同步如果之前配过STOP SLAVE;-- 配置主库连接信息CHANGE MASTERTOmaster_host192.168.253.131,master_port3306,master_userslave_user,master_password123456,master_log_filemysql-bin.000001,-- 对应SHOW MASTER STATUS的Filemaster_log_pos5323;-- 对应SHOW MASTER STATUS的Position-- 启动同步STARTSLAVE;-- 查看同步状态SHOWSLAVESTATUS\G六、验证同步状态SHOW SLAVE STATUS的关键字段-- 只看关键信息SHOWSLAVESTATUS\G关注这两个字段字段期望值如果不是Slave_IO_RunningYes从库连不上主库检查网络、防火墙、用户密码Slave_SQL_RunningYesSQL线程报错通常是主键冲突或数据不一致两个都是Yes说明同步正常。七、验证数据同步在主库做一次写入-- 主库执行USEXXX;CREATETABLEtest_sync(idINTPRIMARYKEY,nameVARCHAR(50));INSERTINTOtest_syncVALUES(1,同步测试);在从库查询-- 从库执行USEXXX;SELECT*FROMtest_sync;-- 如果能查到 id1 这条记录同步正常八、常见排错8.1 Slave_IO_Running Connecting从库连不上主库 1. 检查主库MySQL是否正常运行端口3306是否开放 2. 检查从库到主库的网络通不通telnet 192.168.253.131 3306 3. 检查主库创建的slave_user密码是否正确 4. Windows防火墙是否拦截了3306端口8.2 Slave_SQL_Running No通常是SQL执行出错——主库上执行过的语句在从库上重放失败 1. SHOW SLAVE STATUS 查看 Last_SQL_Error 获取具体错误 2. 常见原因从库已经有同名表/数据、主键冲突 3. 解决SET GLOBAL SQL_SLAVE_SKIP_COUNTER 1; START SLAVE; 跳过这一条 4. 根本解决从库重建——清空从库数据重新 CHANGE MASTER TO8.3 主库已有大量数据从库是全新的如果主库已经跑了一段时间从库是全新建的 1. 先对主库做一次全量备份mysqldump -u root -p --all-databases full_backup.sql 2. 从库导入全量备份mysql -u root -p full_backup.sql 3. 再执行 CHANGE MASTER TO 从备份的位置开始追增量九、结语MySQL主从同步的核心就三步主库开binlog → 从库连主库 → SHOW SLAVE STATUS确认状态。剩下的排错都在网络、权限、数据一致性这三个方向上。这个配置跑了多年没出问题——不是配置多复杂是每一步都验证过。