GBase 8a数据库迁移的几种方法探讨

背景

本文讨论的是数据全部迁移的情况,对于只有部分表迁移的,不在本文讨论范围。

硬件

新集群一般与老集接近,或者要好一些。

数据量大时,比如几百T,几个P的数据,两套集群之间的网络极有可能成为迁移的瓶颈,要提前注意规避。

业务影响

一次性迁移

  • 希望时间越短越好,性能要高
  • 表有可能有优先级,比如历史表有可能允许拖后迁移,优先迁移的表已经可以支撑业务正常运行。

非一次性迁移

  • 要支持增量同步
  • 要运行很多次,操作难度要很低

迁移方案1-备份还原

GBase 8a支持物理层的备份还原gcrman,可以对整个实例做全量和增量备份

参考

GBase 8a表级全量和增量备份还原功能测试gcrcman.py

空间要求

此方案会将数据以文件的形式备份到指定目录,所以对磁盘空间有要求。

集群结构要求

还原时,要求集群必须与原始集群完全一样,版本,节点数,主备策略,IP等。

操作要求

简单。

迁移方案2-导出导入

通过select into outfile将数据导出到文件里,然后新集群加载入库。

参考

空间要求

导出文件以平文本文件的形式保存,所以对磁盘空间有要求。

集群结构要求

新集群可以是任意架构,只要空间能保存的下即可。IP可以不同。

操作要求

复杂。需要人工编写每个表的导出和导入,且要关注空间可用量,已经并发控制。

迁移方案3-通过GBase同步工具gcluster_rsynctool

将需要同步表写入配置文件,由工具进行自动同步,包括全量和增量。改工具常用于主备集群的同步。

注意,如果目标表存在数据,且数据与原始表完全不同,会被覆盖掉。

参考

GBase 8a跨集群表级同步工具gcluster_rsynctool使用例子

空间要求

同步工具无中间文件落地,无需额外的磁盘空间。

集群结构要求

新集群必须和老集群的主分片数一致,版本一致,且网络必须能直接互通。IP可以不同。

操作要求

简单

迁移方案4-物理文件远程复制

将集群文件全部复制到新集群上,如果IP不同则手工更改IP相关配置,然后启动新集群。

比较难区分主副本,理论上只需要复制主就可以了,但实际操作时复杂度很高,基本是全复制,所以适合少量数据的情况。

参考

GBase 8a 通过物理文件操作实现表备份还原的方法

空间要求

如果2台集群互通,可以不需要中间磁盘空间。

集群结构要求

新集群必须和老集群完全一样。IP最好一样,否则需要先手工改IP,才能启动集群。

操作要求

复杂

迁移方案5-DBLink 表级insert select

在新集群部署GBase 8a的透明网关,然后通过 insert 本地表 select 远程表@网关 的形式,迁移数据。

由于是逻辑层复制,比其它物理级方案性能预计差2-5倍。不建议超大的表做这个操作,且不支持增量。

空间要求

如果2台集群互通,不需要中间磁盘空间。

集群结构要求

无要求

操作要求

简单。

总结

方案 额外空间 集群架构 IP 操作难度 备注
1、备份恢复 要求 完全相同 完全相同 简单 标准工具,支持增量
2、导出导入 要求 无要求 无要求 复杂 性能好,但需要落地,调度复杂
3、同步工具 不要求 主分片数量相同 无要求 简单 性能好,支持增量,简单易用
4、物理文件复制 不要求 完全相同 完全相同 复杂 不好区分副本,建议少量数据时使用
4、DBLink 不要求 无要求 无要求 中等 逻辑层复制性能差

另外一次性迁移,结构要求相同的方案,可以考虑先搭建相同结构的集群,待迁移完毕后再扩容。

原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/317888.html

(0)
上一篇 1天前
下一篇 1天前

相关推荐

发表回复

登录后才能评论