写点什么

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

作者:KunlunBase
  • 2022 年 7 月 12 日
  • 本文字数:2737 字

    阅读完需:约 9 分钟

一、环境

从原生 PostgreSQL 数据库迁移业务数据到 KunlunBase 集群。由于 KunlunBase 兼容 postgreSQL 协议,因此可以直接支持 Pg 数据导入导出工具:pg_dump 和 pg_restore。


但由于 KunlunBase 目前兼容的 PostgreSQL 版本是 11.5,所以对于不一致的版本:较新版本工具可以兼容较旧版本,较旧版本工具不支持较新版本。


对于在线实时数据同步,KunlunBase 支持 Oracle GoldenGate,可以使用 Oracle GoldenGate 将数据从 PostgreSQL 或其他数据库(Oracle/SQL Server/MySQL 等)同步到 KunlunBase。

二、数据导出导入步骤

由于 KunlunBase 在插入数据时要求表存在主键,为确保数据迁移的成功,要求在原生 PostgrSQL 数据库导出数据的过程中分两步执行(第一步,导出数据结构, 第二步,导出实际数据)。


在恢复过程:先恢复数据结构,在导入数据,下面将分两个场景演示具体操作指令。

2.1 以表为单位

2.1.1 导出表结构

pg_dump -h 192.168.0.142 -p 5432 -tcustomer1_3 -t customer1_4  postgres-s>customer1_34str.sql  (-s 参数是只倒表结构)
复制代码

2.1.2 导出表数据

pg_dump -h 192.168.0.142 -p 5432 -tcustomer1_3 -t customer1_4  postgres  -a >customer1_34_data.sq
复制代码

2.1.3 恢复表结构

psql --dbname=bktest3  --host=192.168.0.142  --port=5401 -U abc -f  customer1_34str.sql
复制代码

2.1.4 恢复表数据

psql --dbname=bktest3  --host=192.168.0.142  --port=5401 -U abc -f  customer1_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 -f  postgres_str.sql
复制代码

2.2.4 恢复全库表数据

psql --dbname=bktest2  --host=192.168.0.142  --port=5401 -U abc -f  postgres_data.sql
复制代码


如果是 dump 格式导出的数据,需要使用 pg_restore:


pg_restore -h 192.168.0.142 -p 5401 -U abc-d bktest2 postgres_data.dump
复制代码


(pg_restore 只能向下兼容,高版本的 pg_dump 导出的文件不能用低版本 pg_restore 恢复)

2.3 Oracle GoldenGate 实时同步 PostgreSQL 到 KunlunBase

2.3.1 安装部署 Oracle GoldenGate

需要下载安装 OGG for PostgreSql 微服务版本,oggs_Linux_x64_PostgreSQL_services_shiphome 版本。根据官方安装手册安装即可。


安装部署架构如下图:


2.3.2 配置 PostgreSQL 数据源及 KunlunBase 目标

源数据库信息: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=PGSOURHostName=192.168.0.10PortNumber=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 配置复制环境

创建身份证明及检查点表:


登录:




2.3.4 配置 &启动抽取进程


抽取进程配置文件:


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 配置 &启动复制进程


复制进程配置文件:


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 执行同步及检查同步

可以在源数据库插入数据,在目标数据库检查结果:



也可以通过管理界面查看复制进度 :


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=pgsql   prepare
复制代码


目标数据库执行压测脚本:


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)
复制代码


测试结论:通过

END

昆仑数据库是一个 HTAP NewSQL 分布式数据库管理系统,可以满足用户对海量关系数据的存储管理和利用的全方位需求。应用开发者和 DBA 的使用昆仑数据库的体验与单机 MySQL 和单机 PostgreSQL 几乎完全相同,因为首先昆仑数据库支持 PostgreSQL 和 MySQL 双协议,支持标准 SQL:2011 的 DML 语法和功能以及 PostgreSQL 和 MySQL 对标准 SQL 的扩展。同时,昆仑数据库集群支持水平弹性扩容,数据自动拆分,分布式事务处理和分布式查询处理,健壮的容错容灾能力,完善直观的监测分析告警能力,集群数据备份和恢复等 常用的 DBA 数据管理和操作。所有这些功能无需任何应用系统侧的编码工作,也无需 DBA 人工介入,不停服不影响业务正常运行。昆仑数据库具备全面的 OLAP 数据分析能力,通过了 TPC-H 和 TPC-DS 标准测试集,可以实时分析最新的业务数据,帮助用户发掘出数据的价值。昆仑数据库支持公有云和私有云环境的部署,可以与 docker,k8s 等云基础设施无缝协作,可以轻松搭建云数据库服务。请访问 http://www.zettadb.com/ 获取更多信息并且下载昆仑数据库软件、文档和资料。KunlunBase 项目已开源

【GitHub:】https://github.com/zettadb

【Gitee:】https://gitee.com/zettadb

发布于: 刚刚阅读数: 3
用户头像

KunlunBase

关注

还未添加个人签名 2022.03.09 加入

还未添加个人简介

评论

发布
暂无评论
KunlunBase指导手册(三)数据导入&同步_国产数据库_KunlunBase_InfoQ写作社区