mariadb互为主从,读写分离

       上一篇我写了一篇主从同步的文章,主要是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

2.在B服务器上打开my.cnf

server-id=2
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
relay-log=relay-bin
log-bin=master-bin
sync-binlog = 1

3.重启服务

systemctl restart mariadb.service

4.清空A,B服务器的master和slave日志(若之前有开启过同步的,需要先停止同步:stop slave;)

reset master;
reset slave;

5.分别给AB服务器创建授权的同步账户

A:给B创建一个用户:127.0.0.2为B服务器的地址(需要改成自己的服务器地址)

grant replication slave on *.* to 'slaveuser'@'127.0.0.2' identified by 'slaveuser';  

B:给A创建一个用户:127.0.0.1为A服务器的地址(需要改成自己的服务器地址)

grant replication slave on *.* to 'slaveuser'@'127.0.0.1' identified by 'slaveuser';  

6.分别给A,B数据库锁表(不能终止mysql进程)

FLUSH TABLES WITH READ LOCK;

7.分别查看A,B服务器的主机状态。日志记录的二进制文件:

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;


B:Host为A服务器地址

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;


9.A,B分别开启同步

start slave;

10.分别查看A,B的同步状态是否正常,红框两个都为yes代表同步成功

SHOW SLAVE STATUS\G;


11.解锁

UNLOCK TABLES;

12.可以自行测试了,这个时候同步是成功的了,我这里设置的是出了mysql和information_schema不同步之外,其他数据库都同步

发布了28 篇原创文章 · 获赞 13 · 访问量 8万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览