加餐 | 数据的迁移应该如何做?


在数据库分库分表章节中,我们提到,由于MySQL不像MongoDB那样支持数据的自动分片,所以无论将MySQL拆分多少库表,还是由于存储的瓶颈,不得不增加更多的库表,这个时候你就不得不面临一个问题,如何做数据迁移?

其实实际工作中,不只是对数据库拆分需要做数据迁移,很多场景都需要你给出数据迁移的方案,比如说某一天,你的老板想要将应用从自建机房迁移到云上,无论对那种公司来说都是巨大的工程,所以你需要有完善的迁移方案。

如何平滑地迁移数据库中的数据

数据迁移无非就是从一个库迁移到另一个库,MySQL可以通过主从同步的方式做到数据的准实时复制,也可以通过 mysqldump 工具将源库的数据导出再导入到新库,这有什么复杂的呢?

其实这两种方式都支持单库到单库的迁移,无法支持多苦多表的场景。即使单库也要做到如下:

  1. 在线迁移,也就是迁移的同时,会有新数据的写入
  2. 数据完整性,迁移之后保证新老库的数据完全一致
  3. 迁移过程需要做到可以回滚,这样一旦出现问题,不对原有系统造成影响

一一般来说,我们有两种迁移方案:

“双写”方案

1、单库的话直接配置为源库的从库来同步数据。分库分表的话 可以借助第三方的binlog同步工具,然后按照分库分表的逻辑分布到新的库表

2、同时我们的代码也要改造,在数据写入的时候不仅要写新的库,也要写老的库。当然这里也可以是异步的。

3、校验数据,根据数据量的大小可以制定不同的校验方案

4、一切顺利 就可以切换到新库

其中最容易出问题的步骤就是数据校验的工作,所以我建议你在未开始迁移数据之前先写好数据校验的工具或者脚本,在测试环境上测试充分之后,再开始正式的数据迁移。

展开阅读全文

页面更新:2024-03-19

标签:在线   数据   主从   平滑   瓶颈   机房   脚本   完整性   场景   方式   数据库   测试   方案   工具   加餐   工作   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top