大数跨境
0
0

告别2024拥抱2025-100亿条数据中台业务数据迁移总结

告别2024拥抱2025-100亿条数据中台业务数据迁移总结 数据库运维之道
2024-12-31
0
导读:我司帮忙客户完成多个业务子系统数据迁移,此次迁移涉及业务数据条目超过100亿条,百张业务表。
梦虽遥,追则能达;愿虽艰,持则可圆。让我们满怀希望,迎接新的一年。祝祖国时和岁丰、繁荣昌盛!祝大家所愿皆所成,多喜乐、长安宁!
随着业务数据量快速增长,数据中台集群出现性能瓶颈。为了更好满足业务灵活实时查询需要,客户建设新的数据中台集群,既满足业务需求,也满足两地双中心的高可用要求。我司负责将旧的数据中台数据迁移至新的数据中台,本次只迁移某个业务子系统,业务数据条目超过100亿条,百张业务表
一、数据仓库总体架构
数据仓库总体架构,包括上层的协调节点CN、GTM事务管理器、中间的数据交互总线FN、以及下方的数据节点DN。采用MPP架构,其特性是 share-nothing,数据分散在多个DN上,按照不同的分布键分布,并且不同的表可以自定义不同的分布键。如果CN 收到了一条查询,它会将这个任务分散到多个DN上并行执行,从而提高执行效率,最后CN获得DN 并行执行的最后结果,汇总之后再返回给客户端。

CN 节点:CN节点不存储业务数据,只存储数据字典,负责生成、分发SQL执行计划到每个DN节点,同时负责与客户端的交互及权限认证。

DN 节点:DN节点负责存储业务数据并执行由CN节点分发的SQL语句,同时为了保证每一个DN服务在同一个性能水平上,每一个DN 节点机器有相同的资源配置,扩容时不作机型的改变。

二、多种迁移方式组合
序号
迁移方式
迁移速度
场景
1
db_link
速度最慢
小表数据迁移
2
pg_dump
速度一般
表结构迁移以及小表迁移
3
copy
速度次快
大表迁移/分区表迁移
4
tdx
速度最快
大表迁移/分区表迁移,导出文件不需要拷贝
三、迁移过程规划
1、基于业务子系统梳理数据库信息、用户信息和业务表清单,包括表数据量、表结构、静态/动态表、分区表与非分区表、以及表分布键信息。
2、评估目标集群资源情况,源和目标服务器之间的网络环境以及中转空间情况。
3、数据迁移模拟测试,包括迁移方式、迁移速度、异常处理、业务验证等,评估迁移时间窗口。
4、数据库集群状态观察,包括主从同步状态、磁盘空间、备份任务等。
5、正式数据迁移,多种方式组合,实现最快速度迁移。
6、业务系统功能验证,以及运行保障。
四、tdx迁移方式总结
tdx迁移方式实现多张大表高效迁移,学习难度不大。

在源库配置tdx环境

1、查看dn存储节点的进程,获取数据目录和安装路径信息

ps -ef|grep dntbase    54437     1  0 Oct25 ?        01:20:33 /data1/tbase/user_1/tdata_14/tbase_v3_01_8/3.15.5.8/install/tbase_pgxz/bin/postgres --datanode -D /data1/tbase/user_1/tdata_14/tbase_v3_01_8/data/dn008 -i

2、基于上述结果,设置环境变量。

su - tbaseexport PATH=/data1/tbase/user_1/tdata_14/tbase_v3_01_8/3.15.5.8/install/tbase_pgxz/bin:$PATH;export LD_LIBRARY_PATH=/data1/tbase/user_1/tdata_14/tbase_v3_01_8/3.15.5.8/install/tbase_pgxz/lib

3、登录cn节点查看数据库版本

psql -h 源库IP -11345 -U tbase -d postgrespostgres=select tbase_version();  tbase_version  ----------------- TBase_V3.15.5.8

4、在源库服务器检查8088端口是否被占用,并启用tdx服务。服务器尽量腾出较多磁盘空间。

netstat -antp|grep 8088nohup tdx -d /data1/backup/tbase_v3_01_8 -p 8088 -n 32 -l /data1/backup/tbase_v3_01_8/tdx.log &
[tbase@mpp tbase_v3_01_8]$ ps -ef|grep tdxtbase    75869 59190  0 17:39 pts/1    00:00:00 tdx -d /data1/backup/tbase_v3_01_8 -p 8088 -n 32 -l /data1/backup/tbase_v3_01_8/tdx.log

导出业务表数据

1、登录源库检查是否安装exttable_fdw扩展组件

psql -h 源库IP -p 11345 -U tbase -d postgresots=# \dx exttable_fdw                        List of installed extensions     Name     | Version | Schema |                Description                --------------+---------+--------+------------------------------------------- exttable_fdw | 1.2     | public | foreign-data wrapper for flat file access(1 row)

2、如果没有,则创建新组件

create extension exttable_fdw ; 

3、基于业务表结构,创建外部扩展表,脚本中写好tdx服务信息。

模板样例:create writable external table xxx (like xxx ) location ('tdx://172.16.0.30:8088/t1.csv') FORMAT 'text' (DELIMITER E'\\x0E'  NULL '$^&'  EOL E'\\x0F\\n');

由于此次迁移涉及上百张表,因此可以excel公式批量生成相关的建表脚本。

create writable external table tdx_业务表1 (like 业务表1 ) location ('tdx://源库服务器:8088/业务表1_20241216.csv') FORMAT 'text' (DELIMITER E'\x0E'  NULL '$^&'  EOL E'\x0F\n');

4、写入外部表,可以采用shell脚本批量进行并行写入。

insert into tdx_业务表1 select * from 业务表1;-rw------- 1 tbase tbase 3.6T Dec 16 21:32 业务表1_20241216.csvINSERT 0 5678705239

5、导出源表结构信息

pg_dump --public -h 源库CN节点IP -11345 -U 用户 库名 -t 业务表1 > /data1/backup/tbase_v3_01_8/ddl_业务表1.sql

导入业务表数据

1、基于导出的ddl_业务表1.sql文件,在目标库创建新的数据库、新的用户、以及创建业务表。注意只运行创建表和字段脚本,主键和索引需要等表数据迁入后再创建。

2、登录目标数据库,执行创建表脚本。

su - tbaseexport PATH=/data/tbase/user_1/tdata_00/restruct_9/3.16.4.5/install/tbase_pgxz/bin:$PATH;export LD_LIBRARY_PATH=/data/tbase/user_1/tdata_00/restruct_9/3.16.4.5/install/tbase_pgxz/libpsql -h 目录库CN节点 -p 11300 -U 用户名 -d 库名

3、查看表结构信息

\d+ 业务表1

4、将目标版本的安装文件拷贝到源库,即3.16.4.5_tbase_pgxz.tar.gz(注意cpu架构保持一致)。

cd /data1/tbase/user_1/tbase_pgxz316tar -zxvf 3.16.4.5_tbase_pgxz.tar.gz

检查权限是否为tbase:tbase

5、设置环境变量

export PATH=/data1/tbase/user_1/tbase_pgxz316/tbase_pgxz/bin:$PATH;export LD_LIBRARY_PATH=/data1/tbase/user_1/tbase_pgxz316/tbase_pgxz/lib
cd /data1/tbase/user_1/tbase_pgxz316nohup tdx -d /data1/backup/tbase_v3_01_8 -p 8089 -n 32 -l /data1/backup/tbase_v3_01_8/tdx_3.16.log & 
ps -ef|grep tdx tbase    41687 39566  0 19:45 pts/3    00:00:00 tdx -d /data1/backup/tbase_v3_01_8 -p 8089 -n 32 -l /data1/backup/tbase_v3_01_8/tdx_3.16.logtbase    75869 59190 12 17:39 pts/1    00:15:15 tdx -d /data1/backup/tbase_v3_01_8 -p 8088 -n 32 -l /data1/backup/tbase_v3_01_8/tdx.log

6、检查目标库是否有安装扩展组件

\dx exttable_fdw

如果没有,则创建新组件

create extension exttable_fdw ; 

7、创建外部扩展表

[tbase@localhost ~]$ psql -h 目标库CN节点 -11300 -U tbase -d ims_ana创建目标外部表create external table tdx_业务表1 (like 业务表1 ) location ('tdx://源库服务器:8089/业务表1_20241216.csv') FORMAT 'text' (DELIMITER E'\x0E'  NULL '$^&'  EOL E'\x0F\n');

8、写入表数据

insert into fee_list_d select * from tdx_fee_list_d;

看到这边,大家有没有发现,数据从源库导出后,直接导入目标库,不需要把文件拷贝到目标服务器。这就是tdx迁移方式的一个大优势。

创建主键和索引

1、检查源和目标库的导出导入记录数据量是否一致。

2、给业务表创建相应主键和索引信息。

3、删除外部扩展表。

4、清理导出与备份出来的临时文件。

五、近期热门文章:
👉达梦数据库DM8小版本升级案例分享
👉如何利用RMAN Debug命令来诊断问题
👉达梦数据守护集群异常脑裂处理案例总结
👉Linux运维技能-du命令常见用例总结
👉Oracle 10g 备份恢复及容灾部署技术问题总结
👉TiDB 7.5 实验测试环境搭建及小插曲处理
👉DBA实验手册第3讲 运用bbed工具恢复delete误删除的数据
👉DBA实验手册第5讲 运用bbed工具恢复truncate表及反向构造段头块
全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~

【声明】内容源于网络
0
0
数据库运维之道
数据库领域原创技术号,专注于Oracle、MySQL、TDSQL、HotDB、TiDB、达梦等数据库研究,深入数据库技术原理,分布式数据库,开源数据库,国产数据库,前沿数据库技术。
内容 50
粉丝 0
数据库运维之道 数据库领域原创技术号,专注于Oracle、MySQL、TDSQL、HotDB、TiDB、达梦等数据库研究,深入数据库技术原理,分布式数据库,开源数据库,国产数据库,前沿数据库技术。
总阅读28
粉丝0
内容50