Windows Mysql8:数据库主从同步配置


本地运行两个mysql服务,请参考:Windows系统 Mysql8.0.11:同ip运行两个mysql服务

1、确保两个mysql服务同时运行

mysql主从服务器 mysql8.0 主从_sql

2、使用mysql连接上两个mysql服务

mysql主从服务器 mysql8.0 主从_mysql主从服务器_02

3、在主库敲命令查看主库状态

按F6进入命令操作界面;

命令:show master status;

mysql主从服务器 mysql8.0 主从_mysql主从服务器_03


file对应后面的从库配置日志文件,position也对应后面的配置

Binlog_Do_DB是需要同步的数据库

Binlog_Ignore_DB是不用同步的数库

4、主库添加用户

mysql主从服务器 mysql8.0 主从_sql_04


mysql主从服务器 mysql8.0 主从_sql_05


注意:% 代表任何ip都能连接这个主库
服务器权限 全部选上

mysql主从服务器 mysql8.0 主从_mysql主从服务器_06

5、在从库打开命令行,关联主库日志文件,来实现主从数据同步

按F6进入命令操作界面;
敲命令:stop slave; 接着敲:

change master to master_host='192.168.2.106',master_port=3306,master_user='sqlslave',master_password='sqlslave',master_log_file='mysql-bin.000005',master_log_pos=155;
master_host 主库ip  
master_port 主库端口
master_user 上面新建的用户
master_password 上面新建用户的密码
master_log_file  主库命令行中的file值
master_log_pos 主库命令行中的position值

注意:master_log_pos可以填0,为什么能填0呢,参考文章:mysql配置主从关系时的语句master_log_pos的值到底填写什么? 所以上面的语句也可以是:

change master to master_host='192.168.2.106',master_port=3306,master_user='sqlslave',master_password='sqlslave',master_log_file='mysql-bin.000005',master_log_pos=0;

最后敲:start slave;启动主从数据同步。

6、验证是否成功

6.1、命令验证:

先去从库执行命令show slave status;

mysql主从服务器 mysql8.0 主从_数据库_07


可以看到Slave_IO_Running和Slave_SQL_Running都是Yes则表示配置成功。

Slave_SQL_Running、Slave_IO_Running必须都为YES,主从配置才算成功!!!

可能出现的问题:

Q1:Slave_IO_Running状态为Connecting

A1:检查第5步的change语句中的host、port、log_file是否正确,比如像笔者每次重启电脑之后本机host的ip可能发生改变,或者每次重启mysql服务之后log_file文件也会发生变化,导致主从配置不生效,此时需要重新配置主从关系,即重新执行第5步操作。

Answer1补充:笔者A1中提到的每次重启mysql服务之后log_file文件发生变化需要重新配置主从,解决方案:每次重启mysql服务的时候都按以下步骤:先停止从库,再停止主库,启动的时候先启动主库,再启动从库;这样,log_file文件虽然发生了变化,但按照这样的正常流程去停止启动mysql服务,主从配置就会相应的变化,而不需要我们手动去再重新配置主从。

mysql主从服务器 mysql8.0 主从_mysql_08


Q2:Slave_SQL_Running状态为No

A2:查看mysql的err文件,解决文件内记录的报错信息即可。

6.2、数据验证

在主库需要同步的库里新增表并插入数据,然后打开从库验证从库也新增了相同的表及数据,则表示主从同步配置成功。