需要源端安装达梦数据库并启动,数据库端口都为5236,链接为:https://blog.csdn.net/yxy___/article/details/114086338
需要目的端安装mysql数据库并启动,且能够使用odbc连接数据库
需要源端和目的端都安装对应版本的的dmhs,bin目录下需要对应的key和依赖
连接数据库:
./disql SYSDBA/SYSDBA@localhost:5236
开启归档语句:
alter database mount;
alter database archivelog;
alter database add archivelog ‘TYPE=LOCAL,DEST=/home/dmdba/dmdbms/data/HS_DM/arch,FILE_SIZE=1024, SPACE_LIMIT=10240’;
alter database open;
查询归档是否开启:
select arch_mode from v$database; (Y为开启)
连上数据库执行语句:SP_SET_PARA_VALUE(2,‘RLOG_APPEND_LOGIC’,1); --重启数据库生效
查询逻辑日志是否开启:
SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = ‘RLOG_APPEND_LOGIC’; (1为开启)
dm.ini 配置参数中“FAST_COMMIT”必须为 0,否则会导致逻辑日志不全而影响同步。
select para_value from v$dm_ini where para_name = ‘FAST_COMMIT’; (0为正常)
如果要求 DDL 同步,那么源端需要创建 DDL 触发器和辅助表。创建的脚本参见 DMHS 安装目录下 scripts 子目录中“ddl_sql_dm8.sql”。注意创建时需要使用SYSDBA 用户。(下图为创建成功)
dmhs.hs 是 DMHS 默认的配置文件名,在dmhs安装目录的bin目录下,如果需要 DDL 同步,那么基本的配置示例如下(配置为达梦的SYSDBA用户同步到mysql的hs_mysql用户):
<?xml version="1.0" encoding="utf-8"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>45</ckpt_interval>
<siteid>1</siteid>
<version>2.0</version>
<?xml version="1.0" encoding="utf-8"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>45</ckpt_interval>
<siteid>1</siteid>
<version>2.0</version>
<?xml version="1.0" encoding="utf-8"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>45</ckpt_interval>
<siteid>1</siteid>
<version>2.0</version>
</base>
<cpt>
<db_type>dm8</db_type>
<db_server>192.168.202.100</db_server>
<db_port>5236</db_port>
<db_name></db_name>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<ddl_mask>op:obj</ddl_mask>
<char_code>PG_UTF8</char_code>
<arch>
<clear_interval>600</clear_interval>
<clear_flag>0</clear_flag>
<dir>/home/dmdba/dmdbms/data/HS_DM/arch</dir>
</arch>
<send><!-- 目的端配置 -->
<ip>192.168.202.101</ip>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
<filter>
<enable><!-- 白名单,所有允许同步的表 -->
<item>SYSDBA.*</item>
</enable>
</filter>
<map><!-- 把SYSDBA下的表同步到hs_mysql -->
<item>SYSDBA.*==hs_mysql.*</item>
</map>
</send>
</cpt>
</dmhs>
1编辑环境变量文件:
vim ~/.bash_profile
最后一排增加(对应修改为自己的安装目录):
export DMHS_HOME=/opt/hsdm-mysql
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/hsdm-mysql/bin:/home/dmdba/dmdbms/bin
2使环境变量生效:
source ~/.bash_profile
3查询环境变量是否设置成功
echo $LD_LIBRARY_PATH
如果有/opt/hsdm-mysql/bin:/home/dmdba/dmdbms/bin几个目录则为成功
①在目的端mysql上创建一个新的database:hs_mysql,以及一个新的用户hs_mysql:
create database hs_mysql;
create user hs_mysql identified by ‘hs_mysql’;
②授权(目的为让hs_mysql用户能够操作hs_mysql数据库,远程工具用hs_mysql用户登录,能够看到hs_mysql数据库则算成功)
grant all privileges on hs_mysql.* TO ‘hs_mysql’@’%’ IDENTIFIED by ‘hs_mysql’;
在hs安装目录的bin目录下创建dmhs.hs文件:
<?xml version="1.0" encoding="utf-8"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>60</ckpt_interval>
<siteid>2</siteid>
<version>2.0</version>
</base>
<exec>
<recv>
<data_port>5346</data_port>
</recv>
<db_type>mysql</db_type>
<db_server>192.168.202.101</db_server>
<db_user>hs_mysql</db_user>
<db_pwd>hs_mysql</db_pwd>
<driver>MySQL ODBC 5.1 Driver</driver>
<db_port>3306</db_port>
<db_name>hs_mysql</db_name>
#PG_UTF8
<exec_thr>1</exec_thr>
<exec_sql>1024</exec_sql>
<exec_trx> 5000 </exec_trx>
<exec_rows>1000</exec_rows>
</exec>
</dmhs>
1编辑环境变量文件:
vim ~/.bash_profile
最后一排增加(对应修改为自己的安装目录):
export DMHS_HOME=/opt/hsdm-mysql
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/hsdm-mysql/bin:/opt/mysql/lib
2使环境变量生效:
source ~/.bash_profile
3查询环境变量是否设置成功
echo $LD_LIBRARY_PATH
如果有/opt/hsdm-mysql/bin:/opt/mysql/lib几个目录则为成功
需要ODBC能够通过hs_mysql用户连上mysql数据库
源端和目的端都前台启动dmhs服务:
cd /opt/hsdm-mysql/bin
./dmhs_server dmhs.hs
初始装载是将源端数据库中的初始数据装载到目的端数据库,使 DMHS 同步的时刻源和目的端的同步表数据一 致。装载前源端 DMHS 服务和目的端 DMHS 服务都需要开启。
①目的端
目的端新开一个连接,依次执行:
cd /opt/hsdm-mysql/bin
./dmhs_console
connect
start exec
成功执行,并在目的端的hs_mysql下创建表:
②源端
开始初始装载,源端新开一个连接,依次执行:
cd /opt/hsdm-mysql/bin
./dmhs_console
connect
clear exec lsn
copy 0 “sch.name=‘SYSDBA’” DICT|LSN|CREATE|INSERT|INDEX
初始装载完成后,则可以开启同步:
源端:
./dmhs_console
start cpt