Mysql双向同步复制(互为主从)

环境:Windows2019 Mysql8.0
服务器1:10.20.6.90
服务器2:10.20.6.99

1. 设置数据库的配置文件my.ini

(C:\ProgramData\MySQL\MySQL Server 8.0)
服务器A:

[mysqld] 
server-id=1   #任意自然数n,只要保证两台MySQL主机不重复就可以
log_bin= WIN-CADSERVER01-bin   #开启二进制日志
binlog-do-db = cad_server    #要同步的数据库

log-slave-updates
sync_binlog = 1
auto_increment_increment=2  #步进值, 一般有n台主MySQL就填n
auto_increment_offset=1  #起始值。一般填第n台主MySQL。
replicate-do-db=cad_server #要同步的数据库

服务器B:

[mysqld] 
server-id=2   #任意自然数n,只要保证两台MySQL主机不重复就可以
log_bin= WIN-CADSERVER02-bin   #开启二进制日志
binlog-do-db = cad_server  #要同步的数据库

log-slave-updates
sync_binlog = 1
auto_increment_increment=2  #步进值, 一般有n台主MySQL就填n
auto_increment_offset=2  #起始值。一般填第n台主MySQL。
replicate-do-db=cad_server #要同步的数据库

重启服务

net stop mysql80
net start mysql80

image

2. 进入数据库创建连接账户

服务器A:
通过cmd进入mysql安装目录bin下(C:\Program Files\MySQL\MySQL Server 8.0\bin)
登录mysql:
mysql -u账号 -p密码
创建连接账户并设置权限:

mysql> create user ‘replicate’@‘10.20.6.99’ identified by ‘12345’;
mysql> grant replication slave on *. * to ’ replicate '@’10.20.6.99’ ;
mysql> flush privileges; # 刷新系统权限

服务器B:
通过cmd进入mysql安装目录bin下
登录mysql:
mysql -u账号 -p密码
创建连接账户并设置权限:

mysql> create user ‘replicate’@‘10.20.6.90’ identified by ‘123456’;
mysql>grant replication slave on *. * to ‘replicate’@’10.20.6.90’ ;
mysql> flush privileges; # 刷新系统权限

image
image
image

3. 查看生成的binlog日志,记录下日志名字和起始位置

服务器A:

mysql> show master status\G;

记录File和Position.

服务器B:

mysql> show master status\G;

记录File和Position.
image

4. 进行从读设置,指定要读的主服务库的地址、用户、密码、日志等

服务器A:

mysql>
change master to
master_host=‘10.20.6.99’, # 指定服务器B的地址
master_user=‘replicate’, # 指定服务器B创建的用户名
master _password=‘12345’, # 指定服务器B创建的密码
master_log_file=‘WIN-CADSERVER01-bin.000001’, # 指定服务器B的日志文件名
master_log_pos=307; # 指定服务器B的日志起始位置

服务器B:

mysql>
change master to
master_host =‘10.20.6.90’, # 指定服务器A的地址
master_user =’ replicate ', # 指定服务器A创建的用户名
master _password =‘12345’, # 指定服务器A创建的密码
master_log_file =‘WIN-CADSERVER02-bin.000001’, # 指定服务器A的日志文件名
master_log_pos =321; # 指定服务器A的日志起始位置

image

5. 重启服务线程并查看服务状态

服务器A:

mysql>start slave; #启动
mysql>show slave status\G; #查看

查看下面两项值均为Yes,即表示设置从服务器成功。

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

服务器B:同上;
若出现NO,根据ERROR提示定位错误。
image

posted on 2025-04-05 19:41  guan88  阅读(35)  评论(0)    收藏  举报

导航