达梦数据守护集群部署

接上篇
达梦8单机规范化部署
https://blog.csdn.net/qq_25045631/article/details/139898690

1. 集群规划

在正式生产环境中,两台机器建议使用统一配置的服务器。使用千兆或千兆以上网络。

两台虚拟机各加一块网卡,仅主机模式,作为心跳网卡(MAL_HOST),若只有一块网卡,心跳IP可以和对外提供访问的IP一样

节点1节点2
业务IP192.168.25.101192.168.25.102
心跳IP
MAL_HOST
172.25.0.101172.25.0.102
实例名GRP1_RT_01GRP1_RT_02
实例端口52365236
MAL端口
MAL_PORT
6114161142
MAL守护进程端口
MAL_DW_PORT
5214152142
守护进程端口
MAL_INST_DW_PORT
3314133142
OGUID453331453331
守护组GRP1GRP1
安装目录/opt/dmdbms/opt/dmdbms
实例目录/opt/dmdbms/data/opt/dmdbms/data
归档上限磁盘空间的1/10磁盘空间的1/10

MAL系统是基于TCP协议实现的一种内部通信机制,DM通过MAL系统实现Redo日志传输,以及其他一些实例间的消息通讯。

守护进程(dmwatcher)是数据库实例和监视器之间信息流转的桥梁。数据库实例向本地守护进程发送信息,接收本地守护进程的消息和命令;

监视器(dmmonitor)接收守护进程的消息,并向守护进程发送命令;数据库实例与监视器之间没有直接的消息交互;守护进程解析并执行监视器发起的各种命令(Switchover/Takeover/Open force等),并在必要时通知数据库实例执行相应的操作。

2. 配置防火墙

firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.25.101" accept" --permanent
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.25.102" accept" --permanent
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="172.25.0.101" accept" --permanent
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="172.25.0.102" accept" --permanent
firewall-cmd --reload

3. 开启本地归档

在这里插入图片描述
方法一:SQL 命令方式开启归档

登录数据库执行如下 SQL 语句:
##这里的归档目录会自动创建
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG ‘DEST=/opt/dmdbms/data/DAMENG/arch, TYPE=LOCAL, FILE_SIZE=2048, SPACE_LIMIT=20480’;
ALTER DATABASE OPEN;

##修改归档配置,可以在open状态下执行
##如果要修改归档目录,只能修改dmarch.ini文件,并重启实例生效
ALTER DATABASE MODIFY ARCHIVELOG ‘DEST=/opt/dmdbms/data/DAMENG/arch, TYPE=LOCAL, FILE_SIZE=128, SPACE_LIMIT=10240’;

方法二:修改数据库配置文件方式开启归档

##修改数据库实例的 /opt/dmdbms/data/DAMENG/dm.ini文件中 ARCH_INI 参数值
vi /opt/dmdbms/data/DAMENG/dm.ini
ARCH_INI = 1

##新增文件dmarch.ini

vi /opt/dmdbms/data/DAMENG/dmarch.ini
ARCH_WAIT_APPLY      = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /opt/dmdbms/data/DAMENG/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 10240

##最后重启数据库完成归档配置

4. 备份主库

可以使用联机备份
SQL> BACKUP DATABASE BACKUPSET ‘/dmdata/data/DAMENG/bak/BACKUP_FILE’;

这里使用DMRMAN脱机备份

[root@node1 ~]# systemctl stop DmServiceDM
[root@node1 ~]# su - dmdba
[dmdba@node1 ~]$ dmrman
RMAN> backup database '/opt/dmdbms/data/DAMENG/dm.ini' full backupset '/opt/dmdbms/data/DAMENG/bak/db_full_bak';
backup database '/opt/dmdbms/data/DAMENG/dm.ini' full backupset '/opt/dmdbms/data/DAMENG/bak/db_full_bak';
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[43184], file_lsn[43184]
Processing backupset /opt/dmdbms/data/DAMENG/bak/db_full_bak
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]                                 
backup successfully!
time used: 00:00:03.999

拷贝数据到备库

[dmdba@node1 ~]$ scp -r /opt/dmdbms/data/DAMENG/bak/db_full_bak dmdba@192.168.25.102:/home/dmdba/

5. 始化备库实例并恢复数据

要配置dmdba用户的环境变量才可以写绝对路径

[dmdba@node2 ~]$ /opt/dmdbms/bin/dminit path=/opt/dmdbms/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 DB_NAME=DAMENG INSTANCE_NAME=GRP1_RT_02 LOG_SIZE=256 PORT_NUM=5236[dmdba@node2 ~]$ dmrman CTLSTMT="RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba/db_full_bak'"
dmrman V8
RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba/db_full_bak'
file dm.key not found, use default license!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]                                 
restore successfully.
time used: 00:00:02.907[dmdba@node2 ~]$ dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba/db_full_bak'"
dmrman V8
RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba/db_full_bak'
file dm.key not found, use default license!
Database mode = 2, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[43184], file_lsn[43184]
recover successfully!
time used: 599.685(ms)[dmdba@node2 ~]$ dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
dmrman V8
RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
Database mode = 2, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[43184], file_lsn[43184]
recover successfully!
time used: 00:00:01.127

6. 修改dm.ini

修改主备库参数,注意2个库的instance_name不一样

[dmdba@node1 ~]$ vi /opt/dmdbms/data/DAMENG/dm.ini
INSTANCE_NAME = GRP1_RT_01/GRP1_RT_02
PORT_NUM = 5236                        #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60              #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0                  #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2                  #不允许备库 OFFLINE 表空间
MAL_INI = 1                            #打开 MAL 系统
ARCH_INI = 1                           #打开归档配置
RLOG_SEND_APPLY_MON = 64               #统计最近 64 次的日志重演信息

[dmdba@node1 ~]$ egrep ‘INSTANCE_NAME|PORT_NUM|DW_INACTIVE_INTERVAL|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI|RLOG_SEND_APPLY_MON’ /opt/dmdbms/data/DAMENG/dm.ini

7. 配置dmarch.ini

2个节点都要配置,ARCH_DEST分别写对方的实例名。

[dmdba@node1 ~]$ vi /opt/dmdbms/data/DAMENG/dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments#ARCH_WAIT_APPLY      = 1  #0:高性能  1:事务一致[ARCHIVE_LOCAL1]ARCH_TYPE            = LOCAL  #本地归档类型ARCH_DEST            = /opt/dmdbms/data/DAMENG/arch  #本地归档存放路径  ARCH_FILE_SIZE       = 128  #单个归档大小,单位 MBARCH_SPACE_LIMIT     = 10240  #归档上限,单位 MBARCH_FLUSH_BUF_SIZE  = 0        ARCH_HANG_FLAG       = 1        [ARCHIVE_REALTIME1]ARCH_TYPE            = REALTIME  #实时归档类型ARCH_DEST            = GRP1_RT_01/GRP1_RT_02  #实时归档目标实例名

8. 配置dmmal.ini

2个节点都要配置,配置相同

[dmdba@node1 ~]$ vi /opt/dmdbms/data/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL         = 5  #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL     = 5  #判定 MAL 链路断开的时间
#MAL_TEMP_PATH              = /opt/dmdbms/data/malpath/  #临时文件目录。当邮件使用的内存超过MAL_BUF_SIZE或者MAL_SYS_BUF_SIZE时,将新产生的邮件保存到临时文件中。如果缺省,则新产生的邮件保存到temp.dbf文件中
#MAL_BUF_SIZE               = 512  #单个 MAL 缓存大小,单位 MB
#MAL_SYS_BUF_SIZE           = 2048  #MAL 总大小限制,单位 MB
#MAL_COMPRESS_LEVEL         = 0  #MAL 消息压缩等级,0 表示不压缩[MAL_INST1]
MAL_INST_NAME            = GRP1_RT_01  #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST                 = 172.25.0.101  #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT                 = 61141  #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST            = 192.168.25.101 #实例的对外服务 IP 地址
MAL_INST_PORT            = 5236  #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT              = 52141  #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT         = 33141  #实例监听守护进程 TCP 连接的端口[MAL_INST2]
MAL_INST_NAME            = GRP1_RT_02
MAL_HOST                 = 172.25.0.102
MAL_PORT                 = 61142
MAL_INST_HOST            = 192.168.25.102
MAL_INST_PORT            = 5236
MAL_DW_PORT              = 52142
MAL_INST_DW_PORT         = 33142

9. 配置dmwatcher.ini

2个节点都要配置,配置相同

[dmdba@node1 ~]$ vi /opt/dmdbms/data/DAMENG/dmwatcher.ini
[GRP1]
DW_TYPE                  = GLOBAL  #全局守护类型
DW_MODE                  = AUTO    #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME            = 10  #远程守护进程故障认定时间
INST_ERROR_TIME          = 10  #本地实例故障认定时间
INST_RECOVER_TIME        = 60  #主库守护进程启动恢复的间隔时间
INST_OGUID               = 453331  #守护系统唯一 OGUID 值
INST_INI                 = /opt/dmdbms/data/DAMENG/dm.ini  #dm.ini 文件路径
INST_AUTO_RESTART        = 1  #打开实例的自动启动功能
INST_STARTUP_CMD         = /opt/dmdbms/bin/dmserver  #命令行方式启动
RLOG_SEND_THRESHOLD      = 0  #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD     = 0  #指定备库重演日志的时间阈值,默认关闭

10. 启动主备库

以mount模式启动
一定要以mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成Redo日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动Open数据库。

[dmdba@node1 ~]$ dmserver /opt/dmdbms/data/DAMENG/dm.ini mount
[dmdba@node2 ~]$ dmserver /opt/dmdbms/data/DAMENG/dm.ini mount

11. 设置OGUID

在主/备库分别执行

[dmdba@node1 ~]$ disql SYSDBA/SYSDBA@127.0.0.1:5236
SQL> sp_set_oguid(453331);

12. 修改数据库模式

在主库执行
SQL> alter database primary;

在备库执行
SQL> alter database standby;

如果当前数据库不是normal模式,需要先修改dm.ini中ALTER_MODE_STATUS值为1,允许修改数据库模式,修改 Standby 模式成功后再改回为0。

13. 注册并启动守护进程

root用户在备库执行

[root@node2 ~]# /opt/dmdbms/script/root/dm_service_installer.sh -t dmserver -p DM -dm_ini /opt/dmdbms/data/DAMENG/dm.ini
[root@node2 ~]# /opt/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p DM -watcher_ini /opt/dmdbms/data/DAMENG/dmwatcher.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceDMSERVER.service to /usr/lib/systemd/system/DmWatcherServiceDMSERVER.service.
创建服务(DmWatcherServiceDMSERVER)完成

root用户在主库执行

[root@node1 ~]# /opt/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p DM -watcher_ini /opt/dmdbms/data/DAMENG/dmwatcher.ini

在主备库启动服务

systemctl start DmWatcherServiceDM

守护进程启动后,设置GRP1守护进程为STARTUP状态,此时实例都处于未启动状态。守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将本地实例Open,并设置GRP1守护进程为Open状态。




达梦社区地址
https://eco.dameng.com

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Notepad++插件 Hex-Edit

Nptepad有个Hex文件查看器,苦于每次打开文件需要手动开插件显示Hex,配置一下插件便可实现打开即调用 关联多个二进制文件,一打开就使用插件的方法,原来是使用空格分割!!!

创新指南|品牌电商新策略:五大转型思路与RGM举措

在流量红利过去的背景下,品牌电商面对多渠道运营的难题,如缺乏统盘经营、绩效管理分散、价格战失控、用户体验不足以及流量过度依赖,品牌电商如何有效应对这些挑战,本文从5个维度探讨全渠道电商RGM破局之路,实现品牌的…

视频汇聚安防综合管理系统EasyCVR平台GB28181设备注册未上线的原因排查与解决

视频汇聚安防综合管理平台EasyCVR视频监控系统基于云边端架构,可支持海量视频汇聚集中管理,能提供视频监控直播、云端录像、云存储、录像检索与回看、告警(协议告警/智能告警/1400视图库告警)、平台级联、AI智能分析接入等视频能力…

名侦探李先生第一话:谁是真正的凶手(只出现一次的数字相关题解(力扣)+位操作符回忆)

引子:我们在之前的案子中破解过基础的单身狗问题,那面对更有挑战的案子,且看李先生如何破局,那下凶手! 复习: 1,位操作符: 正整数原,反,补码都相同 首位是…

Pyppeteer原理介绍和入门尝试

pyppeteer仓库地址:https://github.com/miyakogi/pyppeteer puppeteer仓库地址:https://github.com/search?qpuppeteer&typerepositories 因为有些网页是可以检测到是否是使用了selenium。并且selenium所谓的保护机制不允许跨域cookies保存以及登…

第一百二十三节 Java面向对象的设计 - Java接口继承

Java面向对象的设计 - Java接口继承 接口可以从另一个接口继承。与类不同,接口可以从多个接口继承。 interface Singer {void sing();void setRate(double rate);double getRate(); } interface Writer {void write();void setRate(double rate);double getRate();…

【面试题】马上金九银十了,简历该准备起来了,面试题你准备好了吗 ?浅谈 JS 浅拷贝和深拷贝

代码展示 let obj_old {name: Tom,age: 15,favorite: {food: bread,drink: milk} } let obj_new {...obj_old} console.log(obj_old obj_new) // false console.log(obj_old.name obj_new.name) // true console.log(obj_old.favorite obj_new.favorite) // true3. Ar…

视频云存储平台LntonCVS国标视频平台功能和应用场景详细介绍

LntonCVS国标视频融合云平台基于先进的端-边-云一体化架构设计,以轻便的部署和灵活多样的功能为特点。该平台不仅支持多种通信协议如GB28181、RTSP、Onvif、海康SDK、Ehome、大华SDK、RTMP推流等,还能兼容各类设备,包括IPC、NVR和监控平台。在…

网站制作和推广

在当今数字化时代,拥有一个网站对于企业的发展和推广来说是至关重要的。网站既可以作为一个企业的形象展示,也可以作为一个销售渠道,更可以作为一个品牌传播的平台。在本文中,我们将讨论网站制作和推广的重要性,以及一…

为什么要学习PMP

学习PMP(项目管理专业人士认证)能够在职场竞争力、薪资待遇、项目管理技能等方面带来显著的提升。以下是学习PMP的具体分析: 1、职场竞争力 升职加薪:学习PMP能够提升个人在项目中的管理能力和解决问题的能力,从而在…

渗透测试基础(六) MS10-046漏洞攻击

1. 漏洞介绍 1.1 漏洞介绍 Microsoft Windows快捷方式LNK文件自动执行代码漏洞。Windows支持使用快捷方式或LNK文件。LNK文件是指向本地文件的引用,点击LNK文件与点击快捷方式所制定的目标具有相同效果。Windows没有正确的处理LNK文件,特制的LNK文件可能导致Windows自动执行…

【Leetcode每日一题】 01背包 - DP41 【模板】01背包(难度⭐⭐)(80)

1. 题目解析 题目链接:DP41 【模板】01背包 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 第一问:不超过总体积的背包问题 1. 状态表示 dp[i][j] 表示:从前 i 个物品中挑选&…

MOE学习笔记

MOE网络结构 和传统的 transformer 网络结构相比,我们将 Transformer 模型的每个 FFN 层替换为 MoE 层,MoE 层由门网络(Router)和一定数量的专家(Expert)组成。 这些 Expert 其实也是 FFN 层,…

探秘神经网络激活函数:Sigmoid、Tanh和ReLU,解析非线性激活函数的神奇之处

引言 在神经网络中,激活函数扮演着至关重要的角色。它们赋予神经网络非线性的能力,使得网络具备学习和表示复杂函数关系的能力。本文将详细解析三种常见的激活函数:Sigmoid、Tanh和ReLU,揭开它们在神经网络中的奥秘。无论你是初学…

5. Revit API: Application

5. Revit API: Application 前言 上一篇中,讲到了UI篇的Ribbon(界面),并提到要创建 RibbonPanel,需要使用UIControlledApplication.CreateRibbonPanel(..)方法,还在结尾说到要写“UI”开头的那些个类&…

算法社区-从零开始构建(一)

好久没动笔了,一是要处理的东西很多,二则写出来未见得深刻,感觉沉淀得不够,太浅显的东西就没必要分享。 正好最近在研究算法层面的东西,感觉挺受用的,就想着把这些东西整理出来,有点像社区的雏形…

【例子】webpack配合babel实现 es6 语法转 es5 案例 [通俗易懂]

首先来说一下实现 es6 转 es5 的一个简单步骤 1、新建一个项目,并且在命令行中初始化项目 npm init -y2、安装对应版本的 webpack webpack-cli(命令行工具) "webpack""webpack-cli"3、安装 Babel 核心库和相关的 loader "babel-core&qu…

新质生产力潮水里:谁在为中小企业搭起一座桥?

与其说华为云为中小企业提供的是一个个更具性价比和产业适配度的产品,更本质来看,其通过618营销季为中小企业提供了一个数字化转型升级的契机,基于此,企业可以在云计算和AI时代实现内在变革,焕发新的生机与活力。 作者…

针对AIGC检测的鲁棒性测试——常见攻击手段汇总

前言:这篇文章来总结一下针对AIGC检测的常见攻击手段,选取的研究工作均出自近5年AIGC检测相关文章。(论文被拒了需要补实验,先来看看别人怎么做的……) 2019 WIFS Detecting and Simulating Artifacts in GAN Fake Ima…

泛微E9开发 根据判断条件,控制字段的编辑/必填属性

根据判断条件,控制字段的编辑/必填属性 1、需求说明2、实现方法3、扩展知识点1. 注册钩子事件,指定动作完成后触发1.1 接口名称及参数说明1.2 案例 2. 改变单个字段显示属性(只读/必填等)2.1 参数说明2.2 案例 1、需求说明 当字段“填报人”和字段“姓名…