热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

对于在线实时数据同步,kunlunDB支持OracleGoldenGate,可以使用OracleGoldenGate将数据从PostgreSQL或其他数据库(OracleSQLSe

一、环境

从原生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版本。根据官方安装手册安装即可。

安装部署架构如下图:

image.png


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=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 配置复制环境

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

登录:

image.png

image.png

image.png


2.3.4 配置&启动抽取进程

image.png

抽取进程配置文件:

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

image.png

复制进程配置文件:

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

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

image.png

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

image.png


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)

测试结论:通过

点击阅读原文

推荐阅读

KunlunBase架构介绍

KunlunBase技术优势介绍

KunlunBase技术特点介绍

KunlunBase集群基本概念介绍


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.kunlunbase.com/ 获取更多信息并且下载昆仑数据库软件、文档和资料。

KunlunBase项目已开源

【GitHub:】

https://github.com/zettadb

【Gitee:】

https://gitee.com/zettadb




推荐阅读
author-avatar
妮子爱笨蛋
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有