mysql互为主备
A<-->B 数据互通
首先A客户机和B客户机要互通
为了方便使用,本文ip不再以明文方式显示
"C:\Windows\System32\drivers\etc\hosts" 在这里修改ip
192.168.124.88 node1
192.168.124.44 node2
其中node1和node2为客户机ip
数据库A 为node1,数据库B 为node2
数据库A配置
加到my.ini中 (C:\ProgramData\MySQL\MySQL Server 8.0)
c
server-id=1
log-bin=mysql-bin
binlog_format=ROW
gtid_mode=ON
enforce_gtid_consistency=ON
log_slave_updates=ON
auto_increment_increment=2
auto_increment_offset=1
数据库B配置
加到my.ini中
c
server-id=2
log-bin=mysql-bin
binlog_format=ROW
gtid_mode=ON
enforce_gtid_consistency=ON
log_slave_updates=ON
auto_increment_increment=2
auto_increment_offset=2
配置保存后重启mysql
数据该同步同步,后面不可以再操作数据!!!!!!!!!
这个过程中,千万不要动msyql数据,不然前功尽弃!!!
数据库A操作
sql
STOP REPLICA;
RESET REPLICA ALL;
RESET MASTER; --必须执行,且执行后不得再有任何数据库操作
CREATE USER 'repl'@'%' IDENTIFIED BY 'Repl@123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
-- 下面两条是为了改密码配置,8.0以上直接执行就行
ALTER USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'Repl@123456';
FLUSH PRIVILEGES;
数据库B操作
sql
STOP REPLICA;
RESET REPLICA ALL;
RESET MASTER;
CREATE USER 'repl'@'%' IDENTIFIED BY 'Repl@123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
ALTER USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'Repl@123456';
FLUSH PRIVILEGES;
前置条件完成
不可操作任何数据库数据了!!!
先把数据库A做主,B做从
在B数据库中执行
sql
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='node1',
SOURCE_PORT=3306,
SOURCE_USER='repl',
SOURCE_PASSWORD='Repl@123456',
SOURCE_AUTO_POSITION=1;
START REPLICA;
-- 到这就结束了
验证是否互通
sql
-- 验证是否互通
SHOW REPLICA STATUS;
查询结果看这三个字段
sql
Replica_IO_Running: Yes
Replica_SQL_Running: Yes
Seconds_Behind_Source: 0
此时 A->B完成
最好是通了再做下面的
再把数据库B做主,A做从
在A数据库中执行
sql
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='node2',
SOURCE_PORT=3306,
SOURCE_USER='repl',
SOURCE_PASSWORD='Repl@123456',
SOURCE_AUTO_POSITION=1;
START REPLICA;
-- 到这就结束了
验证是否互通
sql
-- 验证是否互通
SHOW REPLICA STATUS;
查询结果看这三个字段
sql
Replica_IO_Running: Yes
Replica_SQL_Running: Yes
Seconds_Behind_Source: 0
此时 B->A完成