首页 > 数据库 > 国内数据库 > 南大通用GBase 8a数据库迁移的几种方法探讨
如果现有集群需要扩容,但环境不允许必须新建一套集群,或者需要一套对等测试集群进行业务验证,或者备用集群做容灾,此时都需要数据库的迁移,本文对几种能想到的方法进行探讨。
本文讨论的是数据全部迁移的情况,对于只有部分表迁移的,不在本文讨论范围。
新集群一般与老集接近,或者要好一些。
数据量大时,比如几百T,几个P的数据,两套集群之间的网络极有可能成为迁移的瓶颈,要提前注意规避。
一次性迁移
非一次性迁移
GBase 8a支持物理层的备份还原gcrman,可以对整个实例做全量和增量备份
GBase 8a表级全量和增量 备份还原功能测试gcrcman.py)
此方案会将数据以文件的形式备份到指定目录,所以对磁盘空间有要求。
还原时,要求集群必须与原始集群完全一样,版本,节点数,主备策略,IP等。
简单。
通过select into outfile将数据导出到文件里,然后新集群加载入库。
导出文件以平文本文件的形式保存,所以对磁盘空间有要求。
新集群可以是任意架构,只要空间能保存的下即可。IP可以不同。
复杂。需要人工编写每个表的导出和导入,且要关注空间可用量,已经并发控制。
将需要同步表写入配置文件,由工具进行自动同步,包括全量和增量。改工具常用于主备集群的同步。
注意,如果目标表存在数据,且数据与原始表完全不同,会被覆盖掉。
GBase 8a跨集群表级同步工具gcluster_rsynctool使用例子
同步工具无中间文件落地,无需额外的磁盘空间。
新集群必须和老集群的主分片数一致,版本一致,且网络必须能直接互通。IP可以不同。
简单
将集群文件全部复制到新集群上,如果IP不同则手工更改IP相关配置,然后启动新集群。
比较难区分主副本,理论上只需要复制主就可以了,但实际操作时复杂度很高,基本是全复制,所以适合少量数据的情况。
如果2台集群互通,可以不需要中间磁盘空间。
新集群必须和老集群完全一样。IP最好一样,否则需要先手工改IP,才能启动集群。
复杂
在新集群部署GBase 8a的透明网关,然后通过 insert 本地表 select 远程表@网关 的形式,迁移数据。
由于是逻辑层复制,比其它物理级方案性能预计差2-5倍。不建议超大的表做这个操作,且不支持增量。
如果2台集群互通,不需要中间磁盘空间。
无要求
简单。
| 方案 | 额外空间 | 集群架构 | IP | 操作难度 | 备注 |
|---|---|---|---|---|---|
| 1、备份恢复 | 要求 | 完全相同 | 完全相同 | 简单 | 标准工具,支持增量 |
| 2、导出导入 | 要求 | 无要求 | 无要求 | 复杂 | 性能好,但需要落地,调度复杂 |
| 3、同步工具 | 不要求 | 主分片数量相同 | 无要求 | 简单 | 性能好,支持增量,简单易用 |
| 4、物理文件复制 | 不要求 | 完全相同 | 完全相同 | 复杂 | 不好区分副本,建议少量数据时使用 |
| 4、DBLink | 不要求 | 无要求 | 无要求 | 中等 | 逻辑层复制性能差 |
另外一次性迁移,结构要求相同的方案,可以考虑先搭建相同结构的集群,待迁移完毕后再扩容。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69979120/viewspace-3016893/ ,如需转载,请注明出处,否则将追究法律责任。