9.7 通过复制手段,实现一个最简单的高可用架构:主-主架构



以上,整个章节,介绍了复制。

这里通过一个例子,看一下如何通过复制手段,实现一个最简单的高可用的架构。

一、通过复制手段,实现一个最简单的高可用架构

1.1 主-主复制架构

对于小公司:比如就那么几个人,又开发、又测试、又运维,是很常用。

  • 优点:身份不需要切换

图:

其中一个节点:可读可写;

另外一个节点:必须只读。

1.2 遇到故障时吗,如何容灾

如果上节中的左边主库A,突然挂了。

那就:关掉右边主库B的只读,让业务应用在上面可以就读又写。

就不影响业务继续执行。

经过后期抢修,左边主库A可以使用了,那么就可以将其作为只读。仍然是双主架构。

1.3 示例

左边:主库A 右边:主库B

1.

因为之前,右边已经是在复制左边了:所以,接下来的操作是:将左边去复制右边:

  • 为了避免,在复制别的无关的库,所以最好习惯性的先停止备库功能:
  • 配置库A,的主库是库B
  • 启动备库

2.显示下左库的从库状态

左边:主库A 右边:主库B

3.显示下右库的从库状态

4.将右库设置为只读

配置文件中加个配置项即可

1.4 易导致的问题:3个

1.5 数据冲突:如果不小心两主都是读写

因为必须一个库是:读写;另一个库是:只读。如果后者不是只读,而是跟前者一样都是读写,那么就会导致数据冲突。

解决:

  • 方案1:两边都写也可以,得需要一些分布式id的框架,确保两边id不重复
  • 方案2:只一个主,另一个是只读

1.6 客户端切换:后续介绍

客户端连接的是MySQL A,怎么让它自动的去连接MySQL B呢?

切换:后续会研究

1.7 循环赋值:GTID能天然避免

左边:主库A 右边:主库B

两者互相复制。

  • 因为每个事务,都有一个全局唯一的ID。库A上执行了这个事务,传送给库B,库B重放结束了,又传回给库A:“这个事务号我已经执行过了啊”

二、小结

声明:Jerry's Blog|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 9.7 通过复制手段,实现一个最简单的高可用架构:主-主架构


Follow excellence, and success will chase you.