openGauss新特性 | DataKit支持PostgreSQL到openGauss的迁移能力

Postgresql-\>openGauss迁移工具debezium-connector-postgres

可获得性

本特性自openGauss 7.0.0-RC1版本开始引入。

特性简介

debezium-connector-postgres工具是一个基于Java语言的Postgresql到openGauss的复制工具。该工具提供了初始全量数据及对象(视图、触发器、函数、存储过程)和增量数据(DML)的复制能力,可实现数据及对象从Postgresql迁移至openGauss。对于数据的全量迁移,支持Postgresql中各种数据类型的迁移,同时对于Postgresql中的浮点数据类型,包括decimal、numeric、double precision、real数据类型,可保证迁移后数据精度不丢失。对于数据的增量迁移,可以将Postgresql数据迁移期间(包括全量和增量迁移)产生的数据迁移至openGauss端。

客户价值

通过使用debezium-connector-postgres工具,可完成数据从Postgresql搬迁至openGauss数据库。基于sysbench测试模型,2路鲲鹏920 CPU、openEuler操作系统下,Postgresql数据库20张表(无索引)单表数据量在500万以上时,gs_mysync使用20并发迁移数据至openGauss,整体全量迁移性能可达300M/s以上。增量迁移按表回放,针对混合IUD场景,50张表50个线程(insert-30线程,update-10线程,delete-10线程),性能可达3w tps。

特性描述

debezium-connector-postgres工具提供数据全量和增量复制功能,使得数据可以从Postgresql迁移至openGauss数据库。debezium-connector-postgres工具中存储了Postgresql数据类型与openGauss数据类型之间的映射关系,可支持Postgresql中各种数据类型的迁移。

debezium-connector-postgres工具支持在指定版本和架构的系统(包括CentOS7、openEuler20.03、openEuler22.03系统版本,x86_64和aarch64架构)上进行离线安装,无需连接外部网络。

debezium-connector-postgres工具采用debezium connector结构,全量迁移时,source端使用pgjdbc驱动查询postgresql数据库并导出数据至csv文件中,sink端使用ogjdbc驱动将csv文件导入至openGauss数据库。增量迁移时,source端将数据推送至指定topic下,同时sink端配置topics为合并后的topic,用于从kafka抽取数据,从而可保证事务的顺序。数据复制过程中,debezium-connector-postgres工具会针对不同的类型进行相应的转换。

特性约束

- 支持postgresql 9.4以上版本。

- PostgreSQL版本低于10.x,仅支持使用wal2json插件创建逻辑复制槽;

- PostgreSQL版本大于10.x,支持使用wal2json和pgoutput插件创建逻辑复制槽(推荐使用pgoutput插件)。

依赖关系

debezium-connector-postgres工具依赖kafka、zookeeper和schema-registry三方组件。

使用说明

下载依赖

- [kafka](https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/)

  (以kafka_2.13-3.6.1为例)

 wget -c https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/3.6.1/kafka_2.13-3.6.1.tgz  tar -zxf kafka_2.13-3.6.1.tgz 

​​​​​- [confluent community](https://packages.confluent.io/archive/5.5/confluent-community-5.5.1-2.12.zip)

 wget -c  https://packages.confluent.io/archive/5.5/confluent-community-5.5.1-2.12.zipunzip confluent-community-5.5.1-2.12.zip

- [debezium-connector-postgres](https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/tools/replicate-postgresql2openGauss-7.0.0rc1.tar.gz)

 wget -c https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/tools/replicate-postgresql2openGauss-7.0.0rc1.tar.gztar -zxvf replicate-postgresql2openGauss-7.0.0rc1.tar.gz

修改配置文件

默认配置文件的地址均为localhost,若需修改为具体ip,请同步修改下列所有文件中参数涉及localhost的均改为实际ip。

- zookeeper

  配置文件位置:/kafka_2.13-3.6.1/config/zookeeper.properties

  zookeeper的默认端口号为2181,对应参数clientPort=2181。

  若端口冲突,需要修改端口号,则同步修改以下文件对应参数:

  kafka_2.13-3.6.1/config/zookeeper.properties------clientPort=2181kafka_2.13-3.6.1/config/server.properties------zookeeper.connect=localhost:2181confluent-5.5.1/etc/schema-registry/schema-registry.properties------kafkastore.connection.url=localhost:2181

- kafka

  配置文件位置:/kafka_2.13-3.6.1/config/server.properties

  注意topic的分区数必须为1,因此需设置参数num.partitions=1,该参数默认值即为1,因此无需单独修改该参数。

  kafka的默认端口是9092,对应参数listeners=PLAINTEXT://:9092。

  若端口冲突,需要修改端口号,则同步修改以下文件对应参数:

  kafka_2.13-3.6.1/config/server.properties------listeners=PLAINTEXT://:9092confluent-5.5.1/etc/schema-registry/schema-registry.properties------kafkastore.bootstrap.servers=PLAINTEXT://localhost:9092confluent-5.5.1/etc/schema-registry/connect-avro-standalone.properties------bootstrap.servers=localhost:9092confluent-5.5.1/etc/kafka/postgres-source.properties------database.history.kafka.bootstrap.servers=127.0.0.1:9092

- schema-registry​​​​​​​

  配置文件位置:/confluent-5.5.1/etc/schema-registry/schema-registry.properties

  schema-registry的默认端口是8081,对应参数listeners=http://0.0.0.0:8081。

  若端口冲突,需要修改端口号,则同步修改以下文件对应参数:​​​​​​​

  confluent-5.5.1/etc/schema-registry/schema-registry.properties------listeners=http://0.0.0.0:8081confluent-5.5.1/etc/schema-registry/connect-avro-standalone.properties------key.converter.schema.registry.url=http://localhost:8081confluent-5.5.1/etc/schema-registry/connect-avro-standalone.properties------value.converter.schema.registry.url=http://localhost:8081若需查看kafka topic内容,需修改confluent-5.5.1/bin/kafka-avro-console-consumer------DEFAULT_SCHEMA_REGISTRY_URL="--property schema.registry.url=http://192.168.0.219:8081"

- connect-standalone

配置文件位置:/confluent-5.5.1/etc/schema-registry/connect-avro-standalone.properties

注意在plugin.path配置项中增加debezium-connector-postgres所在的路径

若debezium-connector-postgres所在路径为:/data/debezium_kafka/plugin/debezium-connector-postgres

则配置其上一层目录,即plugin.path=share/java,/data/debezium_kafka/plugin

connect-standalone的默认端口是8083,对应参数rest.port=8083。

若端口冲突,需要修改端口号,则同步修改以下文件对应参数:

confluent-5.5.1/etc/schema-registry/connect-avro-standalone.properties------rest.port=8083

- postgres-source.properties

配置文件位置:/confluent-5.5.1/etc/kafka/postgres-source.properties

示例详见[postgres-source.properties](https://gitee.com/opengauss/debezium/blob/master/debezium-connector-postgres/patch/postgres-source.properties)

- postgres-sink.properties

配置文件位置:/confluent-5.5.1/etc/kafka/postgres-sink.properties

示例详见[postgres-sink.properties](https://gitee.com/opengauss/debezium/blob/master/debezium-connector-postgres/patch/postgres-sink.properties)

启动命令

(1)启动zookeeper​​​​​​​

cd kafka_2.13-3.6.1./bin/zookeeper-server-start.sh ./config/zookeeper.properties

(2)启动kafka​​​​​​​

cd kafka_2.13-3.6.1./bin/kafka-server-start.sh ./config/server.properties

(3)注册schema​​​​​​​

cd confluent-5.5.1./bin/schema-registry-start etc/schema-registry/schema-registry.properties

(4)启动kafka-connect source端​​​​​​​

cd confluent-5.5.1./bin/connect-standalone etc/schema-registry/connect-avro-standalone.properties etc/kafka/postgres-source.properties

(5)启动kafka-connect sink端​​​​​​​

cd confluent-5.5.1./bin/connect-standalone etc/schema-registry/connect-avro-standalone-1.properties etc/kafka/postgres-sink.properties

说明:source端和sink端的两个配置文件connect-avro-standalone.properties和connect-avro-standalone-1.properties的差异点在于rest.port参数的不同,默认为8083,即两个文件中设置不同的端口号,即可启动多个kafka-connect,实现sink端和source端独立工作。

步骤(4)和(5)示例source端和sink端分开启动,推荐分开启动方式。两者也可以同时启动,同时启动的命令为:​​​​​​​

cd confluent-5.5.1./bin/connect-standalone etc/schema-registry/connect-avro-standalone.properties etc/kafka/postgres-source.properties etc/kafka/postgres-sink.properties

其他命令:

(1)查看topic​​​​​​​

cd kafka_2.13-3.6.1./bin/kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list

(2)查看topic的信息​​​​​​​

cd kafka_2.13-3.6.1./bin/kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --describe --topic topic_name

(3)查看topic的内容​​​​​​​

cd confluent-5.5.1./bin/kafka-avro-console-consumer --bootstrap-server 127.0.0.1:9092 --topic topic_name --from-beginning

参考文档

debezium-connector-postgres详细说明和使用文档参考:<a href="https://gitee.com/opengauss/debezium/blob/master/README.md#debezium-postgres-connector">debezium-connector-postgres.md</a>

官网资料:https://docs.opengauss.org/zh/docs/5.0.0/docs/DataMigrationGuide/DataMigrationGuide.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/903375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在MySQL Shell里 重启MySQL 8.4实例

前一段时间看到MySQL官方视频的Oracle工程师在mysql shell里面重启mysql实例&#xff0c;感觉这个操作很方便&#xff0c;所以来试试&#xff0c;下面为该工程师的操作截图 1.MySQL Shell 通过root用户连上mysql&#xff0c;shutdown mysql实例 [rootmysql8_3 bin]# mysqlshMy…

truffle

文章目录 truffle目录结构各文件作用在本地测试合约 truffle 项目来自https://github.com/Dapp-Learning-DAO/Dapp-Learning/blob/main/basic/04-web3js-truffle/README-CN.md Truffle 是基于 Solidity 语言的一套开发框架&#xff0c;它简化了去中心化应用&#xff08;Dapp&…

SpringCloud核心组件Eureka菜鸟教程

关于Spring Cloud Eureka的核心概念 Eureka 是 Netflix 开源的一款基于 REST 的服务发现工具&#xff0c;主要用于中间层服务器的云端负载均衡。它通过维护一个服务注册表来实现服务之间的通信1。在 Spring Cloud 中&#xff0c;Eureka 提供了一个高可用的服务注册与发现机制&a…

职业教育新形态数字教材的建设与应用:重构教育生态的数字化革命

教育部新时代职业学校名师(名匠)名校长培养计划专题 四川省第四批职业学校名师(名匠)培养计划专题 在某职业院校的智能制造课堂上&#xff0c;学生佩戴VR设备&#xff0c;通过数字教材中的虚拟工厂完成设备装配训练&#xff0c;系统实时生成操作评分与改进建议。这一场景折射出…

基于Python的携程国际机票价格抓取与分析

一、项目背景与目标 携程作为中国领先的在线旅行服务平台&#xff0c;提供了丰富的机票预订服务。其国际机票价格受多种因素影响&#xff0c;包括季节、节假日、航班时刻等。通过抓取携程国际机票价格数据&#xff0c;我们可以进行价格趋势分析、性价比评估以及旅行规划建议等…

Windows 图形显示驱动开发-初始化WDDM 1.2 和 PnP

(WDDM) 1.2 及更高版本显示微型端口驱动程序的所有 Windows 显示驱动程序都必须支持以下行为&#xff0c;以响应即插即用 (PnP) 基础结构启动和停止请求。 根据驱动程序返回成功或失败代码&#xff0c;或者系统硬件是基于基本输入/输出系统 (BIOS) 还是统一可扩展固件接口 (UEF…

【1区SCI】Fusion entropy融合熵,多尺度,复合多尺度、时移多尺度、层次 + 故障识别、诊断-matlab代码

引言 2024年9月&#xff0c;研究者在数学领域国际顶级SCI期刊《Chaos, Solitons & Fractals》&#xff08;JCR 1区&#xff0c;中科院1区 Top&#xff09;上以“Fusion entropy and its spatial post-multiscale version: Methodology and application”为题发表最新科学研…

高并发架构设计之缓存

一、引言 缓存技术作为高并发架构设计的基石之一&#xff0c;通过数据暂存和快速访问机制&#xff0c;在提升系统性能、降低后端负载方面发挥着不可替代的作用。优秀的缓存设计能够将系统吞吐量提升数个数量级&#xff0c;将响应时间从秒级降至毫秒级&#xff0c;甚至成为系统…

Unity AI-使用Ollama本地大语言模型运行框架运行本地Deepseek等模型实现聊天对话(一)

一、Ollama介绍 官方网页&#xff1a;Ollama官方网址 中文文档参考&#xff1a;Ollama中文文档 相关教程&#xff1a;Ollama教程 Ollama 是一个开源的工具&#xff0c;旨在简化大型语言模型&#xff08;LLM&#xff09;在本地计算机上的运行和管理。它允许用户无需复杂的配置…

Docker Python 镜像使用指南

1. 使用 Python 镜像创建容器 docker run -itd -v /data:/data python:latest 作用&#xff1a;创建一个基于 python:latest 镜像的容器&#xff0c;并后台运行。 参数说明&#xff1a; -itd&#xff1a;交互式后台运行&#xff08;-i 交互模式&#xff0c;-t 分配伪终端&…

matlab中Simscape的调用-入门

Simscape 是由 MathWorks 公司开发的一款基于物理建模的仿真工具&#xff0c;它建立在 MATLAB/Simulink 平台之上&#xff0c;专门用于建模和仿真多领域物理系统。 主要特点 多领域建模&#xff1a;Simscape 提供了丰富的物理元件库&#xff0c;涵盖了机械、电气、液压、气动…

Flowable7.x学习笔记(十三)查看部署流程图

前言 Flowable 的流程图是 Flowable Modeler 或 Process Editor 中&#xff0c;使用拖拽和属性面板基于 BPMN 2.0 元素&#xff08;如任务、网关、事件、序列流等&#xff09;渲染出的业务流程图形界面​。 一、将图形导出可查看的作用 ① 可视化建模 帮助业务分析师和开发者…

Bootstrap 模态框

Bootstrap 模态框 Bootstrap 模态框&#xff08;Modal&#xff09;是 Bootstrap 框架中的一个组件&#xff0c;它允许你在一个页面中创建一个模态对话框&#xff0c;用于显示内容、表单、图像或其他信息。模态框通常覆盖在当前页面上&#xff0c;提供了一种不离开当前页面的交…

python-69-基于graphviz可视化软件生成流程图

文章目录 1 Graphviz可视化软件1.1 graphviz简介1.2 安装部署2 基于python示例应用2.1 基本示例2.2 解决中文显示乱码2.3 显示多个输出边2.4 显示输出引脚名称2.5 从左至右显示布局2.6 设置节点为方形3 参考附录1 Graphviz可视化软件 1.1 graphviz简介 Graphviz(Graph Visua…

AJAX 介绍

一、什么是AJAX ? AJAX 是 异步的 JavaScript 和 XML&#xff08;Asynchronous JavaScript And XML&#xff09; 的缩写&#xff0c;是一种实现浏览器与服务器进行数据通信的技术。其核心是通过 XMLHttpRequest 对象在不重新刷新页面的前提下&#xff0c;与服务器交换数据并更…

新ubuntu物理机开启ipv6让外网访问

Ubuntu 物理机 SSH 远程连接与 IPv6 外网访问测试指南 1. 通过 SSH 远程连接 Ubuntu 物理机 1.1 安装 SSH 服务 sudo apt update sudo apt install openssh-server1.2 检查 SSH 服务状态 sudo systemctl status ssh确认出现 active (running)。 1.3 获取物理机 IP 地址 i…

linux系统上使用nginx访问php文件返回File not found错误处理方案

linux系统上使用nginx访问php文件返回File not found错误处理方案 第一种情况第二种情况 第一种情况 可以在你的location php 里面添加当文件不存在时返回404而不是交给php-fpm进行处理 location ~ \.php$ { ... #文件不存在转404 try_files $uri 404; ... }然后&#xff0c…

基于 SpringBoot 与 Redis 的缓存预热案例

文章目录 “缓存预热” 是什么&#xff1f;项目环境搭建创建数据访问层预热数据到 Redis 中创建缓存服务类测试缓存预热 “缓存预热” 是什么&#xff1f; 缓存预热是一种优化策略&#xff0c;在系统启动或者流量高峰来临之前&#xff0c;将一些经常访问的数据提前加载到缓存中…

java—11 Redis

目录 一、Redis概述 二、Redis类型及编码 三、Redis对象的编码 1. 类型&编码的对应关系 2. string类型常用命令 &#xff08;1&#xff09;string类型内部实现——int编码 &#xff08;2&#xff09;string类型内部实现——embstr编码 ​编辑 &#xff08;3&#x…

分布式链路追踪理论

基本概念 分布式调用链标准-openTracing Span-节点组成跟踪树结构 有一些特定的变量&#xff0c;SpanName SpanId traceId spanParentId Trace&#xff08;追踪&#xff09;&#xff1a;代表一个完整的请求流程&#xff08;如用户下单&#xff09;&#xff0c;由多个Span组成…