当前位置: 首页 > news >正文

达梦数据库系列—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的启动过程中主要做了以下几件事&#xff1a; 初始化数据目录&#xff1a;如果数据目录是第一次使用&#xff0c;PostgreSQL会进行初始化&#xff0c;创建必要的系统表和目录结构。 读取配置文件&#xff1a;PostgreSQL会读取并解析配置文件&…...

ActiveMQ、RabbitMQ、Kafka、RocketMQ的区别简介

目录 1. 基本概述 2. 性能与吞吐量 3. 消息模型与特性 4. 生态系统与社区支持 5. 复杂性与运维成本 6.在优先级队列、延迟队列、死信队列、重试队列、消费模式、广播模式方面的区别 7.在消息回溯、消息堆积持久化、消息追踪、消息过滤方面的区别 8.在多租户、多协议支持…...

7.1 多态案例

一、案例1&#xff1a;计算器类 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 "-"…...

革新测试管理:集远程、协同、自动化于一身的统一测试管理平台

一、研发背景 当下汽车电子测试领域随着不断发展&#xff0c;自动化、智能化的软硬件一体测试解决方案已经成为趋势。能够整合各种测试资源、自动化测试流程&#xff0c;并提供数据分析和可视化报告&#xff0c;从而提高测试效率、降低成本&#xff0c;并确保汽车电子系统的可…...

HAProxy的详解

一、介绍 1.1 定义 HAProxy是一个使用C语言编写的自由及开放源代码软件&#xff0c;其提供高可用性、负载均衡&#xff0c;以及基于TCP和HTTP的应用程序代理。 HAProxy特别适用于那些负载特大的web站点&#xff0c;这些站点通常又需要会话保持或七层处理。HAProxy运行在当前…...

网络安全实训第一天(dami靶场搭建,XSS、CSRF、模板、任意文件删除添加、框架、密码爆破漏洞)

1.环境准备&#xff1a;搭建漏洞测试的基础环境 安装完phpstudy之后&#xff0c;开启MySQL和Nginx&#xff0c;将dami文件夹复制到网站的根目录下&#xff0c;最后访问安装phptudy机器的IP地址 第一次登录删除dami根目录下install.lck文件 如果检测环境不正确可以下载php5.3.2…...

4.1 SQL的起源与发展

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 工&#x1f497;重&#x1f497;hao&#x1f497;&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大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&#xff08;数据同步&#xff09; 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&#xff08;Network File System&#xff0…...

游戏管理系统

目录 Java程序设计课程设计 游戏管理系统 1系统简介 1.1需求分析 1.2 编程环境与工具 2系统总体设计 2.1 系统的功能模块图。 2.2 各功能模块简介。 3主要业务流程 &#xff08;1&#xff09;用户及管理员登录流程图 &#xff08;2&#xff09;信息添加流程 &#x…...

坐牢第二十七天(聊天室)

基于UDP的网络聊天室 一.项目需求&#xff1a; 1.如果有用户登录&#xff0c;其他用户可以收到这个人的登录信息 2.如果有人发送信息&#xff0c;其他用户可以收到这个人的群聊信息 3.如果有人下线&#xff0c;其他用户可以收到这个人的下线信息 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的使用之玩家和静态物理组碰撞

玩家和静态物理组都加载好了&#xff0c;那就应该开始操作玩家动态和静态之间的碰撞了 下面是通过点击图片按钮来操作碰撞的 sky.on(pointerdown, function () { console.log(图片被点击了&#xff01;); }) 图片点击后让动态的玩家和静态的物理组碰撞&#xff0c;就可以这…...

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 倍&#xff0c;内存使用量减少了 70%&#xff0c;而且准确性不会降低&#xff01; 特点 通过手动派生所有计算繁重的数学步骤和手写 GPU 内核&#xff0c;unsloth 可以在不更改任何硬件的情况…...

IPD-华为研发之道分析与理解

关于西方众多优秀的管理模式、理论我们学习过&#xff0c;也借鉴以及实践过&#xff0c;拿到《IPD-华为研发之道》通读研习后&#xff0c;正如书中所述&#xff0c;IPD是一套产品开发的模式、理念与方法&#xff0c;IPD思想&#xff0c;流程和方法是诸多成功企业优秀实践的经验…...

时空序列顶会文章

ICLR 2024 时间序列&#xff08;Time Series&#xff09;高分论文 - 知乎 (zhihu.com) ICML2024全部论文 icml.cc/virtual/2024/papers.html...

C语言-使用指针数组作为函数参数,实现对10个字符串进行排序

使用指针数组作为函数参数&#xff0c;实现对10个字符串进行排序 1.输入 lisi hahaha hehehe helloa leihoua lisi nihaoa wangwu ajax bureau2.输出 ajax bureau hahaha hehehe helloa leihoua lisi lisi nihaoa wangwu3.程序&#xff1a; #define _CRT_SECURE_NO_WARNING…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (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 插件详为例&#xff0c;Webpack.config.js它可能的配置和含义如下&#xff1a; 前言 Module Federation 的Webpack.config.js核心配置包括&#xff1a; name filename&#xff08;定义应用标识&#xff09; remotes&#xff08;引用远程模块&#xff0…...

GAN模式奔溃的探讨论文综述(一)

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

如何做好一份技术文档?从规划到实践的完整指南

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

JUC并发编程(二)Monitor/自旋/轻量级/锁膨胀/wait/notify/锁消除

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