上一篇我写了一篇主从同步的文章,主要是1主多从这种模式。但这种模式随着访问流量的过大,也会把从库给拖垮,因此为了解决这个问题,又出现一种新的方法-----主主互备,互为主从。这样的好处是做到了访问量的压力分流,同时也决绝单点故障的问题,任何一台发送故障,都还有另一台可供使用。
这种设计的缺点是只能适用于两台机器的场景。如果后期快速拓展业务的话,可以选择将业务分离,建立多个主主互备的数据库。
互为主从的设置其实很简单,只要看过我之前写的那篇主从同步的文章,你就想到互为主从的做法。
1.首先在A服务器上打开my.cnf,并输入一下内容
server-id=1
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
log-bin=master-bin
relay-log=relay-bin
sync-binlog = 1
server-id=2
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
relay-log=relay-bin
log-bin=master-bin
sync-binlog = 1
systemctl restart mariadb.service
reset master;
reset slave;
A:给B创建一个用户:127.0.0.2为B服务器的地址(需要改成自己的服务器地址)
grant replication slave on *.* to 'slaveuser'@'127.0.0.2' identified by 'slaveuser';
grant replication slave on *.* to 'slaveuser'@'127.0.0.1' identified by 'slaveuser';
6.分别给A,B数据库锁表(不能终止mysql进程)
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
8.根据上面的图来修改A,B服务器的配置
A:Host为B服务器地址
CHANGE MASTER TO MASTER_HOST='127.0.0.2',MASTER_USER='slaveuser', MASTER_PASSWORD='slaveuser',MASTER_LOG_FILE='master-bin.000002',MASTER_LOG_POS=245;
CHANGE MASTER TO MASTER_HOST='127.0.0.1',MASTER_USER='slaveuser', MASTER_PASSWORD='slaveuser',MASTER_LOG_FILE='master-bin.000002',MASTER_LOG_POS=245;
start slave;
SHOW SLAVE STATUS\G;
UNLOCK TABLES;