当前位置:主页 > 查看内容

数据库上云的一点记录,你记录了吗?

发布时间:2021-04-22 00:00| 位朋友查看

简介:本文转载自微信公众号「 虞大胆的叽叽喳喳」,作者虞大胆。转载本文请联系 虞大胆的叽叽喳喳公众号。 这周将核心数据库迁移到阿里云RDS了,为什么要迁移?以前文章也说过好多次了,最近一年感觉自己也是半个DBA了,但再搞下去就需要更专业的知识,再加上数据……

本文转载自微信公众号「 虞大胆的叽叽喳喳」,作者虞大胆。转载本文请联系 虞大胆的叽叽喳喳公众号

这周将核心数据库迁移到阿里云RDS了,为什么要迁移?以前文章也说过好多次了,最近一年感觉自己也是半个DBA了,但再搞下去就需要更专业的知识,再加上数据库是一个产品的命根,托管还是更稳妥。而且RDS和周边服务有很多功能,比自己弄更好,更省力。

在购买RDS产品过程中,也和对接的运营经理沟通过好几次,说实话能感觉到对方解决问题的诚意,反而是拉的一个专家群印象一般,也许这不是他们的核心工作,如果有问题还是走工单系统比较稳妥。

提前做了很多调研,对于功能,成本,规格选择做了很多工作,如果要合理利用,还是要死磕文档,在沟通中也发现阿里云的对接人员也有很多并不了解的。

很久没做系统级的变更了,尤其是数据库层面的,自己刚进sina的时候,第一周就体验了一把数据库扩容,那时候是暂停所有服务,然后使用脚本将数据库导入导出。而反观现在,基本上不允许你中断服务,同时依赖于阿里云的DTS服务,迁移工作真的是方便了很多,这也是技术进步的一种体现。

这次通过DTS将mysql从5.6升级到了5.7,至于提升了什么,后面再继续分享,原来有个同事说都用mysql 8.0,所以也并不能太保守,本来想着升级到mysql5.6,最终选择了mysql5.7。

迁移方案首先要保证稳健性,其次要保证安全性,最后要保证体验,三者之间可以做些取舍,虽然DTS也支持双向同步,但和mysql主主同步一样,具体实施的时候有很多限制,所以整体的方案没有做到完全无感知。

具体的方案在迁移过程中(必然要有操作时间)锁住源库的更新;同时迁移完成后,将新库的数据同步到源库(为了做回滚)。因为涉及到源库和目标库的版本不一样,所以新库到源库的同步并没有做。

阿里云的DTS服务确实很不错,后面可以多说一些,使用的场景非常宽泛,即使你没有使用阿里云的服务,也建议可以尝试一下,不过今天也发现DTS的同步毕竟不是原生的同步,速度上会受到很多制约。

在实施过程中,也收获了很多,比如mysql中的readonly和全局读锁区别;mysql5.7的sql_mode;gtid中的reset master和reset slave;gtid同步异常怎么办(以前是忽略跳过,但这会导致数据不一致性);账号授权规则的重要性(分级,授权范围越小越好,比如只授权给proxy);主从同步最好也同步mysql库(这样很多信息主从库能保持一致),但库的配置信息(比如pool size)无法同步;切换主从并没有原先想的那么复杂,包括升级版本。

整个迁移过程一定要提前模拟好,而且模拟的越真实就会减少错误的存在,而越真实的模拟就要考验整体架构的合理性,和同事讨论了多次,目的也是校验大家理解的是否一致,是否有更多好的建议,在具体操作过程中,也是两个人一起弄,一方面是加强信心,另外也能互相提醒。整体实施的时候有一个checklist,目前看来还是比较顺利的。

如果要说给阿里云RDS一个建议,就是将它的读写分离功能独立出来,什么意思呢?可以产生多个读写分离实例,可以无限组合主从实例,甚至这些实例都不一定要求是RDS。

RDS迁移的第一步完成了,但后续还有很多的细节,在做一个事情的时候,其实成败不在于开始,而是在于后面,这方面自己有一些体会,比如说一个解决方案从大方向上很牛逼,但缺乏对于细节的思考,没有考虑后续的开发复杂度、通用性,会导致成为一个四不像。

但有了一个好的开始,走出了扎实的一步,很喜欢这周听到的这句话。


本文转载自网络,原文链接:https://mp.weixin.qq.com/s/EBSpcdCj6U7Yig8JGzlzHw
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐