专栏首页杨建荣的学习笔记运维系统数据库升级到MGR小结

运维系统数据库升级到MGR小结

这是学习笔记的第 1898 篇文章

今天对运维系统的MySQL架构做了下升级,从单点实例升级到了MGR跨机房集群。当然目前也是一个迭代的方案,后续的架构升级还需要持续的补充,算是一个开始吧。

首先运维系统建设也有一些日子了,已经支撑了不少线上的业务,所以从原来的测试版本逐步过渡到了一个正式的线上版本,系统优先级提高了,系统的高可用就是一个需要重点考虑的问题,如果说元数据的信息丢失了,我们无法恢复,那么这个修复的代价就非常高了。

当前系统的状态如下:

目前在两个机房存在两台服务器,彼此都是独立的,分别负责了3个独立的业务方向。

现在需要对9.208所在的机房数据库做下架构升级,改造为MGR有一个硬性要求就是表需要有主键。对于xwiki业务的表因为是采用的一个开源版本,基于hibernate实现,我们无法保证这个数据库的业务逻辑中对于自增列的使用场景和hibernate的完全匹配,基本上这个业务就是最小化运维,拿来能用即可,所以就不打算投入太多精力去调研这方面的需求匹配,所以经过权衡,在不影响已有的权限和业务的情况下,把xwiki业务分离出去,使得运维系统devopsdb的业务能够直接升级到MGR架构环境下。

为了避免升级的时候,我们才开始部署MGR环境,我们需要预先搭建一套MGR环境,到时候需要导出线上数据,导入MGR环境。

准备的环境如下,尤其需要注意下图中的端口,这是我们为了保持业务连接和权限不变,对于业务使用来说能够透明一些。

线上环境升级时的架构如下,我们需要切换为MGR环境,原来环境的devopsdb数据可以备份出来就不再使用了,同时为了兼容和统一端口,119.221服务器上面的数据库需要调整端口,从4306修改为4316.

调整后的的架构改进图如下:

看起来简单的需求,为了保证兼容和统一,需要做不少的工作来承接这个相对平滑的过程,目前采用的是单主的模式,在经过了反复测试之后,和同事一起做了下升级的完整过程,算是一个好的开始。

我们把整个过程分成了18个步骤,每个步骤都做了下时间统计,供参考。

MGR切换前工作

  1. MGR-4310修改increment_offset为3
  2. 检查xwiki的数据库配置和服务配置(tomcat)
  3. 从mysql-4306导出devopsdb数据导入MGR-4310,评估导入时间,查看是否有导入错误
  4. MGR-4310切换测试
  5. Shutdown mysql_9.208-4310,预期切换到119.221-4310,测试写入数据
  6. Startup mysql_9.208-4310,加入集群
  7. Shutdown mysql_119.221-4310,预期切换到mysql_9.208-4310
  8. MGR-4310端口切换测试,修改端口为4301 11:30确认是否可行
  9. 梳理字典表用户,生成sql 正式切换
  10. 停止opsmange,xwiki服务
  11. Mysql_9.208-4306备份 mysqldump 备份devopsdb
  12. xwiki备份
  13. Shutdown Mysql-9.208-4306
  14. 修改mysql-9.208-4306为mysql-9.208-4308,降低buffer_pool配置
  15. 修改xwiki的数据库配置为4308,启动xwiki
  16. 切换MGR-4301为MGR-4306,修改buffer_pool配置,两个节点都修改
  17. 启动MGR-4306,恢复devopsdb的数据
  18. 测试工单流程和cmdb的数据情况,验证升级的有效性。

整个过程还是比较紧凑的,中间碰到了不少的实战问题,在有限的时间内推动完成还是听不容易的。

本文分享自微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-02-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《Google SRE 运维解密》读书笔记

    Google SRE算是行业的标杆,运维中的特种兵。简单来说,就是SRE很贵,很能干,而且主要是巧干。换句话说,不懂开发的运维,不是真正的SRE. 翻译版的这本...

    jeanron100
  • MySQL数据库升级的一些坑

    对于商业数据库而言,数据库升级是一个优先级很高的事情,有版本升级路线图,有相应的补丁,而且对于方案还有一系列的演练,显然是一场硬仗。而在MySQL方向上,升级这...

    jeanron100
  • Django初探(二)

    之前写过一篇Django的介绍,简单部署之后就没有深入跟进了。 Django初探 上周末去广州参加技术大会,在往返的飞机上,自己调试了下Django里面的内容。...

    jeanron100
  • 我所理解的SRE、PE和应用运维(上)

    SRE这个概念我个人印象中应该14年下半年左右听到的,当时只知道是Google对运维岗位定义,巨牛逼的一个岗位,在网上查到SRE是叫网站稳定工程师,只要是保障稳...

    赵成
  • 《Google SRE 运维解密》读书笔记

    Google SRE算是行业的标杆,运维中的特种兵。简单来说,就是SRE很贵,很能干,而且主要是巧干。换句话说,不懂开发的运维,不是真正的SRE. 翻译版的这本...

    jeanron100
  • Aspect-Opinion对抽取

    知乎:https://www.zhihu.com/people/zhang-yi-ce-84

    zenRRan
  • python给list排序的简单方法

    大家有没有发现,当在网站上检索,想找到的内容,输入一个关键词时,检索栏下会出现输入关键词的拓词和问题。输入的关键词越多,越有可能找的你想要的问题。其实会出现这种...

    python学习教程
  • Unix程序员的Win10二三事

    俺踏月色而来
  • Spark内核详解 (6) | Spark Shuffle 解析

    在所有的 MapReduce 框架中, Shuffle 是连接 map 任务和 reduce 任务的桥梁. map 任务的中间输出要作为 reduce 任务...

    不温卜火
  • 面试题十二期-之各大公司数据库相关面试题集合NO1

    解答:重建控制文件,用带backup control file 子句的recover命令恢复数据库。

    测试小兵

扫码关注云+社区

领取腾讯云代金券