美文网首页
(20)不停服务扩容

(20)不停服务扩容

作者: hedgehog1112 | 来源:发表于2020-11-13 10:07 被阅读0次

    一、停服扩容

    (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

    相关文章

      网友评论

          本文标题:(20)不停服务扩容

          本文链接:https://www.haomeiwen.com/subject/ejixvktx.html