(20)不停服务扩容

2020-11-13  本文已影响0人  hedgehog1112

一、停服扩容

(1)通知用户:今晚00:00-2:00升级,不能登录

(2)停服,没有写

(3)建2*n个新库,做好高可用;

(4)迁移:脚本,把数据从n个库select出来,insert到2*n库里

(5)改DB路由配置,模n变为模2*n;  重启

中间如失败,配置改回旧库,恢复

缺点:不高可用、  规定时间内完成、  有问题第一时间没查出,丢数据;

二、不停服务扩容1

改中间件的分库路由信息,杀掉老db连接,新db连接(应用有自动重连能力)按新路由策略走新分库拓扑上。同时拿掉老实例上部分db,也拿掉新实例上另外一部分db,实现扩容

优点:设计标准,易自动化,保障数据一致性(靠mysql主从同步保证)

(1)改配置(双虚ip,微服务数据库路由);

(2)reload配置,实例增倍完成;

(3)删除冗余数据等收尾工作,数据量减半完成;

1、改配置

改两处,db实例所在机器做双虚ip

(1)原%2=0的库是虚ip0,现加虚ip00;(2)原%2=1的库是虚ip1,现加虚ip11;

2改为4库,注意旧与新映射:

(1)%2=0的库,会变为%4=0与%4=2  (2)%2=1的部分,会变为%4=1与%4=3

2、reload配置,实例扩容

服务层reload配置,reload方式:

(a)原始:重启服务,读新配置

(b)高级:配置中心给服务发信号重读配置,重新初始化数据库连接池;

不管哪种方式,reload后,db实例扩容就完成(秒级)

3、收尾,数据收缩

(a)双虚ip改回虚ip;

(b)解除 旧 双主同步,改成对数据不再同步增加

(c)增加 新 双主同步,保证高可用;

(d)删冗余数据,如:ip0里%4=2全部删除,只为%4=0数据提供服务

三、不停服务扩容2(同步工具)

新空实例(主从),同步工具从老实例里抽全量数据,抽前同步工具会老实例binlog位点。同步该位点后增量数据,赶上后,杀掉老实例连接。后面原理就一样。

方案关键:同步工具,解析mysql的binlog拿到每笔数据修改前后镜像,应用目标实例上

四、不停服务扩容3  (结合rabbitmq)

1.添加容量大从节点,同步主库数据,一主双从集群。

2.关闭主节点,切从库2(大容量)为主前,数据插入到rabbitmq读从1

3.从库2为,配置读写都从这,修从1  从库2  为主库

4.将rabbitmq数据插入新主

https://www.jianshu.com/p/c37eaf21ce42

https://www.zhihu.com/question/51993620/answer/493644184

https://blog.csdn.net/weixin_43139644/article/details/96130102

上一篇下一篇

猜你喜欢

热点阅读