database-sync适配openGauss使用

一、database-sync 简介

database-sync 作为一种开源辅助工具,用于数据库之间的表同步,更确切的说法是复制,可以从一个数据库复制表到另一个数据库

  • 该工具支持的功能如下: (1)自动同步表字段,如:源表扩字段,目标表自动扩字段

    (2)支持增量或全量同步数据

    (3)支持指定字段同步,只同步关心的字段

  • 支持的关系型数据库:

    mysql、db2、postgresql、oracle、sqlserver

  • 源代码下载:

    database-sync 代码托管在 github 上

    源代码下载:下载

二、database-sync 适配 openGauss

目标:database-sync 适配 openGauss 数据库,可支持 openGauss 与其他数据库之间实现数据同步

源代码下载:适配 openGauss 的源代码已上传到个人仓库下的“douxin_master”分支

下载链接:下载

三、程序使用说明

前提:已安装 Java JDK 1.8 或更高版本,安装 maven

Step 1:下载代码并打包

git clone 下载 douxin_master 分支的代码,并进行打包

git clone https://gitee.com/ywzq1161327784/database-sync.git
cd database-sync/
git checkout origin/douxin_master
mvn clean package -Dmaven.test.skip=true

打包后,target 目录内容如下:

Step 2:构建可执行工程目录

将 mylib 目录、target 下的 lib 目录和 database-sync-1.3.jar 包复制到同一目录下,并创建一个 config 目录,在其下创建 config.json 文件写入配置信息,目录结构如下所示:

 

Step 3:编写配置文件

数据库连接信息以 json 格式配置在 config/config.json 文件中,每个节点包含 type、driver、url、user、password、tbspace_ddl、encoding 信息,

其中 type 指定数据库类型,取值为 db2、postgres、mysql、oracle、sqlserver、openGauss,特别地,对于 openGauss 数据库需指定“type”:“openGauss”;

tbspace_ddl 指定表空间语句,encoding 指定编码方式。

配置文件示例:

{
    "database1":{
        "type":"openGauss",
        "driver":"org.postgresql.Driver",
        "url":"jdbc:postgresql://ip:port/postgres",
        "user": "****",
        "password":"******",
        "tbspace_ddl": "",
        "encoding":"utf-8"
    },

    "database2":{
        "type":"postgres",
        "driver":"org.postgresql.Driver",
        "url":"jdbc:postgresql://ip:5432/postgres",
        "user": "****",
        "password":"******",
        "tbspace_ddl":"WITH (compression=no, orientation=orc, version=0.12)\ntablespace hdfs\n",
        "encoding":"utf-8"
    },

    "database3":{
        "type":"oracle",
        "driver":"oracle.jdbc.driver.OracleDriver",
        "url":"jdbc:oracle:thin:@localhost:1521:orcl",
        "user": "****",
        "password":"****",
        "tbspace_ddl": "",
        "encoding":"utf-8"
    },

    "database4":{
        "type":"db2",
        "driver":"com.ibm.db2.jcc.DB2Driver",
        "url":"jdbc:db2://ip:port/wbsj",
        "user": "****",
        "password":"****",
        "tbspace_ddl": "",
        "encoding":"utf-8"
    },

    "database5":{
        "type":"mysql",
        "driver":"com.mysql.cj.jdbc.Driver",
        "url":"jdbc:mysql://localhost:3306/aarondb",
        "user": "****",
        "password":"****",
        "encoding":"utf-8"
    },

    "buffer-rows": 100000
}

Step 4:查看程序帮助信息

在步骤 2 中的目录下,执行java -jar database-sync-1.3.jar -h命令可查看程序运行的帮助信息

 

 

其中[]表示可选参数,包括如下几种:

--version 或者-v 表示打印版本信息并退出;

--help 或者-h 表示打印帮助信息并退出;

--sync-ddl 或者-sd 表示自动同步表结果,默认情况下不会自动同步表结构,因此不指定该参数时,同步表时下述的目标表{toDB}需存在;

--from_fields=col1,col2 或者-ff=col3,col4 表示指定原表的字段序列;

--to_fields=col1,col2 或者-tf=col3,col4 表示指定目标表的字段序列;

--no-feture 或者-nf 表示不使用特定数据库的特性;

[whereClause]表示 where 条件,用于增量更新。

{}表示必选参数,共有 6 个,分别说明如下:

{fromDB}表示原表所在的数据库信息,在 Step3 所示的配置文件中,可以取值为 database1,database2 等;

{fromSchema}表示原表的模式名;

{fromTable}表示原表的表名;

{toDB}表示目标表所在的数据库信息;

{toSchema}表示目标表的模式名;

{toTable}表示目标表的表名。

Step 5:跨数据库间实现表数据同步

eg 1:从 postgres 到 openGauss 实现表同步

java -jar database-sync-1.3.jar -sd postgres public test_0322 opengauss1 public test_0322_1

eg 2:从 openGauss 到 postgres 实现表同步 

java -jar database-sync-1.3.jar -sd opengauss1 public test_0322_1 postgres public test_0322

 

至此,可实现 openGauss 数据库与其他数据库间的表数据同步 

参考:

database-sync适配openGauss使用指导书 | openGauss社区 

<think>好的,我需要帮助用户创建一个systemd服务来管理openGauss数据库的单节点实例。用户提供的启动命令是gs_ctl start -D /home/imp-database/openGauss/data/single_node -Z single_node。首先,我应该回忆一下systemd服务的基本结构和配置步骤。 首先,systemd服务文件通常存放在/etc/systemd/system/目录下,文件名以.service结尾。用户需要创建一个新的服务文件,比如openGauss.service。服务文件的内容包括几个关键部分:[Unit]、[Service]和[Install]。 在[Unit]部分,应该填写服务的描述信息,比如Description=Huawei openGauss Database Service。这部分帮助用户识别服务的用途。 接下来是[Service]部分,这里需要指定启动和停止的命令。用户提供的启动命令是gs_ctl start,所以ExecStart应该设置为/usr/local/bin/gs_ctl start -D 指定的数据目录。数据目录是/home/imp-database/openGauss/data/single_node,所以完整的路径需要确认是否正确。同时,停止命令ExecStop应该使用gs_ctl stop,同样指定数据目录。Type字段可能需要设为forking,因为gs_ctl可能会在后台启动进程。用户和组的设置也很重要,需要确保服务以正确的权限运行,比如User=omm和Group=dbgrp,这些可能需要根据实际安装时的配置来调整。 然后是[Install]部分,这里指定服务如何启用,通常WantedBy=multi-user.target,这样系统启动时会自动启动该服务。 创建完服务文件后,需要让systemd重新加载配置,使用systemctl daemon-reload命令。之后就可以用systemctl start、stop、enable等命令来管理服务了。 还需要注意权限问题,确保服务文件和数据目录的权限正确,特别是omm用户是否有权访问相关目录和文件。可能还需要检查环境变量或者配置文件路径是否正确,比如pg_hba.conf的位置,如引用[2]提到的路径可能需要调整到用户的数据目录下。 另外,参考引用[1]中的示例,服务文件中的ExecStart和ExecStop路径需要确认gs_ctl的实际安装位置,可能在/usr/local/bin或者/mnt/openGauss/bin下,需要根据实际情况调整。例如,在引用[4]中提到了脚本路径/tmp/gauss/script/,但用户当前的安装路径可能不同,需要正确指定gs_ctl的路径。 可能的问题还包括:如果gs_ctl需要特定的环境变量,比如LD_LIBRARY_PATH,可能需要在服务文件中通过Environment指令设置。此外,日志管理也需要考虑,可能需要配置StandardOutput和StandardError到日志文件。 总结步骤应该是: 1. 创建服务文件,填写正确的启动和停止命令,用户和组。 2. 设置文件权限,确保systemd可以读取。 3. 重新加载systemd配置。 4. 启动服务并检查状态,排除可能的错误,比如路径错误或权限不足。 5. 启用开机自启。 用户可能需要根据实际安装情况调整路径和参数,比如数据目录的位置,用户组名是否正确,以及gs_ctl的路径是否正确。如果遇到问题,可以查看journalctl -u openGauss.service的日志来排查错误。</think>### 分步说明:为openGauss创建systemd服务 #### 1. 创建服务文件 使用root权限创建服务文件: ```bash sudo vi /etc/systemd/system/openGauss.service ``` 文件内容如下: ```ini [Unit] Description=Huawei openGauss Database Service After=syslog.target network.target [Service] Type=forking User=omm Group=dbgrp ExecStart=/usr/local/bin/gs_ctl start -D /home/imp-database/openGauss/data/single_node -Z single_node ExecStop=/usr/local/bin/gs_ctl stop -D /home/imp-database/openGauss/data/single_node Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target ``` *注意:* - `User=omm`和`Group=dbgrp`需与安装时创建的数据库用户/组一致[^4] - `gs_ctl`路径需验证实际位置:`which gs_ctl` - `-D`参数后的路径必须与实际数据目录完全匹配[^3] #### 2. 设置文件权限 ```bash sudo chmod 640 /etc/systemd/system/openGauss.service sudo chown root:root /etc/systemd/system/openGauss.service ``` #### 3. 重载systemd配置 ```bash sudo systemctl daemon-reload ``` #### 4. 验证服务状态 ```bash sudo systemctl start openGauss sudo systemctl status openGauss ``` 正常状态应显示`Active: active (running)`,类似引用[1]中的输出 #### 5. 设置开机自启 ```bash sudo systemctl enable openGauss ``` #### 6. 重要配置检查 检查`pg_hba.conf`文件权限和内容: ```bash ls -l /home/imp-database/openGauss/data/single_node/pg_hba.conf ``` 需确保`omm`用户有读写权限[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值