
CN 节点:CN节点不存储业务数据,只存储数据字典,负责生成、分发SQL执行计划到每个DN节点,同时负责与客户端的交互及权限认证。
DN 节点:DN节点负责存储业务数据并执行由CN节点分发的SQL语句,同时为了保证每一个DN服务在同一个性能水平上,每一个DN 节点机器有相同的资源配置,扩容时不作机型的改变。
在源库配置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 -p 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_fdwList of installed extensionsName | 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 -s -n public -h 源库CN节点IP -p 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/libcd /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 tdxtbase 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节点 -p 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、清理导出与备份出来的临时文件。




