达梦数据库系列—48.DMHS实现Mysql到DM8的同步

news2024/12/25 2:38:33

目录

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 off

set char_code utf8

start /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.gz

cd unixODBC-2.3.0

./configure

make

make install

cd /usr/local/etc

vim odbcinst.ini

[MySQL ODBC driver]

Description     = ODBC for MySQL

Driver          = /opt/mysql-connector-odbc-8.0.28-linux-el7-x86-64bit/lib/libmyodbc5w.so

UsageCount       = 1

vim odbc.ini

[mysql]

Description = ODBC for MySQL

Driver = MySQL ODBC driver

DATABASE=testdb

SERVER = 192.168.64.129

UserID = root

Password = xxxxxx

PORT = 31306

连接

odbcinst -j

isql 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.hs

ps -ef |grep dmhs

节点二:

cd /dmhs/bin

./DmhsService start

或者

./dmhs_server dmhs.hs

ps -ef |grep dmhs

初始装载

目的端:

./dmhs_console

DMHS> connect
DMHS> start exec

源端:

 ./dmhs_console

DMHS> 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|2

copy 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_console

DMHS> start exec

DMHS> state

启动cpt模块

源端:

源端cpt启动,目标端exec会自动启动

DMHS> start cpt

DMHS> state

 

6、查看信息

查看日志:

cd /dmhs/bin/log

tail -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

达梦技术社区:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2047016.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CVPR2023《DNF: Decouple and Feedback Network for Seeing in the Dark》暗光图像增强论文阅读笔记

相关链接 论文链接 https://openaccess.thecvf.com/content/CVPR2023/papers/Jin_DNF_Decouple_and_Feedback_Network_for_Seeing_in_the_Dark_CVPR_2023_paper.pdf 代码链接 https://github.com/Srameo/DNF 摘要 RAW数据的独特属性在低光照图像增强方面展现出巨大潜力。…

ansible环境搭建

任务背景 公司的服务器越来越多, 维护⼀些简单的事情都会变得很繁琐。⽤ shell脚本来管理少量服务器效率还⾏, 服务器多了之后, shell脚本⽆ 法实现⾼效率运维。这种情况下&#xff0c;我们需要引⼊⾃动化运维⼯具, 对 多台服务器实现⾼效运维。 任务要求 通过管理服务器能够…

nginx核心配置示例

目录 1、nginx location的详细使用 &#xff08;1&#xff09;精确匹配 &#xff08;2&#xff09;区分大小写 &#xff08;3&#xff09;不区分大小写 &#xff08;4&#xff09;匹配文件名后缀 2、nginx下的用户认证 3、nginx自定义错误页面 4、自定义错误日志 5、n…

Scrapy框架进阶攻略:代理设置、请求优化及链家网实战项目全解析

scrapy框架 加代理 付费代理IP池 middlewares.py # 代理IP池 class ProxyMiddleware(object):proxypool_url http://127.0.0.1:5555/randomlogger logging.getLogger(middlewares.proxy)async def process_request(self, request, spider):async with aiohttp.ClientSess…

【乐吾乐大屏可视化组态编辑器】状态切换

状态切换 开关状态 开关的断开和闭合。可以拖拽国家电网图库中的“开”与“关”两个组件&#xff0c;选中对齐重叠在一起后&#xff0c;右键选择“组合为状态”&#xff0c;在“外观”面板可以任意切换状态。 想实现点击开关图元就可以切换开关状态&#xff0c;可以选中图元添…

基于 springboot 2 和 vue 3 的 博客论坛系统

1. 网站信息 博客论坛系统&#xff1a;http://106.53.164.141:8200 本网站是 基于 SpringBootVue 前后端分离的博客论坛系统 前台用户&#xff1a;注册登录&#xff1b;博客和活动相关的展示、浏览、点赞、收藏、评论、编辑等功能 后台管理员&#xff1a;管理公告、博客、活…

日撸Java三百行(day25:栈实现二叉树深度遍历之中序遍历)

目录 一、栈实现二叉树遍历的可行性 二、由递归推出栈如何实现中序遍历 1.左子树入栈 2.根结点出栈 3.右子树入栈 4.实例说明 三、代码实现 总结 一、栈实现二叉树遍历的可行性 在日撸Java三百行&#xff08;day16&#xff1a;递归&#xff09;中&#xff0c;我们讲过…

Debian 12 基于KubeAdm搭建多节点K8S 1.28.x集群

背景 CentOS 7 官方支持和更新已于2024年6月30日结束。这意味着CentOS 7 不再接受官方的更新和补丁。并且官方推荐用户迁移到新的操作系统&#xff1b;而转移到Debian的优势有&#xff1a; 更加成熟的软件包管理系统&#xff1a;Debian 的包管理系统是 APT&#xff08;Advanc…

cleanmymacx官网2024中文官方地址

大家好&#xff0c;我是你们的科技小助手。今天来跟大家聊聊一款非常神奇的产品——cleanmymacx。这是一款Mac专用的系统优化工具&#xff0c;最近刚刚更新了新功能哦&#xff01;你们是不是经常觉得电脑越来越慢&#xff0c;硬盘空间不足&#xff0c;但又不知道该删除什么文件…

机器学习系列—深入探索弗里德曼检验:非参数统计分析的利器

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

滴滴开源新项目Unify:聚焦Flutter与原生通信难题,助力跨端应用落地

引言 在移动开发领域&#xff0c;移动跨端技术因其提效收益&#xff0c;逐渐成为业界趋势之一。Flutter 作为近年来热门的跨端技术&#xff0c;以高性能、自渲染、泛跨端著称&#xff0c;得到广泛应用。在滴滴国际化业务中&#xff0c;我们大量应用 Flutter。目前已在滴滴国际化…

Sentinel集成Apollo持久化配置的技术方案

作者本人&#xff0c;简放视野 https://github.com/bert82503 背景 Sentinel 介绍 Sentinel 是流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性…

拥有一个公网固定IP,既然如此简单、HTTP 虚拟专线:为您开启专属网络访问新时代

#HTTP 虚拟专线# 网络的便捷性和稳定性对于个人和企业来说至关重要。我们自豪地为您介绍一款具有创新性的产品 ——HTTP 虚拟专线&#xff0c;它将为您的网络体验带来前所未有的改变。 每位 VHTTP 用户都将分配一个专属的固定公网 IP 地址&#xff0c;这意味着您不再需要担心 I…

【视频监控】通过TCP协议搭建客户端和服务端使用OpenCV实现Linux开发板摄像头图像实时回传本地

一. 前言 本文主要实现了远程开发板摄像头画面实时传输回本地电脑进而达到视频监控功能。主要分为开发板客户端和电脑服务端的两部分代码讲解。 本文使用的是米尔的Remi Pi开发板&#xff0c;摄像头是米尔配套的MY-CAM003M&#xff0c;开发板Python环境为3.8&#xff0c;电脑…

Java的jdk配置成功,但是输入java -version等,命令行没有任何反应

问题 Java下载后&#xff0c;手动配置环境变量&#xff0c;并且配置好&#xff0c;但是在命令行中无论输入java的什么都没有反应 解决方案 将手动配置的环境变量放到最前面 重新尝试 java -version命令

C++模板的特化

目录 一、模板特化概念 二、函数模板特化 三、类模板特化 1.全特化 2.偏特化 3.总结 4.类模板特化实例应用 一、模板特化概念 函数模板和类模板都有特化&#xff1a; 通常情况下使用模板可以实现一些与类型无关的代码&#xff0c;但一些特殊类型可能会出错&#xff0c;…

报错:Can‘t find Python executable “python“, you can set the PYTHON env variable

将项目导入vscode,执行npm install命令后&#xff0c;报错了&#xff0c;报错的信息是node-sass安装失败&#xff0c;同时提示需要python环境的错误信息&#xff0c;这是因为安装node-sass失败了&#xff0c;而node-sass依赖于Python环境。 1.报错&#xff1a;Cant find Python…

基于Hadoop的微博社交媒体用户大数据分析【海量数据】

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍数据集展示Hadoop脚本文件可视化展示每文一语 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍 本项目基于hadoop的社交媒体用户进行大数据…

把照片制作成精美的仿真电子相册

​在这个数字化时代&#xff0c;我们拍摄的照片越来越多&#xff0c;但往往缺乏一个合适的方式来展示和保存这些珍贵的回忆。今天&#xff0c;我将向大家介绍如何将你的照片制作成一个精美的仿真电子相册&#xff0c;让你的回忆更加生动和持久。 第一步&#xff1a;选择合适的照…

FreeRTOS 3

一&#xff0c;信号量 有时候任务之间传递的只是一个标致&#xff0c;让进程之间同步&#xff0c;会对一个共享资源的互斥性访问&#xff0c;这时候就可以用信号量和互斥量。 1&#xff0c;二值信号量 2&#xff0c;计数信号量 3&#xff0c;互斥量 3.1&#xff0c;差别 4&…