作者:秦鸣 2021-04-28 09:26:25
云计算 目前国内很多企业已经在深入的使用公有云了。随着业务的发展,这些企业大部分会考虑做多云的双活或灾备以及根据云上产品功能和成本考虑从一家云迁到另一家云。
[[396459]]
本文转载自微信公众号「新钛云服」,作者秦鸣。转载本文请联系新钛云服公众号。
目前国内很多企业已经在深入的使用公有云了。随着业务的发展,这些企业大部分会考虑做多云的双活或灾备以及根据云上产品功能和成本考虑从一家云迁到另一家云。
我司前几个月接了一个公有云业务迁移的项目,在项目中总结了一些经验,下面是我的总结,希望能帮助每个运维在遇到类似的问题时能快速解决。
数据库同步使用DTS工具来做的,目前主流的公有云都有各家的DTS工具,DTS的工具原理基本都是从源库binlog读取数据然后插入到目标数据库。但各家的DTS工具容错性还是相差比较大的。下面我就说说数据库同步碰到的那些坑。
在MySQL 同步过程中出现 Error 3140: Invalid JSON text: "The document is empty." at position 0 in value for column,
原因是源库校验不严格。数据库中的字段要求为 NOT NULL,但是数据中存在值为 NULL 的数据。
有两个解决方法,根据需要处理:
(1)对源库中的数据进行修复,将所有值 NULL 的数据修正为正确的值 (这也符合业务逻辑需要)。
(2)对目标库中的表进行修改,将字段修改为允许为 NULL。例如表为 xxxx,字段为 total
ALTER TABLE `xxxx` CHANGE `total` `total` JSON NULL;
在执行数据库同步的时候可能会碰到问题而导致需要重新启动做增量同步,但是有时这个同步是在晚上进行的,早上人为发现问题可能距离出现问题已经过去了好几个小时。
如果源库这个时候binlog只保留1~2个小时的话会导致用户在早上重启同步任务时找不到对应的binlog文件,从而只能再次做全量同步。建议源库binlog在同步时保留2~3天以上。
在执行数据库同步的时候目标库除了会有大量的写入外还会有一些临时表及日志产生。如果两个库的磁盘空间一样大很容易产生目标库磁盘空间不足导致写入失败的问题。这样无疑会浪费很多的时间去处理。
所以建议是目标数据库磁盘空间先申请源库的2倍空间。如果费用相差不大迁完后就不要降了。
在同步数据库时DTS突然报出了一个主键ID错误的日志,同时同步也中断了。后来经过调研发现用户数据库有计划任务在跑导致的。所以在同步数据库时必须关闭针对数据库的计划任务。
ES迁移本身并没有什么问题,但是ES不同版本之间是有较大差异的,不仔细测试是发现不了一些隐藏的问题的。
客户碰到的ES问题是之前在XX云用的是ES低版本,默认分片为5。切换至XX云用的是ES 7版本,默认分片是1。
正常客户业务使用时需要根据业务去修改分片数,来适配业务。但客户并没有这么做导致了生产事故。帮客户去重建索引调整分片数后问题得到了解决。
迁移最后必定会经历域名的切换,域名切换覆盖全国和全世界时间都是不一定的,且不同的区域都会有一定的差异。
客户就碰到了某个项目访问有问题的情况。我们的做法是,在原公有云入口部署nginx,只要还是访问到原nginx的都proxy_pass到新的公有云入口。这样就保证了不会有人访问到老环境的情况。
结论:应用跨云迁移,看似一件非常简单的事情,实则充满了很多未知的问题。这些问题可能是公有云产品造成的可能是业务代码造成的。
但无论是什么原因,新钛云服作为一家专业的云管理服务商都能很好的处理好这些问题,并在迁移过程中为客户梳理信息,优化架构和运维流程,为客户业务保驾护航。
分享文章:传统业务公有云迁移避坑指南
本文网址:http://www.shufengxianlan.com/qtweb/news12/476812.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联