注册
DMHS_MySQL_同步_DM8 实践记录
专栏/技术分享/ 文章详情 /

DMHS_MySQL_同步_DM8 实践记录

ZCH 2023/05/15 1871 2 0
摘要

1 概述

达梦数据实时同步软件DMHS是一个用于实时数据集成和复制的综合软件包。它支持运营和分析企业系统之间的高可用性解决方案、实时数据集成、事务性变更数据捕获、数据复制、转换和验证。使用DMHS,可以跨企业中的多个系统同步已提交的事务。DMHS能够在DM数据库之间复制数据到其他受支持的异构数据库,以及在异构数据库之间复制数据。
目前源数据库支持 DM、 MySQL、PostgreSQL、DB2、SQLServer、Oracle9i 及以上版本。

2 前置条件

2.1 源数据库(MySQL)

源端MySQL服务器IP为:192.168.228.31,操作系统版本和内核如下:

[root@db1 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core) 
[root@db1 ~]# uname -a
Linux db1 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

已安装MySQL数据库,本次需要同步的源数据库模式为:testdb。

[mysql@db1 ~]$ mysql -u test -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.28 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use testdb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| tb_1             |
| tb_2             |
+------------------+
2 rows in set (0.00 sec)

2.2 目的数据库(DM)

目的端DM数据库服务器IP为:192.168.228.32,操作系统版本和内核如下:
CentOS Linux release 7.6.1810 (Core)

[root@db2 ~]# uname -a
Linux db2 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

已安装DM V8数据库软件,安装目录:

[dmdba@db2 ~]$ echo $DM_HOME
/home/dmdba/dmdbms

3 MySQL同步DM部署

3.1 DMHS安装规划

3.1.1 源端MySQL服务器

软件目录:/home/dmhs/dmhs
服务器用户:dmhs,属主:mysql
管理端口:5345
数据端口:5346

3.1.2 目的端DM服务器

软件目录:/home/dmdba/dmhs
服务器用户:dmdba,属主:dinstall
管理端口:5345
数据端口:5346

3.2 源端MySQL服务器部署

结合系统环境及数据库信息,本次使用DMHS安装包:dmhs_V4.3.10_mysql8_rev128484_rh7_64_veri_20230419_sp2.bin

3.2.1 系统环境检查

操作系统版本:

[root@db1 ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)

CPU信息:

[root@db1 ~]# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                1
On-line CPU(s) list:   0
Thread(s) per core:    1
Core(s) per socket:    1
座:                 1
NUMA 节点:         1
厂商 ID:           GenuineIntel
CPU 系列:          6
型号:              142
型号名称:        Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz
步进:              11
CPU MHz:             1799.998

内存信息:

[root@db1 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1476         130        1160           9         185        1159
Swap:          2047           0        2047

磁盘信息:

[root@db1 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        37G  5.2G   32G   14% /
devtmpfs                devtmpfs  722M     0  722M    0% /dev
tmpfs                   tmpfs     739M     0  739M    0% /dev/shm
tmpfs                   tmpfs     739M  9.9M  729M    2% /run
tmpfs                   tmpfs     739M     0  739M    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M   18% /boot
tmpfs                   tmpfs     148M     0  148M    0% /run/user/0

防火墙状态:

[root@db1 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

如果是启动状态,建议操作关闭:systemctl stop firewalld

3.2.2 数据库检查

3.2.2.1 数据库实例目录

mysql> show variables like 'datadir';
+---------------+-------------------+
| Variable_name | Value             |
+---------------+-------------------+
| datadir       | /home/mysql/data/ |
+---------------+-------------------+

3.2.2.2 binlog参数

MySQL数据库需要开启binlog日志,使用如下语句检查归档是否开启:
log-bin=ON
binlog_format=row
max_allowed_packet=100M

检查语句:
show variables like 'log_bin';
show variables like 'binlog_format';
show variables like 'max_allowed_packet';
注:如果没有开启binlog,开启binlog需要重启数据库,会中断业务;因此对于生产环境需要和各方确认好。

[mysql@db1 ~]$  mysql -u root -p
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
1 row in set (0.01 sec)

mysql> show variables like 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.00 sec)

mysql> show variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 67108864 |
+--------------------+----------+
1 row in set (0.00 sec)

3.2.2.3 binlog目录

mysql> show variables like '%log_bin%';
+---------------------------------+-------------------------------+
| Variable_name                   | Value                         |
+---------------------------------+-------------------------------+
| log_bin                         | ON                            |
| log_bin_basename                | /home/mysql/data/binlog       |
| log_bin_index                   | /home/mysql/data/binlog.index |
| log_bin_trust_function_creators | OFF                           |
| log_bin_use_v1_row_events       | OFF                           |
| sql_log_bin                     | ON                            |
+---------------------------------+-------------------------------+

3.2.2.4 字符集

查看大小写是否敏感
show variables like '%lower%';
lower_case_file_system:OFF表示当前系统文件大小写敏感,ON表示当前系统文件大小写不敏感。
lower_case_table_names:0表示表名敏感,1表示表名不敏感

查看建库字符集
show create database mysql;
image.png

3.2.2.5 数据库对象

查询数据库基本信息,了解MySQL大致的数据量大小,是否有大字段,大表等基本信息,有助于后面的HS同步。
#查看所有数据库使用空间大小
select table_schema,concat(round(sum(data_length/1024/1024),2),'MB') as data from information_schema.tables group by table_schema;

##统计数据库下对象,如:testdb
#表对象数量
select count(*) tables, table_schema from information_schema.tables where table_schema = 'testdb' group by table_schema;

#存储过程
select name from mysql.proc where db = 'testdb' and type = 'PROCEDURE';

#函数
select name from mysql.proc where db = 'testdb' and type = 'FUNCTION';

统计数据库的大表数据量
select table_schema,table_name,table_rows,engine,
(data_length+index_length)/1024/1024 as data_mb ,table_type,data_free
from information_schema.tables
where table_schema='testdb'
order by table_rows desc limit 10;

3.2.3 创建同步用户

在MySQL数据库中创建用户,授权需要同步的MySQL库,给与相应的权限。

mysql> create database DMHS default character set utf8;
mysql> create user 'u_dmhs'@'%' identified by 'Hps6_MpSz3';
mysql> grant all on *.* to 'u_dmhs'@'%';
mysql> flush privileges;

3.2.4 安装unixODBC

[root@db1 ~]# tar xf unixODBC-2.3.2.tar
[root@db1 ~]# cd unixODBC-2.3.2
[root@db1 unixODBC-2.3.2]# ./configure --enable-drivers=no --with-iconv-char-enc=GB18030 --enable-gui=no --enable-iconv=yes
[root@db1 unixODBC-2.3.2]# make
[root@db1 unixODBC-2.3.2]# make install
… …
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
… … 
touch /usr/local/etc/odbcinst.ini
touch /usr/local/etc/odbc.ini
mkdir -p /usr/local/etc/ODBCDataSources
cp unixodbc_conf.h /usr/local/include/unixodbc_conf.h
make[2]: 离开目录“/root/unixODBC-2.3.2”
make[1]: 离开目录“/root/unixODBC-2.3.2”

3.2.5 安装MySQL ODBC

按需选择MySQL ODBC版本,本次实例使用:mysql-connector-odbc-8.0.28。

3.2.5.1 mysql-connector-odbc-5.3.13

[root@db1 ~]# tar xzf mysql-connector-odbc-5.3.13-linux-glibc2.12-x86-64bit.tar.gz
[root@db1 ~]# cd mysql-connector-odbc-5.3.13-linux-glibc2.12-x86-64bit 
[root@db1 ~]# cp lib/* /usr/local/lib/
[root@db1 ~]# cp bin/* /usr/local/bin/
[root@db1 ~]# cp /usr/local/lib/libodbc.so.2.0.0 /usr/lib64/libodbc.so.2
[root@db1 ~]# cp /usr/local/lib/libodbcinst.so.2.0.0 /usr/lib64/libodbcinst.so.2
[root@db1 ~]# myodbc-installer -a -d -n "MySQL ODBC 5.3 Driver" -t "Driver=/usr/local/lib/libmyodbc5w.so"
Success: Usage count is 1
[root@db1 ~]# myodbc-installer -a -d -n "MySQL ODBC 5.3 Driver" -t "Driver=/usr/local/lib/libmyodbc5a.so"
Success: Usage count is 2

3.2.5.2 mysql-connector-odbc-8.0.28

[root@db1 ~]# tar xzf mysql-connector-odbc-8.0.28-linux-glibc2.12-x86-64bit.tar.gz
[root@db1 ~]# cd mysql-connector-odbc-8.0.28-linux-glibc2.12-x86-64bit
[root@db1 ~]# cp lib/libmyodbc8a.so /usr/local/lib/
[root@db1 ~]# cp lib/libmyodbc8w.so /usr/local/lib/
[root@db1 ~]# cp lib/private/libcrypto.so.1.1 /usr/local/lib/
[root@db1 ~]# cp lib/private/libssl.so.1.1 /usr/local/lib/
[root@db1 ~]# cp bin/* /usr/local/bin
[root@db1 ~]# cd /usr/local/bin
[root@db1 bin]# myodbc-installer -a -d -n "MySQL ODBC 8.0 Unicode Driver" -t "Driver=/usr/local/lib/libmyodbc8w.so"
Success: Usage count is 1
[root@db1 bin]# myodbc-installer -a -d -n "MySQL ODBC 8.0 ANSI Driver" -t "Driver=/usr/local/lib/libmyodbc8a.so"
Success: Usage count is 1

3.2.6 配置unixODBC

默认在/usr/local/etc目录下面odbc.ini和odbcinst.ini中进行配置,如果安装时指定了sysconfdir,则在指定目录下的odbc.ini和odbcinst.ini中配置。uid和pwd指的连接数据库的账号密码,和后续的dmhs.hs中的账号密码保持一致。

[root@db1 ~]# cat >> /usr/local/etc/odbc.ini << EOF
[MYSQL]
Description = MYSQL ODBC DSN
Driver = MySQL ODBC 8.0 Unicode Driver
SERVER = 192.168.228.31
UID = u_dmhs
PWD = Hps6_MpSz3
EOF

3.2.7 验证unixODBC

检查配置信息:

[root@db1 ~]# odbcinst -j
unixODBC 2.3.2
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

查看驱动:

[root@db1 ~]# cat /usr/local/etc/odbcinst.ini
[MySQL ODBC 8.0 Unicode Driver]
Driver=/usr/local/lib/libmyodbc8w.so
UsageCount=1

[MySQL ODBC 8.0 ANSI Driver]
Driver=/usr/local/lib/libmyodbc8a.so
UsageCount=1

[MySQL ODBC 5.3 Driver]
Driver=/usr/local/lib/libmyodbc5a.so
UsageCount=2

查看数据源:

[root@db1 ~]# odbcinst -q -s
[MYSQL]
[root@db1 ~]# cat /usr/local/etc/odbc.ini
[MYSQL]
Description = MYSQL ODBC DSN
Driver = MySQL ODBC 8.0 Unicode Driver
SERVER = 192.168.228.31
UID = u_dmhs
PWD = Hps6_MpSz3

测试连接:

[root@db1 ~]# isql -v MYSQL u_dmhs Hps6_MpSz3
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

3.2.8 DMHS安装配置

3.2.8.1 DMHS安装

[root@db1 ~]# useradd -g mysql -m -d /home/dmhs -s /bin/bash dmhs
[root@db1 ~]# passwd dmhs

默认mysql的安装目录只有属主用户有访问权限,做为同组的dmhs用户需要有访问mysql的lib以及binlog目录权限,因此需要执行以下授权操作:
image.png

修改环境变量,LD_LIBRARY_PATH增加mysql库目录:

[dmhs@db1 ~]$ vi .bash_profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/dmhs/dmhs/bin:/home/mysql/mysql-8.0.28/lib
[dmhs@db1 ~]$ source .bash_profile

开始安装 DMHS:

[root@db1 ~]# su - dmhs
[dmhs@db1 ~]$ ./dmhs_V4.3.10_mysql8_rev128484_rh7_64_veri_20230419_sp2.bin -i
Extract install files......... 

1.英文(English)
2.简体中文(简体中文)
请选择安装语言[2.简体中文(简体中文)]:
/tmp/DMHSInstall/install.log
1.免费试用达梦数据实时同步
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据实时同步]:
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件配置助手
4.手册
所需磁盘空间:531 MB
安装目录: [/home/dmhs/dmhs]
1.统一部署
2.现在初始化
是否初始化达梦数据实时同步系统[1.统一部署]:
正在安装
default start ...    default finished.
server start ...    server finished.
hs_agent start ...    hs_agent finished.
hsca start ...    hsca finished.
doc start ...    doc finished.
postinstall start ...    postinstall finished.
正在创建快捷方式
安装成功
远程部署工具配置
远程部署工具名称[HsAgent]:
主机Ip(外网)[192.168.122.1](192.168.122.1,192.168.228.31):
远程部署工具管理端口[5456](1000-65535):
内置数据库轮询间隔[3](1-60):
内置数据库IP[]:192.168.228.31
内置数据库端口[15236](1000-65535):
内置数据库用户名[SYSDBA]:
内置数据库密码[SYSDBA]:
服务脚本环境变量设置
依赖库路径
提示:此配置项供用户配置源或目的数据库依赖库路径和odbc依赖库路径, 多个路径以":"隔开(例:/opt/dmdbms/bin:/usr/local/lib),此配置项会添加到服务脚本的NEED_LIB_PATH的变量值中。
请配置依赖库路径:/home/mysql/mysql-8.0.28/bin:/home/mysql/mysql-8.0.28/lib:/usr/local/lib
远程控制服务
1.自动
2.手动
启动方式:[2.手动]
正在创建远程控制服务
达梦数据实时同步V4.0安装完成
更多安装信息,请查看安装日志文件:
/home/dmhs/dmhs/log/install.log

3.2.8.2 dmhs.hs配置

image.png

3.2.8.3 DMHS服务脚本配置

[dmhs@db1 ~]$ cd dmhs/bin
[dmhs@db1 bin]$ cp service_template/DmhsService DmhsService
[dmhs@db1 bin]$ chmod 775 DmhsService
[dmhs@db1 bin]$ vi DmhsService
DMHS_HOME=/home/dmhs/dmhs
PROG_DIR=/home/dmhs/dmhs/bin
CONF_PATH=/home/dmhs/dmhs/bin/dmhs.hs
NEED_LIB_PATH=/home/mysql/mysql-8.0.28/bin:/home/mysql/mysql-8.0.28/lib:/usr/local/lib

3.3 目的端DM服务器部署

结合系统环境及数据库信息,本次使用DMHS安装包:
dmhs_V4.3.10_dm8_rev129468_rh6_64_veri_20230504_sp6.bin
dm8_20230420_x86_rh6_64_ent_8.1.3.12_pack1_dmdci.zip

3.3.1 系统环境检查

操作系统版本:

[root@db2 ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)

CPU信息:

[root@db2 ~]# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                1
On-line CPU(s) list:   0
Thread(s) per core:    1
Core(s) per socket:    1
座:                 1
NUMA 节点:         1
厂商 ID:           GenuineIntel
CPU 系列:          6
型号:              142
型号名称:        Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz
步进:              11
CPU MHz:             1799.998

内存信息:

[root@db2 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1476         215         942           9         318        1050
Swap:          2047           0        2047

磁盘信息:

[root@db2 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        37G  5.3G   32G   15% /
devtmpfs                devtmpfs  722M     0  722M    0% /dev
tmpfs                   tmpfs     739M     0  739M    0% /dev/shm
tmpfs                   tmpfs     739M  9.9M  729M    2% /run
tmpfs                   tmpfs     739M     0  739M    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M   18% /boot
tmpfs                   tmpfs     148M     0  148M    0% /run/user/0

防火墙状态:

[root@db2 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

如果是启动状态,建议操作关闭:systemctl stop firewalld

3.3.2 创建数据库实例

安装DM8数据库软件后,dmdba用户已默认配置LD_LIBRARY_PATH和DM_HOME,建议将tool目录补充到PATH变量中:

[dmdba@db2 ~]$ vi .bash_profile
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/dmdba/dmdbms/bin"
export DM_HOME="/home/dmdba/dmdbms"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool

根据应用需求自行选择参数进行初始化实例:

[dmdba@db2 ~]$ /home/dmdba/dmdbms/bin/dminit PATH=/home/dmdba/dmdbms/data PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 CASE_SENSITIVE=0 CHARSET=1 LENGTH_IN_CHAR=1 PORT_NUM=5236 SYSDBA_PWD=123456789
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2024-01-03
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
 log file path: /home/dmdba/dmdbms/data/DAMENG/DAMENG01.log
 log file path: /home/dmdba/dmdbms/data/DAMENG/DAMENG02.log
write to dir [/home/dmdba/dmdbms/data/DAMENG].
create dm database success. 2023-05-09 20:42:15

注册服务:

[root@db2 ~]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdbms/data/DAMENG/dm.ini -p DMSERVER
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service to /usr/lib/systemd/system/DmServiceDMSERVER.service.
创建服务(DmServiceDMSERVER)完成
[root@db2 ~]# systemctl start DmServiceDMSERVER

3.3.3 归档参数

DM数据库需要开启归档日志,如创建数据库实例时未明确配置,使用如下语句检查归档是否开启:
方式一:
[dmdba@db2 ~]$ cat /home/dmdba/dmdbms/data/DAMENG/dm.ini | grep ARCH_INI
image.png
方式二:
[dmdba@db2 ~]$ disql sysdba/123456789@192.168.228.32:5236
SQL> SELECT ARCH_DEST,ARCH_FILE_SIZE FROM SYS.V$DM_ARCH_INI WHERE ARCH_TYPE='LOCAL' AND ARCH_IS_VALID='Y';
image.png
未配置归档则配置开启,如:
$ mkdir -p /home/dmdba/dmdata_arch
$ disql sysdba/123456789@192.168.228.32:5236
SQL> alter database mount;
SQL> alter database add archivelog 'DEST=/home/dmdba/dmdata_arch,TYPE=LOCAL,FILE_SIZE=2048,SPACE_LIMIT=20480';
SQL> alter database archivelog;
SQL> alter database open;
image.png
再次检查:
image.png

3.3.4 附加日志参数

DM数据库需要开启逻辑附加日志,使用如下语句检查归档是否开启:
方式一:
[dmdba@db2 ~]$ cat /home/dmdba/dmdbms/data/DAMENG/dm.ini | grep RLOG_APPEND_LOGIC
image.png
方式二:
[dmdba@db2 ~]$ disql sysdba/123456789@192.168.228.32:5236
SQL> SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = 'RLOG_APPEND_LOGIC';
image.png
未配置则配置开启,如:
SQL> SP_SET_PARA_VALUE(1,'RLOG_APPEND_LOGIC',1);
image.png

3.3.5 查看数据库初始化参数

SQL> SELECT
decode((select SESS_VALUE from v$dm_ini where para_name ='LENGTH_IN_CHAR'),'0','关闭','开启') "字符存储" ,
decode((select SESS_VALUE from v$dm_ini where para_name ='BLANK_PAD_MODE'),'0','关闭','开启') "空格填充" ,
decode((select SESS_VALUE from v$dm_ini where para_name ='COMPATIBLE_MODE'),'0','none','1','SQL92','2','Oracle','3','MS SQL Server','4','MySQL','5','DM6','6','Teradata') "兼容数据库" ,
page/1024 ||'K' "页大小" ,
SF_GET_EXTENT_SIZE() "簇大小" ,
case when SF_GET_CASE_SENSITIVE_FLAG()='1' then '敏感' when SF_GET_CASE_SENSITIVE_FLAG()='0' then '不敏感' end "大小写是否敏感",
case when SF_GET_UNICODE_FLAG() ='0' then 'GB18030' when SF_GET_UNICODE_FLAG() ='1' then 'UTF-8' when SF_GET_UNICODE_FLAG() ='2' then 'EUC-KR' end "数据库字符集"
FROM
V$DATABASE;
image.png

3.3.6 创建DMHS同步用户

SQL> disql sysdba/123456789@192.168.228.32:5236
SQL> create user "u_dmhs" identified by "Hds6_MpSz3";
SQL> grant dba to u_dmhs;
SQL> grant vti to u_dmhs;

3.3.7 创建业务用户

生产环境需要结合业务系统需求创建表空间,如:

[dmdba@db2 ~]$ disql sysdba/123456789@192.168.228.32:5236
SQL> create tablespace busi_data datafile '/home/dmdba/dmdbms/data/DAMENG/busi_data_01.dbf' size 500 autoextend off;
SQL> create tablespace busi_index datafile '/home/dmdba/dmdbms/data/DAMENG/busi_index_01.dbf' size 200 autoextend off;
SQL> create user u_busi identified by "Busi6_MpS3" diskspace unlimited default tablespace busi_data default index tablespace busi_index;
SQL> grant public,resource to u_busi;

3.3.8 DMHS安装配置

3.3.8.1 DMHS安装

1、将dmhs_V4.3.10_dm8_rev129468_rh6_64_veri_20230504_sp6.bin传到目的服务器/home/dmdba目录。
2、将dm8_20230420_x86_rh6_64_ent_8.1.3.12_pack1_dmdci.zip中的dmoci目录传到目的服务器/home/dmdba目录。

[dmdba@db2 ~]$ ./dmhs_V4.3.10_dm8_rev129468_rh6_64_veri_20230504_sp6.bin -i
Extract install files..........

1.英文(English)
2.简体中文(简体中文)
请选择安装语言[2.简体中文(简体中文)]:
/tmp/DMHSInstall/install.log
1.免费试用达梦数据实时同步
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据实时同步]:
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件配置助手
4.手册
所需磁盘空间:541 MB
安装目录: [/home/dmdba/dmhs]
1.统一部署
2.现在初始化
是否初始化达梦数据实时同步系统[1.统一部署]:
正在安装
default start ...    default finished.
server start ...    server finished.
hs_agent start ...    hs_agent finished.
hsca start ...    hsca finished.
doc start ...    doc finished.
postinstall start ...    postinstall finished.
正在创建快捷方式
安装成功
远程部署工具配置
远程部署工具名称[HsAgent]:
主机Ip(外网)[192.168.122.1](192.168.122.1,192.168.228.32):
远程部署工具管理端口[5456](1000-65535):
内置数据库轮询间隔[3](1-60):
内置数据库IP[]:192.168.228.32
内置数据库端口[15236](1000-65535):
内置数据库用户名[SYSDBA]:
内置数据库密码[SYSDBA]:
服务脚本环境变量设置
依赖库路径
提示:此配置项供用户配置源或目的数据库依赖库路径和odbc依赖库路径, 多个路径以":"隔开(例:/opt/dmdbms/bin:/usr/local/lib),此配置项会添加到服务脚本的NEED_LIB_PATH的变量值中。
请配置依赖库路径:/home/dmdba/dmdbms/bin:/home/dmdba/dmhs/bin:/home/dmdba/dmoci
远程控制服务
1.自动
2.手动
启动方式:[2.手动]
正在创建远程控制服务
达梦数据实时同步V4.0安装完成
更多安装信息,请查看安装日志文件:
/home/dmdba/dmhs/log/install.log

3.3.8.2 dmhs.hs配置

image.png

3.3.8.3 DMHS服务脚本配置

[dmdba@db2 bin]$ cp service_template/DmhsService DmhsService
[dmdba@db2 bin]$ chmod 775 DmhsService
[dmdba@db2 bin]$ vi DmhsService
DMHS_HOME=/home/dmdba/dmhs
PROG_DIR=/home/dmdba/dmhs/bin
CONF_PATH=/home/dmdba/dmhs/bin/dmhs.hs
NEED_LIB_PATH=/home/dmdba/dmdbms/bin:/home/dmdba/dmhs/bin:/home/dmdba/dmoci

修改dmdba用户环境变量,将LD_LIBRARY_PATH增加/home/dmdba/dmoci

[dmdba@db2 ~]$ cd
[dmdba@db2 ~]$ vi .bash_profile
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/dmdba/dmdbms/bin"
export DM_HOME="/home/dmdba/dmdbms"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
export DMHS_HOME=/home/dmdba/dmhs
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/dmdba/dmhs/bin:/home/dmdba/dmoci
[dmdba@db2 ~]$ source .bash_profile

4 启动DMHS同步

4.1 目的端操作

4.1.1 启动服务

[dmdba@db2 ~]$ LANG=zh_CN.gb18030
[dmdba@db2 ~]$ cd dmhs/bin
[dmdba@db2 bin]$ ./DmhsService start
Starting DmhsService:                                      [ OK ]
[dmdba@db2 bin]$ ./dmhs_console 
DMHS console tool: V4.3.10-Build(2023.05.04-129468trunc)_64_2304_sp6
Copyright (c) 2020, DMHS. All rights reserved.
Type ? or "help" for help, type "quit" to quit console.

连接到DMHS:127.0.0.1:5345
执行成功
Dameng HS Server V4.3.10-Build(2023.05.04-129468trunc)_64_2304_sp6

DMHS> start exec
执行成功

4.1.2 关注日志

关注以下3个日志:
$ tail -f /home/dmdba/dmhs/log/DmhsService.log
$ tail -f /home/dmdba/dmhs/bin/log/csl_202305.log
$ tail -f /home/dmdba/dmhs/bin/log/dmhs_202305.log

4.2 源端操作

4.2.1 启动服务

[dmhs@db1 ~]$ LANG=zh_CN.gb18030
[dmhs@db1 ~]$ cd dmhs/bin
[dmhs@db1 bin]$ ./DmhsService start
Starting DmhsService:                                      [ OK ]
[dmhs@db1 bin]$ ./dmhs_console 
DMHS console tool: V4.3.10-Build(2023.04.19-128484trunc)_64_2304_sp2
Copyright (c) 2020, DMHS. All rights reserved.
Type ? or "help" for help, type "quit" to quit console.
连接到DMHS:127.0.0.1:5345
执行成功
Dameng HS Server V4.3.10-Build(2023.04.19-128484trunc)_64_2304_sp2
DMHS>

4.2.2 关注日志

关注以下3个日志:
$ tail -f /home/dmhs/dmhs/log/DmhsService.log
$ tail -f /home/dmhs/dmhs/bin/log/csl_202305.log
$ tail -f /home/dmhs/dmhs/bin/log/dmhs_202305.log

4.2.3 数据装载场景说明

初始字典装载:

DMHS> COPY 0 "sch.name='testdb'" CLEAR|DICT

装载数据库:

DMHS> COPY 0 "sch.name='testdb'" CREATE|INDEX|LSN|COMMENT|INSERT|THREAD|8

如有多个模式,可用in关键字,如:

COPY 0 "sch.name in ('testdb',’testdb2’)" CREATE|INDEX|LSN|COMMENT|INSERT|THREAD|8

目标库已有表,装载库:

DMHS> COPY 0 "sch.name='testdb'" INSERT|THREAD|8

装载表:

DMHS> COPY 0 "sch.name='testdb' and tab.table_name='tb_3'" CREATE|INDEX|LSN|COMMENT|INSERT|THREAD|8

如有多个表,可用in关键字,如:

COPY 0 "sch.name='testdb' and tab.table_name in ('tb_3',’tb_4’)" CREATE|INDEX|LSN|COMMENT|INSERT|THREAD|8

启动同步:

DMHS> start cpt

https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服