数据库迁移遇到的问题和解决⽅案
⽬录
本⽂主要讲解数据从⽼库迁移到新库过程中遇到的问题,以及针对这些问题给出的解决⽅案,希望能给你⼀点点启发或者帮助。
⼀⽼库表写收⼝
由于多个业务端的多个服务公⽤⼀个⽼库,且多个服务访问⽼库共⽤⼀套密码。
如何确定只有我们对⽼库的表进⾏写⼊呢?
为了排除还有其他业务端服务直连⽼库,写⽼库的表,我们给表添加了⼀个字段,⽐如是 A,来标识是我们端对表的写⼊。如果不是我们端对表的写⼊,该字段应该是空值。
2022年10月份开两会多长时间为什么⼀定需要确定写收⼝呢?
假设有某个业务端的服务对⽼库的表进⾏写⼊,然后我们进⾏了数据迁移,那新⽼数据库的表的数据将不⼀致,这在业务上⾯是不能忍受的。
⼆平滑迁移数据
我们端这块有4个表,共1亿的数据,需要进⾏迁移。这块的核⼼点是:如何解决迁移数据耗时的问题、如何减少表停写时间对业务测影响问题。
⼀开始我们定的⽅案是 RD 停写,DBA 通过脚本执⾏命令,将历史数据从⽼库直接迁移到新库,整个过程评估预计需要1⼩时,这将意味着需要停写1⼩时,然后将这个结果同步给业务⽅,业务⽅⽆法忍受这个结果。
如何解决迁移数据耗时的问题?
我们使⽤ ALI 的 DTS 对数据进⾏迁移。DTS 能同步历史数据和增量数据。
历史数据是迁移了,那如何做到平滑呢?
我们这块将新库集当做⽼库的从库进⾏数据同步,当我们这块进⾏业务停写的时候、且新库和⽼库的数据⼀致的时候,DBA 将新库集中的⼀台机器升级为主库,其他机器挂载到这个主库,当做这个机器的从库。
三业务影响最⼩
数据迁移过程中,如果能做到对业务⽆感,是最好的。那如何做好对业务影响最⼩呢?
优秀护士演讲稿⾸先,我们通过业务数据进⾏分析,到业务的低⾕。在低⾕进⾏数据迁移操作,对业务影响⼩。新品上市推广
其次,我们是分钟级别的停写,在停写的时候,我们⼀直是可读的。这个在业务上是可以忍受的。
清代皇帝顺序四增量数据回写
为什么要数据回写呢?
在迁移数据的过程中,由于⼀些团队排期问题,服务读取的还是⽼库,这个时候为了保证其他团队能读取到增量数据,保证业务不受影响,我们这块通过 Databus 对数据进⾏了同步,回写到⽼库。
当然了,我们的期望是只维护新库,所以我们要求其他业务端对读收⼝进⾏了排期,2个⽉之后其他业务端都⾛我们的接⼝,实现了读收⼝。
五迁移回滚⽅案
回滚⽅案在数据迁移过程中不⼀定需要,但是从⼀件事情的完整度来说,还是需要的。针对这块数据迁移,我们需要考虑的是服务回滚、数据库回滚。
服务回滚?
是说服务从读新库切换到读⽼库,这块可以做⼀个数据源动态开关,可以灵活切换访问新⽼数据源。
数据库回滚?
如果是增量数据我们需要将它们从新库同步到⽼库,保证数据的完整性。
六⽼库下线
数据迁移完了就完了?不,我们还需要下线⽼库。
从公司资产⾓度考虑,有了新库,为了降低成本,我们需要将⽼库下线。如何查高考成绩
怎么查四级成绩从⼀件事情完整性来看,我们迁移数据只是完成了90%,剩下的10% 我们需要对⽼库进⾏下线处理。
七事前、事中、事后、我们应该做什么呢
事前:我们应该给公司的研发和业务发送邮件,邮件的主题、涉及范围、影响功能、数据迁移时间点、负责⼈、迁移⽅案、以及钉钉沟通。
事中:我们研发应该和各个业务端确认⽅案的可⾏性、与 DBA、QA 建⽴紧密的沟通,随时同步⽅案进度、开发进度、迁移进度。
事后:我们研发应该发邮件告知研发和业务、BI、⼤数据等团队,已经完成数据库的迁移,及时同步迁移结果。钉钉⾥⾯也需要同步。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论