达梦数据库系列—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…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...

GAN模式奔溃的探讨论文综述(一)
简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...

如何做好一份技术文档?从规划到实践的完整指南
如何做好一份技术文档?从规划到实践的完整指南 🌟 嗨,我是IRpickstars! 🌌 总有一行代码,能点亮万千星辰。 🔍 在技术的宇宙中,我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...

JUC并发编程(二)Monitor/自旋/轻量级/锁膨胀/wait/notify/锁消除
目录 一 基础 1 概念 2 卖票问题 3 转账问题 二 锁机制与优化策略 0 Monitor 1 轻量级锁 2 锁膨胀 3 自旋 4 偏向锁 5 锁消除 6 wait /notify 7 sleep与wait的对比 8 join原理 一 基础 1 概念 临界区 一段代码块内如果存在对共享资源的多线程读写操作…...