前面一篇《达梦数+套件DMDFM和DMDRS部署》已经介绍了达梦数据融合管理平台DMDFM和达梦数据复制软件DMDRS的部署过程;本文档在此环境基础上配置同步工程,实现将金仓数据库实时同步到达梦数据库的案例。
IP 部署服务 备注
192.168.228.8 DMDFM 达梦数据融合管理平台
192.168.228.9 DMDRS 源端库服务器,部署金仓数据库V9
192.168.228.10 DMDRS 目的端服务器,部署达梦数据库V8
案例主要介绍配置同步工程,略过数据库部署步骤。
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 行记录)
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
默认只支持DML同步,使用system用户执行安装目录下scripts/ddl_sql_kdb.sql脚本,就可以支持DDL同步了。
1、执行脚本前需要关注脚本文件头的说明,如下两处dname修改为需要同步的数据库名,如果是多库同步,需要在每个库都执行。
2、执行完成后新增对象如下:
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;
如果系统默认没安装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
将金仓数据库以下ODBC驱动文件拷贝到目录:unixODBC/lib:
[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
[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'
[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
同步代理工具运行在dmdrs用户,同步数据过程需要能访问到金仓数据库的sys_wal日志,因此通过将用户dmdrs加入到kingbase组中,配置同组用户的访问权限。
[kingbase@kdb ~]$ chmod -R g+rx /home/kingbase/
[root@oradb home]# gpasswd -a dmdrs kingbase
正在将用户“dmdrs”加入到“kingbase”组中
创建达梦数据库用户BUSI,将金仓库KINGBASE模式数据同步到BUSI。
[dmdba@dm ~]$ disql SYSDBA/
密码:
SQL> CREATE USER BUSI IDENTIFIED BY "password";
SQL> GRANT PUBLIC,RESOURCE TO BUSI;
创建同步账号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;
前面准备工作完成后,现在登录达梦数据库融合管理平台操作。
进入“数据源/数据源管理”,在“关系数据库”节点新增金仓数据库数据源:
ODBC驱动名称,需要和odbcinst.ini文件中配置一致:
进入“数据源/数据源管理”,在“关系数据库”节点新增达梦数据库数据源:
进入“同步/同步工程概览”,使用“一对一(无DSS)场景”创建同步工程:
可针对性的选择指定表配置黑白名单:
也可以使用通配符方式配置黑白名单:
根据提示点击“立即部署”,进行DMDRS服务部署:
完成部署:
结合服务器资源,调整配置,因虚拟机配置不高,这里将服务器内存改为0:
如需同步DDL,则按需勾选:
链路高级配置保持默认,大家可自行探索:
结合服务器资源,调整配置,因虚拟机配置不高,这里将服务器内存改为0:
链路分组配置,这里保持默认,不做高级配置:
链路高级配置,“对象名大小写转换”建议选择“转为大写”,其他保持默认,大家可自行探索:
在链路下拉菜单中点击“装载”,一步步图形化操作:
完成装载后,达梦数据库查询到装载成功的数据:
如下图,启动同步链路:
金仓数据库插入一条记录:
观察金仓数据库SQL日志:
达梦数据库查询到实时同步的数据:
观察达梦数据库SQL日志,对比金仓数据库SQL日志时间,同步时效为秒级:
金仓数据库创建ktb_2表:
达梦数据库查询到实时同步的ktb_2表:
配置过程看到告警,顺便分享,同步工程健康运行时,拓扑图图标为蓝色,当出现告警时,根据告警级别不同,图标会显示为黄色、红色。
同步系统已内置告警规则,用户也可以自定义告警策略:
文章
阅读量
获赞