搭建达梦8国产数据库一主一从双机热备案例达梦DMHS插件实战

本文主要是介绍搭建达梦8国产数据库一主一从双机热备案例达梦DMHS插件实战,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

搭建达梦8国产数据库一主一从双击热备案例达梦DMHS插件实战

一、测试环境介绍

测试服务器操作系统:centos7
在这里插入图片描述
在这里插入图片描述

select *,id_code from v$version;  #查询达梦8当前版本
服务器IP角色
172.18.21.144达梦8主数据库
172.18.21.145达梦8备份数据库

提前把防火墙关闭避免端口引起问题

systemctl status firewalld.service  #查看防火墙状态
systemctl stop firewalld.service  #临时关闭防火墙
systemctl disable firewalld.service  #开机不自启防火墙

关闭SELinux,查看是否开启了SELinux,如果显示为Enforcing,需要改为Disabled,再重启系统使配置生效。

getenforce
vi /etc/selinux/config
进入文件后修改 SELINUX = disabled
保存退出文件
reboot

二、达梦DMHS插件的安装部署(2个数据库服务器上都要安装)

这个插件需要联系官方的销售领取
在这里插入图片描述
在这里插入图片描述
安装包送上服务器

执行安装

chmod +x dmhs_V4.1.48_pack4_dm8_rev104804_rh6_64_veri_20211228.bin./dmhs_V4.1.48_pack4_dm8_rev104804_rh6_64_veri_20211228.bin -i

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装路径默认回车
在这里插入图片描述
在这里插入图片描述
回车
在这里插入图片描述
回车
在这里插入图片描述
回车

在这里插入图片描述

在这里插入图片描述
内网地址都写成一样

在这里插入图片描述
回车
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
默认回车

在这里插入图片描述
在这里插入图片描述
2
在这里插入图片描述

在这里插入图片描述

按ctrl+c #退出安装
tail -1000f /opt/dmhs/log/install.log  #查看一下安装日志是否正常

在这里插入图片描述

三、安装ODBC插件

(1)在线安装

yum -y install unixODBC  #在线更新安装ODBC插件,如果是内网环境,去网上查查怎么离线安装!

在这里插入图片描述
在这里插入图片描述

(2)修改odbc 配置*

ps -ef|grep dm #查看一下当前达梦8的BIN路径

在这里插入图片描述
在这里插入图片描述

vim /etc/odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /opt/dmdbms/bin/libdodbc.so

在这里插入图片描述

(3)修改odbc 配置

vim /etc/odbc.ini
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236

在这里插入图片描述

四、执行一些脚本(2个数据库都要执行)

(1)新建归档

使用SYSDBA连接登录数据库执行以下语句开启归档日志。其中DEST为归档日志存放目录,需要提前创建好,FILE_SIZE为单个归档文件大小,SPACE_LIMIT为归档目录日志目录大小限制.

cd /opt/dmdbms/bin/
./disql SYSDBA/SYSDBA:5236

在这里插入图片描述

ALTER DATABASE MOUNT;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/home/dmdba/dmarch/DMHS,TYPE=LOCAL,SPACE_LIMIT=0';
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
select para_value from v$dm_ini where para_name in ('ARCH_INI');

在这里插入图片描述

(2)开启逻辑日志

使用SYSDBA用户连接登录数据库执行以下语句:

SP_SET_PARA_VALUE(1,'RLOG_APPEND_LOGIC',1);
select para_value from v$dm_ini where para_name in ('RLOG_APPEND_LOGIC');

在这里插入图片描述

(3)配置DDL辅助表和触发器

使用SYSDBA连接登录数据库执行DMHS安装目录下script子目录的“ddl_sql_dm8.sql”脚本。(可以使用disql连接,使用"start /xx/xx.sql"直接执行该脚本,但建议使用DM管理工具连接的数据库,直接复制SQL脚本内容到查询框执行)
要执行一些初始化的脚本,这个脚本要用达梦的管理工具执行,要不然会报错!
先找到文件

cd  /opt/dmhs/scripts

在这里插入图片描述
把这个文件拷下来用达梦的数据库工具执行

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
执行完成后,使用以下SQL语句查询辅助表是否创建成功

select owner, table_name from dba_tables where owner = 'SYSDBA' and table_name like 'DMHS%' and status = 'VALID';

执行以下SQL语句查询触发器是否创建成功:

select owner, trigger_name from dba_triggers where owner = 'SYSDBA' and trigger_name like 'DMHS%' and status = 'Y';

在这里插入图片描述

五、2个达梦数据库都成功安装完成DMHS插件之后配置配置源端和目的端

(1)去目标从库数据库服务器145创建配置文件

cd /opt/dmhs/bin
vim dmhs.hs
<?xml version="1.0" encoding="GB2312"?>
<dmhs><base>    <!-- 管理模块的基本配置 --><lang>en</lang>    <!-- 语言选项,ch 为中文,en 为英文 --><mgr_port>5345</mgr_port>    <!-- 管理端口号,默认为5345--><ckpt_interval>60</ckpt_interval>    <!-- 检查点间隔,默认60 --><siteid>2</siteid>    <!-- 站点ID,这个ID配置时要注意,全局唯一,最小值0,最大值65535 --><version>2.0</version>
</base><exec>    <!-- 执行模块的基本配置 --><recv><data_port>5346</data_port>    <!-- 当数据传递采用网络直连时,需要配置该参数,表明同步数据从该端口号获取。 --></recv><db_type>dm8</db_type>    <!-- 目标端数据库类型 --><db_server>172.18.21.145</db_server>    <!-- 目标端数据库服务名或IP --><db_user>SYSDBA</db_user>    <!-- 目标端数据库用户 --><db_pwd>SYSDBA</db_pwd>    <!-- 用户的密码 --><db_port>5236</db_port>    <!-- 目标端数据库端口 --><db_name></db_name>    <!-- 默认数据库名,默认为空串(只针对dm6有用)--><char_code>PG_GB18030</char_code><exec_thr>4</exec_thr>    <!-- 执行线程个数,只有当 exec_mode 为 1 时才会生效!默认为1 --><exec_sql>1024</exec_sql>    <!-- SQL 缓存大小,默认为 512M --><exec_trx> 5000 </exec_trx>    <!-- 事务缓存个数,默认为 5000 --><exec_rows>1000</exec_rows>    <!-- 批量绑定行数,默认为 250 --></exec>
</dmhs>

在这里插入图片描述

(2)启动目的端服务

./dmhs_server dmhs.hs
start exec

在这里插入图片描述

在这里插入图片描述
出现启动错误

https://blog.csdn.net/weixin_45260302/article/details/126672849  #参考文章解决方法
ldd libdmhs_exec.so

在这里插入图片描述

find / -name libdmoci.so

然后把not found的文件libdmoci.so复制到安装DMHS的bin目录下(若是find不到,可以从别处相对应DMHS版本中copy所需要的文件);

cp /opt/dmhs/db/bin/libdmoci.so /opt/dmhs/bin/

在这里插入图片描述
在执行试试

./dmhs_server dmhs.hs
start exec

在这里插入图片描述

(3)去源数据库144创建配置文件

cd /opt/dmhs/bin
vim dmhs.hs
 <?xml version="1.0" encoding="GB2312"?>
<dmhs><base>
<lang>en</lang><mgr_port>5345</mgr_port><ckpt_interval>60</ckpt_interval><siteid>1</siteid>
<version>2.0</version></base><cpt><db_type>dm8</db_type><db_server>172.18.21.144</db_server><db_user>SYSDBA</db_user><db_pwd>SYSDBA</db_pwd><db_port>5236</db_port><db_ssl_path></db_ssl_path><db_ssl_pwd></db_ssl_pwd><parse_thr>1</parse_thr><ddl_mask>op:obj</ddl_mask> <!--DDL 配置项--><arch><!--归档清理配置项--><clear_interval>600</clear_interval><clear_flag>0</clear_flag></arch><send><!-- 发送模块配置 --><ip>172.18.21.145</ip><mgr_port>5345</mgr_port><data_port>5346</data_port><trigger>1</trigger><!-- 是否忽略触发器,默认为 0,限定值 0,1 --><constraint>1</constraint><!-- 是否忽略约束,默认为 0,限定值 0,1 --><identity>1</identity><net_turns>0</net_turns><filter><!--过滤配置项--><enable><!-- 白名单,所有允许同步的表 -->
<item>SYSDBA.*</item></enable></filter><map><!--映射配置项--><item>SYSDBA.*==SYSDBA.*</item></map></send></cpt>
</dmhs>

在这里插入图片描述
源数据库创建一个表,插入一条数据
在这里插入图片描述

create table a(
id int,
name varchar(255)
);insert into a values(1,'john');

(4)启动源端(bin目录下):

./dmhs_server dmhs.hs 
clear exec lsn #为了初始化日志的起始位置。
COPY 0SCH.NAME=’SYSDBA’ ” CREATE|INSERT|DICT #装载数据,配置同步掩码--一次就行
start cpt

在这里插入图片描述

ldd libcpt_dm8.so

在这里插入图片描述

find / -name libdmoci.so

然后把not found的文件libdmoci.so复制到安装DMHS的bin目录下(若是find不到,可以从别处相对应DMHS版本中copy所需要的文件);

cp /opt/dmhs/db/bin/libdmoci.so /opt/dmhs/bin/
./dmhs_server dmhs.hs 
clear exec lsn #为了初始化日志的起始位置。

在这里插入图片描述

总结:

笔者这次部署失败了,主要是因为作者这个DMHS来源版本跟当前DM8的版本对应不一致,需要专门的版本对应的下载安装。
也就说是一一对应的,要不然总是报那个断错误。笔者后续再去官方找找资料,如果对应的版本一致,应该是如下的效果!!!

正常情况下
目标数据库启动之后输出
在这里插入图片描述
源数据库启动输出

在这里插入图片描述
然后去目标数据库查看
刚刚源数据库上建的表,目标数据库也存在,则主从配置成功
在这里插入图片描述
参考官方文档:

https://eco.dameng.com/community/training/e32a7f896ad9e9f5aec59c8ae5c13f36

问题最终解决方法

笔者觉得应该是跟服务器环境有关系,则又将目标端的服务器重新还原映像重新安装了一遍DMHS插件。
再启动,这次的问题与上次体现有些不同。

在这里插入图片描述

MGR[ERROR]: lib libdmhs_exec.so can not found,error code 2, libdodbc.so: cannot open shared object file: No such file or directory
MGR[ERROR]: log exec start fail

执行

ldd libdmhs_exec.so           

在这里插入图片描述

报libdodbc.so找不到

find / -name libdodbc.so     #全盘搜索 

在这里插入图片描述
此处搜索有多个,我们选择达梦数据库路径下的这个文件,而不是其他目录。

cp /opt/dmdbms/bin/libdodbc.so /opt/dmhs/bin/     #复制到DMHS的bin路径下

再执行ldd libdmhs_exec.so

ldd libdmhs_exec.so

在这里插入图片描述
依次把缺少的文件复制到DMHS的bin路径下

find / -name libdmelog.so

在这里插入图片描述

cp /opt/dmhs/bin/stat/libdmelog.so /opt/dmhs/bin/

在这里插入图片描述

find / -name libdmutl.so

在这里插入图片描述

cp /opt/dmhs/bin/stat/libdmutl.so /opt/dmhs/bin/

在这里插入图片描述

find / -name libdmclientlex.so

在这里插入图片描述

cp /opt/dmhs/bin/stat/libdmclientlex.so /opt/dmhs/bin/

在这里插入图片描述

find / -name libdmos.so

在这里插入图片描述

cp /opt/dmhs/bin/stat/libdmos.so /opt/dmhs/bin/

在这里插入图片描述

find / -name libdmcvt.so

在这里插入图片描述

cp /opt/dmhs/bin/stat/libdmcvt.so /opt/dmhs/bin/

在这里插入图片描述

find / -name libdmstrt.so

在这里插入图片描述
在这里插入图片描述

find / -name libdmmem.so

在这里插入图片描述

cp /opt/dmhs/bin/stat/libdmmem.so /opt/dmhs/bin/

反反复复的查找缺失的文件,最终执行命令

ldd libdmhs_exec.so

再没有发现缺失的文件报警,则代表成功了!
补缺失的文件这个有难点,因为不知道到底应该是取那个文件,因为同名称的。
笔者是把达梦8跟DMHS装同一个机器上,所以文件直接考,如果部署不同机器上,则需要拷过来,参考笔者的方法逐步一个一个文件测试,验证。

在这里插入图片描述
最终再执行

./dmhs_server dmhs.hs
start exec   #手打

下发的日志代表目标端的启动成功
在这里插入图片描述

再启动源端服务

./dmhs_server dmhs.hs
clear exec lsn  #初始化归档日志起始位置
COPY 0 " SCH.NAME='SYSDBA' " CREATE|INSERT|DICT #装载离线字典
start cpt

在这里插入图片描述
在这里插入图片描述
装载字典成功

start cpt

在这里插入图片描述

CPT[WARN]: log format is invalid, please check DM8 version, sub_type: 108

查了查网上的资料,意思说DMHS版本需要与数据库达梦8版本一一对应,很显然数据库版本高了,数据库版本是2022年9月份的,这个DMHS是2021年12月,不是一个时期的。而且达梦官网也没有下载历史版本的途径,这次只能等待以商务的方式解决获取对应版本的DMHS再做测试了!!!!!

这篇关于搭建达梦8国产数据库一主一从双机热备案例达梦DMHS插件实战的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/296048

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex