KunlunDB指导手册(三)之数据导入&同步

一、环境 从原生PostgreSQL数据库迁移业务数据到kunlunDB集群。由于kunlunDB兼容postgreSQL协议,因此可以直接支持Pg数据导入导出工具:pg_dump和pg_restore。
但由于kunlunDB目前兼容的PostgreSQL版本是11.5,所以对于不一致的版本:较新版本工具可以兼容较旧版本,较旧版本工具不支持较新版本。
对于在线实时数据同步,kunlunDB支持Oracle GoldenGate,可以使用Oracle GoldenGate将数据从PostgreSQL或其他数据库(Oracle/SQL Server/MySQL等)同步到KunlunDB。
二、数据导出导入步骤 由于KunlunDB在插入数据时要求表存在主键,为确保数据迁移的成功,要求在原生PostgrSQL数据库导出数据的过程中分两步执行(第一步,导出数据结构, 第二步,导出实际数据)。
在恢复过程:先恢复数据结构,在导入数据,下面将分两个场景演示具体操作指令。
2.1 以表为单位
2.1.1 导出表结构

pg_dump -h 192.168.0.142 -p 5432 -tcustomer1_3 -t customer1_4postgres-s>customer1_34str.sql(-s 参数是只倒表结构)

2.1.2 导出表数据
pg_dump -h 192.168.0.142 -p 5432 -tcustomer1_3 -t customer1_4postgres-a >customer1_34_data.sq

2.1.3 恢复表结构
psql --dbname=bktest3--host=192.168.0.142--port=5401 -U abc -fcustomer1_34str.sql

2.1.4 恢复表数据
psql --dbname=bktest3--host=192.168.0.142--port=5401 -U abc -fcustomer1_34_data.sql

2.2 以数据库为单位
2.2.1 导出全库的表结构
pg_dump -d postgres -U postgres-s>postgres_str.sql

2.2.2 导出全库的表数据
pg_dump -d postgres -U postgres-a>postgres_data.sql

也可以dump及tar格式导出,减少空间及提高性能:
pg_dump -d postgres -U postgres-a-Fc >postgres_data.dump (尺寸最小) pg_dump -d postgres -U postgres-a-Ft >postgres_data.tar

2.2.3 恢复全库表结构
psql --dbname=bktest2--host=192.168.0.142--port=5401 -U abc -fpostgres_str.sql

2.2.4 恢复全库表数据
psql --dbname=bktest2--host=192.168.0.142--port=5401 -U abc -fpostgres_data.sql

如果是dump格式导出的数据,需要使用pg_restore:
pg_restore -h 192.168.0.142 -p 5401 -U abc-d bktest2 postgres_data.dump

【KunlunDB指导手册(三)之数据导入&同步】(pg_restore只能向下兼容,高版本的pg_dump导出的文件不能用低版本pg_restore恢复)
2.3 Oracle GoldenGate实时同步PostgreSQL到KunlunDB
2.3.1 安装部署Oracle GoldenGate 需要下载安装OGG for PostgreSql微服务版本,oggs_Linux_x64_PostgreSQL_services_shiphome版本。根据官方安装手册安装即可。
安装部署架构如下图:
KunlunDB指导手册(三)之数据导入&同步
文章图片

2.3.2 配置PostgreSQL数据源及KunlunDB目标 源数据库信息:ip地址 192.168.0.10,复制用户:postgres数据库名称:PGSOUR
目标数据库信息:ip地址 192.168.0.12,复制用户:postgres数据库名称:Kunlundb
设置数据库参数:
alter system set wal_level='logical'; alter system set max_replication_slots = 20;

编写OGG odbc.ini文件:
[ODBC Data Sources] PGDSN1=DataDirect 14 PostgreSQL Wire Protocol PGDSN2=DataDirect 11 PostgreSQL Wire Protocol[ODBC] IANAAppCodePage=106 InstallDir=/ogg21/ogg_ma [PGDSN1] Driver=/ogg21/ogg_ma/lib/GGpsql25.so Description=DataDirect 14 PostgreSQL Wire Protocol Database=PGSOUR HostName=192.168.0.10 PortNumber=5432 LogonID=postgres Password=Kunluntest[PGDSN2] Driver=/ogg21/ogg_ma/lib/GGpsql25.so Description=DataDirect 11 PostgreSQL Wire Protocol Database=KunlunDB HostName=192.168.0.12 PortNumber=5401 LogonID=postgres Password=Kunluntest

2.3.3 配置复制环境 创建身份证明及检查点表:
登录:
KunlunDB指导手册(三)之数据导入&同步
文章图片

KunlunDB指导手册(三)之数据导入&同步
文章图片

KunlunDB指导手册(三)之数据导入&同步
文章图片

2.3.4 配置&启动抽取进程 KunlunDB指导手册(三)之数据导入&同步
文章图片

抽取进程配置文件:
extract ext1 SETENV(PGCLIENTENCODING = "UTF8" ) SETENV(ODBCINI="/ogg21/ogg_ma/odbc.ini" ) SOURCEDB PGDSN1 USERIDALIAS PG1, DOMAIN OGGMA exttrail ./dirdat/e1 IGNOREREPLICATES TRANLOGOPTIONS FILTERTABLE ogg.ckpt table public.*;

2.3.5 配置&启动复制进程 KunlunDB指导手册(三)之数据导入&同步
文章图片

复制进程配置文件:
replicat rep1 SETENV(PGCLIENTENCODING = "UTF8" ) SETENV(ODBCINI="/ogg21/ogg_ma/odbc.ini" ) SETENV(NLS_LANG="AMERICAN_AMERICA.AL32UTF8") TARGETDB PGDSN2 USERIDALIAS PG2, DOMAIN OGGMA map public.*, target public.*;

2.3.6 执行同步及检查同步 可以在源数据库插入数据,在目标数据库检查结果:
KunlunDB指导手册(三)之数据导入&同步
文章图片

也可以通过管理界面查看复制进度 :
KunlunDB指导手册(三)之数据导入&同步
文章图片

2.3.7 压力测试 压力测试包含两部分内容(由于测试的虚拟机环境机器配置低,压测的数据量比较小)
源端通过sysbench对postgresql实时数据插入, 检查目标端kunlundb数据的更新。
目标数据库在一定的负载下运行。
源端执行数据加载:
sysbench oltp_read_write --table-size=100000 --tables=10--pgsql-host=192.168.0.10--pgsql-port=5432--pgsql-user=postgres--pgsql-password=Kunluntest --pgsql-db=PGSOURE--db-ps-mode=disable--threads=1 --db-driver=pgsqlprepare

目标数据库执行压测脚本:
sysbench oltp_read_write --table-size=100 --tables=10--pgsql-host=192.168.0.12--pgsql-port=5401--pgsql-user=abc--pgsql-password=abc --pgsql-db=postgres--db-ps-mode=disable--threads=10 --db-driver=pgsql--time=600 run

目标端检查数据同步情况:
select count(*) from sbtest10; count ------- 100000 (1 row)

测试结论:通过
KunlunDB项目已开源 【GitHub:】
https://github.com/zettadb
【Gitee:】
https://gitee.com/zettadb
END

    推荐阅读