注册
达梦数+套件DMDRS同步案例(金仓数据库同步达梦数据库)
技术分享/ 文章详情 /

达梦数+套件DMDRS同步案例(金仓数据库同步达梦数据库)

ZCH 2025/03/28 63 0 0

1 概述

前面一篇《达梦数+套件DMDFM和DMDRS部署》已经介绍了达梦数据融合管理平台DMDFM和达梦数据复制软件DMDRS的部署过程;本文档在此环境基础上配置同步工程,实现将金仓数据库实时同步到达梦数据库的案例。

2 部署环境准备

IP 部署服务 备注
192.168.228.8 DMDFM 达梦数据融合管理平台
192.168.228.9 DMDRS 源端库服务器,部署金仓数据库V9
192.168.228.10 DMDRS 目的端服务器,部署达梦数据库V8

2.1 源库(金仓)环境准备

案例主要介绍配置同步工程,略过数据库部署步骤。

2.1.1 开启数据库归档和逻辑日志

1、修改配置

$ cd /home/kingbase/kdb/data
$ vi kingbase.conf
wal_level = logical
archive_mode = on 
archive_command = 'cp %p /home/kingbase/kdb/data/arch/%f'

2、重启生效

$ sys_ctl -D /home/kingbase/kdb/data restart
等待服务器进程关闭 .... 完成
服务器进程已经关闭
等待服务器进程启动 ....2025-03-25 10:03:23.411 CST [14997] LOG:  sepapower extension initialized
2025-03-25 10:03:23.421 CST [14997] LOG:  starting KingbaseES V009R001C002B0014 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
2025-03-25 10:03:23.421 CST [14997] LOG:  listening on IPv4 address "0.0.0.0", port 54321
2025-03-25 10:03:23.422 CST [14997] LOG:  listening on IPv6 address "::", port 54321
2025-03-25 10:03:23.425 CST [14997] LOG:  listening on Unix socket "/tmp/.s.KINGBASE.54321"
2025-03-25 10:03:23.550 CST [14997] LOG:  redirecting log output to logging collector process
2025-03-25 10:03:23.550 CST [14997] HINT:  Future log output will appear in directory "sys_log".
 完成
服务器进程已经启动

$ ksql -Usystem -d kingbase -p 54321
用户 system 的口令:
输入 "help" 来获取帮助信息.
kingbase=# SELECT name, setting FROM pg_settings WHERE name IN ('archive_timeout', 'wal_segment_size', 'wal_level', 'archive_mode', 'archive_command');
       name       |              setting              
------------------+-----------------------------------
 archive_command  | cp %p /home/kingbase/kdb/data/arch/%f
 archive_mode     | on
 archive_timeout  | 0
 wal_level        | logical
 wal_segment_size | 16777216
(5 行记录)

2.1.2 创建测试用户和测试表

1、创建测试账号TEST

$ ksql -Usystem -d kingbase -p 54321
用户 system 的口令:
输入 "help" 来获取帮助信息.
kingbase=# CREATE USER TEST WITH PASSWORD '123456';
CREATE ROLE
kingbase=# GRANT CREATE ON DATABASE KINGBASE TO TEST;
GRANT
kingbase=#\q

2、创建测试账号TEST的默认模式KINGBASE

$ ksql -Utest -d kingbase -p 54321
kingbase=> CREATE SCHEMA KINGBASE;
CREATE SCHEMA
kingbase=> ALTER USER TEST SET SEARCH_PATH TO KINGBASE;
ALTER ROLE
kingbase=> \q

3、创建测试表

$ ksql -Utest -d kingbase -p 54321
kingbase=> create table ktb_1(c1 int,c2 varchar(50));
CREATE TABLE
kingbase=> insert into ktb_1(c1,c2) values(1,'OK');
INSERT 0 1
kingbase=> select * from ktb_1;
 c1 | c2 
----+----
  1 | OK
(1 行记录)
kingbase=> \q

2.1.3 配置DDL同步脚本

默认只支持DML同步,使用system用户执行安装目录下scripts/ddl_sql_kdb.sql脚本,就可以支持DDL同步了。
1、执行脚本前需要关注脚本文件头的说明,如下两处dname修改为需要同步的数据库名,如果是多库同步,需要在每个库都执行。
image.png
image.png

2、执行完成后新增对象如下:
image.png
2、执行授权语句,将辅助表授权给需要同步的用户:

grant all on "public"."drs_$ddl_col" to test;
grant all on "public"."drs_$ddl_cons" to test;
grant all on "public"."drs_$ddl_idx" to test;
grant all on "public"."drs_$ddl_log" to test;
grant all on "public"."drs_$ddl_part" to test;
grant all on "public"."drs_$ddl_sql" to test;

2.1.4 配置ODBC连接

2.1.4.1 编译安装ODBC

如果系统默认没安装ODBC,则需要自行编译安装,如:

[dmdrs@kdb ~]$ pwd
/home/dmdrs
[dmdrs@kdb ~]$ ll
drwxrwxr-x 4 dmdrs dmdrs       30 3月  20 15:58 dmdrs5
-rw-rw-r-- 1 dmdrs dmdrs 10004480 10月  8 2013 unixODBC-2.3.2.tar
[dmdrs@kdb ~]$ tar xf unixODBC-2.3.2.tar
[dmdrs@kdb ~]$ cd unixODBC-2.3.2/
[dmdrs@kdb unixODBC-2.3.2]$ ./configure --prefix=/home/dmdrs/unixODBC
[dmdrs@kdb unixODBC-2.3.2]$ make
[dmdrs@kdb unixODBC-2.3.2]$ make install
......
Libraries have been installed in:
   /home/dmdrs/unixODBC/lib
touch /home/dmdrs/unixODBC/etc/odbcinst.ini
touch /home/dmdrs/unixODBC/etc/odbc.ini

[dmdrs@kdb ~]$ vi .bash_profile
export ODBC_HOME=/home/dmdrs/unixODBC
export ODBCINI=$ODBC_HOME/etc
export ODBCSYSINI=$ODBC_HOME/etc
export PATH=$ODBC_HOME/bin:$PATH

[dmdrs@kdb ~]$ source .bash_profile 
[dmdrs@kdb ~]$ odbc_config --version
[dmdrs@kdb ~]$ odbcinst -j

image.png

2.1.4.2 配置金仓库ODBC驱动

将金仓数据库以下ODBC驱动文件拷贝到目录:unixODBC/lib:
image.png

2.1.4.3 配置odbcinst.ini

[dmdrs@kdb ~]$ cd /home/dmdrs/unixODBC/etc
[dmdrs@kdb etc]$ vi odbcinst.ini
[KingbaseES 9 ODBC Driver]
Description = ODBC DRIVER FOR KingbaseES
DRIVER = /home/dmdrs/unixODBC/lib/kdbodbcw.so

2.1.4.4 配置odbc.ini

[dmdrs@kdb ~]$ cd /home/dmdrs/unixODBC/etc
[dmdrs@kdb etc]$ vi odbc.ini
[KingbaseES9]
Description = 
Driver = KingbaseES 9 ODBC Driver
Trace = No
TraceFile = 
Database = kingbase
Servername = 192.168.228.9
Username = 
Password = 
Port = 54321
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ShowOidColumn = No
FakeOidIndex = No
ConnSettings = set lc_mesage='C'

2.1.4.5 查看数据源,测试连接

[dmdrs@kdb ~]$ odbcinst -q -s
[KingbaseES9]
[dmdrs@kdb ~]$ isql -v KingbaseES9 test 123456
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select * from ktb_1;
+------------+---------------------------------------------------+
| c1         | c2                                                |
+------------+---------------------------------------------------+
| 1          | OK                                                |
+------------+---------------------------------------------------+
SQLRowCount returns 1
1 rows fetched

2.1.5 sys_wal访问权限配置

同步代理工具运行在dmdrs用户,同步数据过程需要能访问到金仓数据库的sys_wal日志,因此通过将用户dmdrs加入到kingbase组中,配置同组用户的访问权限。

[kingbase@kdb ~]$ chmod -R g+rx /home/kingbase/
[root@oradb home]# gpasswd -a dmdrs kingbase
正在将用户“dmdrs”加入到“kingbase”组中

2.2 目的库(达梦)环境准备

## 2.2.1 创建应用账号

创建达梦数据库用户BUSI,将金仓库KINGBASE模式数据同步到BUSI。

[dmdba@dm ~]$ disql SYSDBA/
密码:
SQL> CREATE USER BUSI IDENTIFIED BY "password";
SQL> GRANT PUBLIC,RESOURCE TO BUSI;

2.2.2 创建同步账号

创建同步账号DMDRS,同步工具使用本账号连接达梦数据库:

CREATE USER DMDRS IDENTIFIED BY "password";
GRANT PUBLIC,RESOURCE,SOI,VTI TO DMDRS;
GRANT CREATE SESSION TO DMDRS;
GRANT CREATE ANY TABLE TO DMDRS;
GRANT DROP ANY TABLE TO DMDRS;
GRANT ALTER ANY TABLE TO DMDRS;
GRANT INSERT ANY TABLE TO DMDRS;
GRANT UPDATE ANY TABLE TO DMDRS;
GRANT DELETE ANY TABLE TO DMDRS;
GRANT SELECT ANY TABLE TO DMDRS;
GRANT SELECT ANY SEQUENCE TO DMDRS;

3 数据源管理

前面准备工作完成后,现在登录达梦数据库融合管理平台操作。

3.1 源库数据源配置

进入“数据源/数据源管理”,在“关系数据库”节点新增金仓数据库数据源:
image.png
ODBC驱动名称,需要和odbcinst.ini文件中配置一致:
image.png

3.2 目的库数据源配置

进入“数据源/数据源管理”,在“关系数据库”节点新增达梦数据库数据源:
image.png

4 同步工程配置

4.1 创建同步工程

进入“同步/同步工程概览”,使用“一对一(无DSS)场景”创建同步工程:
image.png
image.png

4.2 链路基本配置

image.png

4.3 链路映射配置

可针对性的选择指定表配置黑白名单:
image.png

也可以使用通配符方式配置黑白名单:
image.png

4.4 部署DMDRS服务

根据提示点击“立即部署”,进行DMDRS服务部署:
image.png
image.png

完成部署:
image.png

4.5 DMDRS源配置

image.png
结合服务器资源,调整配置,因虚拟机配置不高,这里将服务器内存改为0:
image.png
如需同步DDL,则按需勾选:
image.png
image.png

链路高级配置保持默认,大家可自行探索:
image.png

4.6 DMDRS目的配置

image.png

结合服务器资源,调整配置,因虚拟机配置不高,这里将服务器内存改为0:
image.png
链路分组配置,这里保持默认,不做高级配置:
image.png
链路高级配置,“对象名大小写转换”建议选择“转为大写”,其他保持默认,大家可自行探索:
image.png

4.7 启动DRS服务

image.png

4.8 数据装载

在链路下拉菜单中点击“装载”,一步步图形化操作:
image.png
image.png
image.png

完成装载后,达梦数据库查询到装载成功的数据:
image.png

4.9 启动实时同步

如下图,启动同步链路:
image.png

金仓数据库插入一条记录:
image.png
观察金仓数据库SQL日志:
image.png
达梦数据库查询到实时同步的数据:
image.png
观察达梦数据库SQL日志,对比金仓数据库SQL日志时间,同步时效为秒级:
image.png

4.10 验证DDL同步

金仓数据库创建ktb_2表:
image.png
达梦数据库查询到实时同步的ktb_2表:
image.png

5 关于告警

配置过程看到告警,顺便分享,同步工程健康运行时,拓扑图图标为蓝色,当出现告警时,根据告警级别不同,图标会显示为黄色、红色。
image.png
image.png
同步系统已内置告警规则,用户也可以自定义告警策略:
image.png
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服