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.pswp.cn/news/903375.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903375.shtml
英文地址,請注明出處:http://en.pswp.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組成…