300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 【MySQL】主从复制架构方案 - 笔记

【MySQL】主从复制架构方案 - 笔记

时间:2022-11-16 02:53:08

相关推荐

【MySQL】主从复制架构方案 - 笔记

主从架构设计

查看binlog

show master status;show BINLOG events in 'BUUUG-bin.000120';

主从同步需要考虑的风险

突然断电导致主从数据不一致数据同步延迟问题(主库写,从库查)

如何避免

同步方式:

异步同步(保证性能不会受到同步的影响)

半同步:同步时等待,直到数据已经同步到relay binlog之后,才可以返回到Web/App Server

强制读主…等

不同的主从架构方案

1、一主一从

Slave可以用来做Master的备份。

2、一主多从(应用较广泛)

Master承载了大部分的写请求,Slave承载大部分的读请求。同时可以在Slave3中做备份节点,用于定时任务操作/线下查生产环境数据(哪怕是把数据改了,也不会影响线上)等。选一个Slave做Master的备份,当Master挂掉之后,使用Slave承担Master 的工作。

3、双主

适合写请求压力非常大的情况。比如对id取模,偶数写进一个节点,奇数写进另一个节点。缺点是如果其中一个挂了,整个系统就挂了。

4、级联同步

优点:如果Master挂掉,剩下的Slave是一个天然的主从架构。Master只和一个Slave同步,减轻Master的压力。

5、环形多主

早期淘宝使用过,Master上再接许多从库,形成数据库矩阵,用于提高承载性。

但是只要挂掉一个Master,整体就挂了。特殊情况使用。

现在很少使用了

使用Docker

不推荐在Docker容器中存放频繁读写的文件系统,因为Docker的文件系统是虚拟的,其增删改查操作相对于直接访问主机里的文件系统来说,速度会慢很多。

所以,为了提高性能,应该将Data目录以及配置文件挂载在容器外面。

MySQL主从架构的实现方案

将写请求发动到Master中,将读请求发送到Slave中

不推荐使用AOP进行insert/select分离,因为会增加整个业务系统的复杂性,需要进行修改程序、测试等一系列操作。AOP在调试的时候不是线性的调试,如果对别人写的AOP逻辑了解的话,不容易找到问题出在哪里。

有一些第三方的组件帮助我们进行读写分离,如 sharing-jdbc 等,是侵入式的方案。

使用中心代理节点的方案,对insert/select进行分发,可以屏蔽后端MySQL架构的复杂性,从而让MySQL后端架构对于开发人员来说是透明的。

可以使用MyCat或者Atlas

编写docker-compose.yml

主库的配置

配置完之后,重启数据库

dc restart master

再使用show master status;查看 Binlog_Do_DB,会发现多了一个库

从库的配置

配置完之后,重启数据库

dc restart slave1

需要配置主库信息,才能知道要从哪一个库同步

可以使用show slave status查看slave的同步状态

slave2的配置与slave1相同

Atlas的配置

全部启动

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。