达梦数据库系列—48.DMHS实现Mysql到DM8的同步
目录
DMHS实现Mysql到DM8的同步
1、准备介质
2、安装
3、准备源端Mysql和目标端DM8
软件安装
数据库创建
打开归档
开启附加日志
创建辅助表
Mysql客户端驱动
Mysql端安装ODBC
检查依赖包
创建连接用户
创建测试表
4、同步配置
修改服务配置
Mysql到Dm单向同步配置
Dm到Mysql单向同步配置
5、启动DMHS服务
初始装载
装载数据
启动exec模块
启动cpt模块
6、查看信息
7、报错处理
DMHS实现Mysql到DM8的同步
源端:Mysql8.0.35,RH7.5
目标端:DM8,麒麟V10
介质:
![]()
![]()
1、准备介质
2、安装






3、准备源端Mysql和目标端DM8
软件安装
略
数据库创建
没有数据库可参考该步骤创建,否则略过。
Mysql端:
略
DM端:
dmdba用户:
dminit path=/dm/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 DB_NAME=HS02 INSTANCE_NAME=HS02 PORT_NUM=5239
root用户:
cd /home/dmdba/dmdbms/script/root/./dm_service_installer.sh -t dmserver -dm_ini /dm/data/HS02/dm.ini -p HS02
打开归档
Mysql端:
Mysql开启binlog
mysql> show variables like 'log_bin';mysql> show variables like 'binlog_format';

目标端:
ALTER DATABASE MOUNT;ALTER DATABASE ADD ARCHIVELOG 'TYPE = LOCAL,DEST = /dm/data/HS02/arch,FILE_SIZE = 128,SPACE_LIMIT = 1024';ALTER DATABASE ARCHIVELOG;ALTER DATABASE OPEN;select para_value from v$dm_ini where para_name in ('ARCH_INI');
开启附加日志
DM端:
SP_SET_PARA_VALUE(1,'RLOG_APPEND_LOGIC',1);select para_value from v$dm_ini where para_name in ('RLOG_APPEND_LOGIC');
创建辅助表
DM端执行:
set define offset char_code utf8start /dmhs/scripts/ddl_sql_dm8.sql共9个辅助表,4个触发器:select owner, table_name from dba_tables where owner = 'SYSDBA' and table_name like 'DMHS%' and status = 'VALID';select owner, trigger_name from dba_triggers where owner = 'SYSDBA' and trigger_name like 'DMHS%' and status = 'Y';
Mysql客户端驱动
下载:MySQL :: Download MySQL Connector/ODBC (Archived Versions)
tar -zxvf mysql-connector-odbc-8.0.28-linux-el7-x86-64bit.tar.gz
Mysql端安装ODBC
tar -xzvf unixODBC-2.3.0.tar.gzcd unixODBC-2.3.0./configuremakemake install
cd /usr/local/etc
vim odbcinst.ini
[MySQL ODBC driver]Description = ODBC for MySQLDriver = /opt/mysql-connector-odbc-8.0.28-linux-el7-x86-64bit/lib/libmyodbc5w.soUsageCount = 1
vim odbc.ini
[mysql]Description = ODBC for MySQLDriver = MySQL ODBC driverDATABASE=testdbSERVER = 192.168.64.129UserID = rootPassword = xxxxxxPORT = 31306
连接
odbcinst -jisql mysql -v
Mysql端:
unixodbc动态库加到环境变量:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

创建软连接:
ln -s /usr/local/lib/libodbc.so.2 /usr/local/lib/libodbc.so.1
ln -s /usr/local/lib/libodbcinst.so.2 /usr/local/lib/libodbcinst.so.1
DM端:
需要下载DMDCI的包
把libdmoci.so上传到DM端的/dmhs/bin目录下
检查依赖包
源端
ldd libcpt_mysql.so
目的端
ldd libdmhs_exec.so
创建连接用户
源端执行:
CREATE USER HSEXEC@'%' IDENTIFIED WITH 'mysql_native_password' BY 'HSEXEC';grant all privileges on *.* to HSEXEC;flush privileges;
目标端执行:
CREATE TABLESPACE HSEXEC DATAFILE 'HSEXEC.DBF' size 128;CREATE USER HSEXEC IDENTIFIED by "HSEXEC" DEFAULT TABLESPACE HSEXEC DEFAULT INDEX TABLESPACE HSEXEC;GRANT VTI TO HSEXEC;GRANT PUBLIC TO HSEXEC;GRANT RESOURCE TO HSEXEC;GRANT DBA TO HSEXEC;
创建测试表
略
源端:
create database testdb;create table testdb.t_mysql_dm (id int ,name varchar(10));insert into testdb.t_mysql_dm VALUES(1,'TEST');COMMIT;
4、同步配置
修改服务配置
节点一:
cd /dmhs/bin
cp TemplateDmhsService DmhsService
vim DmhsService

节点二:
同上
Mysql到Dm单向同步配置
源端:
cd /dmhs/bin
vim dmhs.hs
exec_policy=2表示执行事务出错时,忽略出错的操作后继续执行;ddl_continue=1表示DDL操作同步出错时,继续往下操作。
注意:mysql端的item表名用小写,DM端的用户名表名必须用大写
<?xml version="1.0" encoding="GB2312"?><dmhs><base><lang>en</lang><mgr_port>5345</mgr_port><ckpt_interval>60</ckpt_interval><siteid>11</siteid></base><cpt><db_type>mysql</db_type><db_server>192.168.64.129</db_server><db_port>31306</db_port><db_name>testdb</db_name><db_user>HSEXEC</db_user><db_pwd>HSEXEC</db_pwd><char_code>PG_UTF8</char_code><ddl_mask>op:obj</ddl_mask><driver>MySQL ODBC driver</driver><arch><clear_interval>600</clear_interval><clear_flag>0</clear_flag><dir></dir></arch><send><ip>192.168.64.132</ip><mgr_port>5345</mgr_port><data_port>5346</data_port><filter><enable><item>testdb.t_mysql_dm</item></enable><disable></disable></filter><map><item>testdb.t_mysql_dm==HSTEST1.T_MYSQL_DM</item></map></send></cpt></dmhs>
目标端:
cd /dmhs/bin
vim dmhs.hs
<?xml version="1.0" encoding="GB2312" standalone="no"?><dmhs><base><lang>en</lang><mgr_port>5345</mgr_port><chk_interval>3</chk_interval><ckpt_interval>60</ckpt_interval><siteid>22</siteid></base><recv><mgr_port>5345</mgr_port><data_port>5346</data_port><exec><db_type>DM8</db_type><db_server>192.168.64.132</db_server><db_user>HSEXEC</db_user><db_pwd>HSEXEC</db_pwd><db_port>5239</db_port><char_code>PG_UTF8</char_code><level>0</level><exec_thr>4</exec_thr><exec_sql>1024</exec_sql><exec_trx>5000</exec_trx><exec_rows>250</exec_rows><case_sensitive>1</case_sensitive><toggle_case>0</toggle_case><exec_policy>2</exec_policy><commit_policy>1</commit_policy><enable_merge>1</enable_merge><affect_row>0</affect_row></exec></recv></dmhs>
Dm到Mysql单向同步配置
源端:
<?xml version="1.0" encoding="utf-8"?><dmhs><base><lang>en</lang><mgr_port>5345</mgr_port><chk_interval>2</chk_interval><siteid>22</siteid><version>2.0</version></base><cpt><db_type>dm8</db_type><db_server>192.168.64.132</db_server><db_user>HSEXEC</db_user><db_pwd>HSEXEC</db_pwd><db_port>5239</db_port><char_code>PG_UTF8</char_code><ddl_mask>op:obj</ddl_mask><parse_thr>1</parse_thr><arch><clear_interval>600</clear_interval><clear_flag>1</clear_flag><bak_dir></bak_dir></arch><send><ip>192.168.64.129</ip><mgr_port>5345</mgr_port><data_port>5346</data_port><level>0</level><trigger>0</trigger><constraint>0</constraint><identity>0</identity><net_turns>0</net_turns><filter><enable><item>HSTEST1.T_MYSQL_DM</item></enable><disable></disable></filter><map><item>HSTEST1.T_MYSQL_DM==testdb.t_mysql_dm</item></map></send></cpt></dmhs>
目标端:
<?xml version="1.0" encoding="utf-8"?><dmhs><base><lang>en</lang><mgr_port>5345</mgr_port><chk_interval>20</chk_interval><siteid>11</siteid><version>2.0</version></base><exec><char_code>PG_UTF8</char_code><recv><mgr_port>5345</mgr_port><data_port>5346</data_port></recv><driver>{MySQL ODBC driver}</driver><db_type>mysql</db_type><db_server>192.168.64.129</db_server><db_name>testdb</db_name><db_user>HSEXEC</db_user><db_pwd>HSEXEC</db_pwd><db_port>31306</db_port><exec_thr>4</exec_thr><exec_sql>512</exec_sql><exec_trx> 5000 </exec_trx><exec_rows>250</exec_rows><exec_policy>2</exec_policy></exec></dmhs>
5、启动DMHS服务
节点一:
cd /dmhs/bin./DmhsService start
或者
./dmhs_server dmhs.hsps -ef |grep dmhs
节点二:
cd /dmhs/bin./DmhsService start
或者
./dmhs_server dmhs.hsps -ef |grep dmhs
初始装载
目的端:
./dmhs_consoleDMHS> connect
DMHS> start exec
源端:
./dmhs_consoleDMHS> connect
DMHS> clear exec lsn
装载字典
copy 0 "sch.name = 'testdb'" DICT
装载数据
源端:
装载建表语句
copy 0 "sch.name = 'testdb'" CREATE
装载数据
copy 0 "sch.name = 'HSTEST'" INSERT|THREAD|2
装载某个表的数据
copy 0 "sch.name = 'HSTEST' and tab.name in ('T_ORA_DM')" INSERT|THREAD|2copy 0 "sch.name='EDM_BASE' and tab.name in('VW_CHANNEL_TR_STATUS')" DICT|CREATE|INSERT|THREAD|16|FAST|200|group|32
启动exec模块
目标端:
cd /dmhs/bin./dmhs_consoleDMHS> start execDMHS> state
启动cpt模块
源端:
源端cpt启动,目标端exec会自动启动
DMHS> start cptDMHS> state
6、查看信息
查看日志:
cd /dmhs/bin/logtail -100f dmhs_202408.log
目标端:
Exec
thr
trx
源端:
cpt
7、报错处理
1、获取不到映射表的字段信息

ODBC client版本过小,更换版本为8.0
2、start cpt 报解析日志失败

修改配置文件,增加字符集UTF8:
<char_code>PG_UTF8</char_code>
3、LSN清空卡住

如果执行卡住,删除bin/log下的日志以及bin目录下的dmhs_cpt.tmp
然后重启dmhs_server,再执行clear exec lsn
达梦技术社区:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台
相关文章:
达梦数据库系列—48.DMHS实现Mysql到DM8的同步
目录 DMHS实现Mysql到DM8的同步 1、准备介质 2、安装 3、准备源端Mysql和目标端DM8 软件安装 数据库创建 打开归档 开启附加日志 创建辅助表 Mysql客户端驱动 Mysql端安装ODBC 检查依赖包 创建连接用户 创建测试表 4、同步配置 修改服务配置 Mysql到Dm单向同步…...
PostgreSQL的启动过程
PostgreSQL的启动过程 PostgreSQL的启动过程中主要做了以下几件事: 初始化数据目录:如果数据目录是第一次使用,PostgreSQL会进行初始化,创建必要的系统表和目录结构。 读取配置文件:PostgreSQL会读取并解析配置文件&…...
ActiveMQ、RabbitMQ、Kafka、RocketMQ的区别简介
目录 1. 基本概述 2. 性能与吞吐量 3. 消息模型与特性 4. 生态系统与社区支持 5. 复杂性与运维成本 6.在优先级队列、延迟队列、死信队列、重试队列、消费模式、广播模式方面的区别 7.在消息回溯、消息堆积持久化、消息追踪、消息过滤方面的区别 8.在多租户、多协议支持…...
7.1 多态案例
一、案例1:计算器类 1.1 普通方式实现 #include <iostream> #include <string> using namespace std;class Calculator { public:int num1;int num2;int result(string oper){if (oper "")return num1 num2;else if (oper "-"…...
革新测试管理:集远程、协同、自动化于一身的统一测试管理平台
一、研发背景 当下汽车电子测试领域随着不断发展,自动化、智能化的软硬件一体测试解决方案已经成为趋势。能够整合各种测试资源、自动化测试流程,并提供数据分析和可视化报告,从而提高测试效率、降低成本,并确保汽车电子系统的可…...
HAProxy的详解
一、介绍 1.1 定义 HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。 HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前…...
网络安全实训第一天(dami靶场搭建,XSS、CSRF、模板、任意文件删除添加、框架、密码爆破漏洞)
1.环境准备:搭建漏洞测试的基础环境 安装完phpstudy之后,开启MySQL和Nginx,将dami文件夹复制到网站的根目录下,最后访问安装phptudy机器的IP地址 第一次登录删除dami根目录下install.lck文件 如果检测环境不正确可以下载php5.3.2…...
4.1 SQL的起源与发展
欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题.…...
android中实现禁掉有线网络
1.首先初始化mINetworkManagementServiceProxy // INetworkManagementService mNwService; Object mINetworkManagementServiceProxy;public void init() {// IBinder b ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE);// mNwService INetworkManagementSe…...
docker-compose安装MongoDB 7.0.12
文章目录 一. Mac1.1 创建目录1.2 docker-compose.yaml默认不开启relSet开启relSet(数据同步) 1.3 部署1.4 卸载1.5 replSet配置1.5.1 初始化replSet1.5.2 创建超管用户1.5.3 验证用户1.5.4 查看replSet状态 二. Centos72.1 创建目录2.2 docker-compose.…...
Ubuntu下NFS和SSH服务
本篇文章记录Ubuntu下如何对NFS和SSH服务进行配置和开启。 目录 一、NFS服务 二、SSH服务 1、安装SSH服务 2. 启动和检查SSH服务 3. 配置SSH服务 4. 连接到SSH服务 5. 设置防火墙 6. 测试连接 三、结语 一、NFS服务 NFS(Network File System࿰…...
游戏管理系统
目录 Java程序设计课程设计 游戏管理系统 1系统简介 1.1需求分析 1.2 编程环境与工具 2系统总体设计 2.1 系统的功能模块图。 2.2 各功能模块简介。 3主要业务流程 (1)用户及管理员登录流程图 (2)信息添加流程 &#x…...
坐牢第二十七天(聊天室)
基于UDP的网络聊天室 一.项目需求: 1.如果有用户登录,其他用户可以收到这个人的登录信息 2.如果有人发送信息,其他用户可以收到这个人的群聊信息 3.如果有人下线,其他用户可以收到这个人的下线信息 4.服务器可以发送系统信息…...
C++自学笔记33(数据类型总结与变量)
数据类型 类型位范围char1 个字节-128 到 127 或者 0 到 255unsigned char1 个字节0 到 255signed char1 个字节-128 到 127int4 个字节-2147483648 到 2147483647unsigned int4 个字节0 到 4294967295signed int4 个字节-2147483648 到 2147483647short int2 个字节-32768 到…...
游戏引擎phaser.js3的使用之玩家和静态物理组碰撞
玩家和静态物理组都加载好了,那就应该开始操作玩家动态和静态之间的碰撞了 下面是通过点击图片按钮来操作碰撞的 sky.on(pointerdown, function () { console.log(图片被点击了!); }) 图片点击后让动态的玩家和静态的物理组碰撞,就可以这…...
springboot整合mybatis以及mybatis-plus 开发
一、springboot整合mybatis 1.注解版 1.1 导入坐标 <dependencies><!--mybatis坐标--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</…...
大语言模型微调框架Unsloth:简化模型微调流程,提升模型性能
Unsloth 将 Llama-3、Mistral、Phi-3 和 Gemma 等大型语言模型的微调速度提高了 2 倍,内存使用量减少了 70%,而且准确性不会降低! 特点 通过手动派生所有计算繁重的数学步骤和手写 GPU 内核,unsloth 可以在不更改任何硬件的情况…...
IPD-华为研发之道分析与理解
关于西方众多优秀的管理模式、理论我们学习过,也借鉴以及实践过,拿到《IPD-华为研发之道》通读研习后,正如书中所述,IPD是一套产品开发的模式、理念与方法,IPD思想,流程和方法是诸多成功企业优秀实践的经验…...
时空序列顶会文章
ICLR 2024 时间序列(Time Series)高分论文 - 知乎 (zhihu.com) ICML2024全部论文 icml.cc/virtual/2024/papers.html...
C语言-使用指针数组作为函数参数,实现对10个字符串进行排序
使用指针数组作为函数参数,实现对10个字符串进行排序 1.输入 lisi hahaha hehehe helloa leihoua lisi nihaoa wangwu ajax bureau2.输出 ajax bureau hahaha hehehe helloa leihoua lisi lisi nihaoa wangwu3.程序: #define _CRT_SECURE_NO_WARNING…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
