DM8守护集群部署、数据同步验证、主备切换

server/2024/9/20 9:21:41/ 标签: 数据库

1. 环境描述

实例详情
在这里插入图片描述
端口详情
在这里插入图片描述

2. 部署步骤

2.1 数据准备

2.1.1主库初始化

[dmdba@ray1 ~]$ cd /dmdba/dmdbms/bin
[dmdba@ray1 bin]$ ./dminit path=/dmdba/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 DB_NAME=GRP1_RT_01 INSTANCE_NAME=GRP1_RT_01 PORT_NUM=32141
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-07-03
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLLlog file path: /dmdba/data/GRP1_RT_01/GRP1_RT_0101.loglog file path: /dmdba/data/GRP1_RT_01/GRP1_RT_0102.logwrite to dir [/dmdba/data/GRP1_RT_01].
create dm database success. 2024-08-16 18:00:23[dmdba@ray1 ~]$ /dmdba/dmdbms/bin/dmserver /dmdba/data/GRP1_RT_01/dm.ini

2.1.2备库初始化

[dmdba@ray2 ~]$ cd /dmdba/dmdbms/bin
[dmdba@ray2 bin]$ ./dminit path=/dmdba/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 DB_NAME=GRP1_RT_02 INSTANCE_NAME=GRP1_RT_02 PORT_NUM=32142
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-07-03
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLLlog file path: /dmdba/data/GRP1_RT_02/GRP1_RT_0201.loglog file path: /dmdba/data/GRP1_RT_02/GRP1_RT_0202.logwrite to dir [/dmdba/data/GRP1_RT_02].
create dm database success. 2024-08-16 18:02:13[dmdba@ray1 ~]$ /dmdba/dmdbms/bin/dmserver /dmdba/data/GRP1_RT_02/dm.ini

2.2备份主库

[dmdba@ray1 ~]$ dmrman
dmrman V8
RMAN> BACKUP DATABASE '/dmdba/data/GRP1_RT_01/dm.ini' FULL TO  BACKUP_FILE1 BACKUPSET '/dmdba/dmbak/GRP0816'
BACKUP DATABASE '/dmdba/data/GRP1_RT_01/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dmdba/dmbak/GRP0816'
file dm.key not found, use default license!
Processing backupset /dmdba/dmbak/GRP0816
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]                                 
backup successfully!
time used: 00:00:03.250

2.3拷贝主库备份集至备机

[dmdba@ray1 ~]$ cd /dmdba/dmbak/
[dmdba@ray1 dmbak]$ ll
total 0
drwxr-xr-x 2 dmdba dmdba 45 Aug 16 15:30 lei0816
[dmdba@ray1 dmbak]$ scp -r lei0816/ 192.168.0.2:/dmdba/dmbak/

2.4备库还原和恢复

[dmdba@ray2 ~]$ dmrman
dmrman V8
RMAN> RESTORE DATABASE '/dmdba/data/GRP1_RT_02/dm.ini' FROM BACKUPSET '/dmdba/dmbak/GRP0816'
RESTORE DATABASE '/dmdba/data/GRP1_RT_02/dm.ini' FROM BACKUPSET '/dmdba/dmbak/GRP0816'
file dm.key not found, use default license!
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]                                 
restore successfully.
time used: 00:00:02.484
RMAN> RECOVER DATABASE '/dmdba/data/GRP1_RT_02/dm.ini' FROM BACKUPSET '/dmdba/dmbak/GRP0816'
RECOVER DATABASE '/dmdba/data/GRP1_RT_02/dm.ini' FROM BACKUPSET '/dmdba/dmbak/GRP0816'
recover successfully!
time used: 430.147(ms)
RMAN> RECOVER DATABASE '/dmdba/data/GRP1_RT_02/dm.ini' UPDATE DB_MAGIC
RECOVER DATABASE '/dmdba/data/GRP1_RT_02/dm.ini' UPDATE DB_MAGIC
recover successfully!
time used: 00:00:01.074

2.5主库配置dm.ini、dmmal.ini、dmarch.ini

2.5.1主库修改dm.ini

[dmdba@ray1 ~]$ vi /dmdba/data/GRP1_RT_01/dm.ini
添加或修改:
INSTANCE_NAME                 = GRP1_RT_01
PORT_NUM                       = 32141
DW_INACTIVE_INTERVAL          =60
ALTER_MODE_STATUS             = 0
ENABLE_OFFLINE_TS               = 2
MAL_INI                           = 1                     
ARCH_INI                         = 1  
RLOG_SEND_APPLY_MON         = 64                   

2.5.2主库修改dmmal.ini

[dmdba@ray1 ~]$ vi /dmdba/data/GRP1_RT_01/dmmal.ini
添加:
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]MAL_INST_NAME = GRP1_RT_01MAL_HOST = 10.10.10.1MAL_PORT = 61141MAL_INST_HOST = 192.168.0.1MAL_INST_PORT = 32141MAL_DW_PORT = 52141MAL_INST_DW_PORT = 33141
[MAL_INST2]MAL_INST_NAME = GRP1_RT_02MAL_HOST = 10.10.10.2MAL_PORT = 61142MAL_INST_HOST = 192.168.0.2MAL_INST_PORT = 32142MAL_DW_PORT = 52142MAL_INST_DW_PORT = 33142                 

2.5.3主库修改dmarch.ini

[dmdba@ray1 ~]$ vi /dmdba/data/GRP1_RT_01/dmarch.ini
添加:
[ARCHIVE_REALTIME] 
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_02
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdba/arch/GRP1_RT_01
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0                 

2.5.4主库修改dmwatcher.ini

[dmdba@ray1 ~]$ vi /dmdba/data/GRP1_RT_01/dmwatcher.ini
添加:
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /dmdba/data/GRP1_RT_01/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dmdba/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0                 

2.6MOUNT主库

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

[dmdba@ray1 ~]$ /dmdba/dmdbms/bin/dmserver /dmdba/data/GRP1_RT_01/dm.ini mount

2.7主库设置OGUID

系统通过OGUID值确定一个守护进程组,由用户保证OGUID值的唯一性,并确保数据守护系统中,数据库、守护进程和监视器配置相同的OGUID值。

[dmdba@ray1 ~]$ disql SYSDBA/SYSDBA@192.168.0.1:32141服务器[192.168.0.1:32141]:处于普通配置状态
登录使用时间 : 2.818(ms)
disql V8
18:39:58 SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 7.976(毫秒). 执行号:2.
18:40:50 SQL> sp_set_oguid(453331);
DMSQL 过程已成功完成
已用时间: 1.363(毫秒). 执行号:3.
18:40:55 SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 7.390(毫秒). 执行号:4.

2.8主库修改数据库模式

修改主库模式为PRIMARY。

[dmdba@ray1 ~]$ disql SYSDBA/SYSDBA@192.168.0.1:32141服务器[192.168.0.1:32141]:处于普通配置状态
登录使用时间 : 2.441(ms)
disql V8
18:44:32 SQL> alter database primary;
操作已执行
已用时间: 6.630(毫秒). 执行号:0.

2.9备库配置dm.ini、dmmal.ini、dmarch.ini

2.9.1备库修改dm.ini

[dmdba@ray2 ~]$ vi /dmdba/data/GRP1_RT_02/dm.ini
添加或修改:
INSTANCE_NAME                 = GRP1_RT_02
PORT_NUM                       = 32142
DW_INACTIVE_INTERVAL          =60
ALTER_MODE_STATUS             = 0
ENABLE_OFFLINE_TS               = 2
MAL_INI                           = 1                     
ARCH_INI                         = 1  
RLOG_SEND_APPLY_MON         = 64                   

2.9.2备库修改dmmal.ini

[dmdba@ray2 ~]$ vi /dmdba/data/GRP1_RT_02/dmmal.ini
添加:
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]MAL_INST_NAME = GRP1_RT_01MAL_HOST = 10.10.10.1MAL_PORT = 61141MAL_INST_HOST = 192.168.0.1MAL_INST_PORT = 32141MAL_DW_PORT = 52141MAL_INST_DW_PORT = 33141
[MAL_INST2]MAL_INST_NAME = GRP1_RT_02MAL_HOST = 10.10.10.2MAL_PORT = 61142MAL_INST_HOST = 192.168.0.2MAL_INST_PORT = 32142MAL_DW_PORT = 52142MAL_INST_DW_PORT = 33142                 

2.9.3备库修改dmarch.ini

[dmdba@ray2 ~]$ vi /dmdba/data/GRP1_RT_02/dmarch.ini
添加:
[ARCHIVE_REALTIME] 
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_01
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdba/arch/GRP1_RT_02
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0                 

2.9.4备库修改dmwatcher.ini

[dmdba@ray2 ~]$ vi /dmdba/data/GRP1_RT_02/dmwatcher.ini
添加:
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /dmdba/data/GRP1_RT_02/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dmdba/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0                 

2.10MOUNT备库

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

[dmdba@ray2 ~]$ /dmdba/dmdbms/bin/dmserver /dmdba/data/GRP1_RT_02/dm.ini mount

##2.11备库设置OGUID
系统通过OGUID值确定一个守护进程组,由用户保证OGUID值的唯一性,并确保数据守护系统中,数据库、守护进程和监视器配置相同的OGUID值。

[dmdba@ray2 ~]$ disql SYSDBA/SYSDBA@192.168.0.2:32142服务器[192.168.0.2:32142]:处于普通配置状态
登录使用时间 : 3.223(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 8.193(毫秒). 执行号:1.
SQL> sp_set_oguid(453331);
DMSQL 过程已成功完成
已用时间: 1.583(毫秒). 执行号:2.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 6.989(毫秒). 执行号:3.

2.12备库修改数据库模式

修改数据库模式为STANDBY。

[dmdba@ray2 ~]$ disql SYSDBA/SYSDBA@192.168.0.2:32142服务器[192.168.0.2:32142]:处于普通配置状态
登录使用时间 : 2.461(ms)
disql V8
SQL> alter database standby;
操作已执行
已用时间: 5.541(毫秒). 执行号:0.

2.13配置监视器

修改dmmonitor.ini配置确认监视器,其中MON_DW_IP中的IP和PORT和dmmal.ini中的MAL_HOST和MAL_DW_PORT配置项保持一致。

[dmdba@ray1 ~]$ vi /dmdba/monitor/dmmonitor.ini
添加:
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dmdba/data/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 10.10.10.1:52141
MON_DW_IP = 10.10.10.2:52142

2.14启动守护进程

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

2.14.1主库启动守护进程

[dmdba@ray1 ~]$ /dmdba/dmdbms/bin/dmwatcher /dmdba/data/GRP1_RT_01/dmwatcher.ini 
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY

2.14.2备库启动守护进程

[dmdba@ray2 ~]$ /dmdba/dmdbms/bin/dmwatcher /dmdba/data/GRP1_RT_02/dmwatcher.ini 
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY

2.15启动监视器

[dmdba@ray1 ~]$ /dmdba/monitor/dmmonitor /dmdba/data/GRP1_RT_01/dmmonitor.ini

在这里插入图片描述

3数据同步测试

主库创建测试表,插入数据,检查备库是否有数据生成。
在这里插入图片描述

login
用户名:SYSDBA
密码:

在这里插入图片描述
如上图,首先查询确认主备库均无t表,连接主库创建t表,并插入5条数据commit,主库查询到数据已经落盘。同时连接备库查询到t表存在,并且数据与主库数据保持一致,数据同步正常。

4主备切换测试

4.1模拟主库主机故障,备库自动接管

[dmdba@ray1 ~]$ dmmonitor /dmdba/monitor/dmmonitor1.ini
show global info

在这里插入图片描述

4.1.1关闭主库服务器

[root@ray2 ~]# init 0
[root@ray1 ~]# ping ray2
PING ray2 (192.168.0.2) 56(84) bytes of data.
From ray1 (192.168.0.1) icmp_seq=10 Destination Host Unreachable
From ray1 (192.168.0.1) icmp_seq=11 Destination Host Unreachable
From ray1 (192.168.0.1) icmp_seq=12 Destination Host Unreachable
From ray1 (192.168.0.1) icmp_seq=13 Destination Host Unreachable
From ray1 (192.168.0.1) icmp_seq=14 Destination Host Unreachable

4.1.2查看监视器,备库自动接管服务

在这里插入图片描述
主库关闭后监视器显示主库连接超时,备库自动切换为主库。

4.1.3启动原主库,加入集群

启动原主库后,自动加入集群,角色为standby。
在这里插入图片描述
在这里插入图片描述

4.2手工主备切换

在这里插入图片描述
在这里插入图片描述
执行手工主备切换测试后,主备角色对调,GRP1_RT_01由standby变为primary,GRP1_RT_02由primary变为standby。


http://www.ppmy.cn/server/104926.html

相关文章

Robot Operating System——自定义Service/Client通信消息结构

大纲 初始化环境生成自定义服务的工程创建包自定义消息package.xml完整文件 CMakeLists.txt完整文件 编译注册 使用自定义服务的工程创建包代码CMakeLists.txt编译运行 工程地址参考资料 在《Robot Operating System——自定义订阅/发布的消息结构》一文中,我们讲解…

USB分析仪USB3.2日志分析

1.简介 USB2.0总线采用轮询模式,即总线事务开始时,都要先发送IN或者OUT令牌包,以通知端点或者查询端点是否准备好。而USB3.2采用了异步通知模式,若端点没有准备好,则主机无需轮询,端点准备好后会通知主机&…

坚持绿色发展的上海智算中心,稳步推进中

自今年年初正式封顶以来,云端股份上海智算中心在外墙及内部的建设进展顺利。这座智算中心地理位置优越,正逐步成为推动数字经济发展的重要力量。 位置优势 云端股份上海智算中心毗邻智慧岛数据产业园,是崇明区目前建设的唯一一座智算中心&am…

深入理解 Go 语言并发编程--管道(channel) 的底层原理

管道是 Go 语言协程间通信的一种常用手段,管道的读写操作也有可能会阻塞用户协程,也就是说有可能会切换到调度器。协程因为管道而阻塞时,只有当其他协程再次读或者写管道时,才有可能解除这个协程的阻塞状态。 1. 管道的基本用法 …

什么是BOM,有哪些分类?

一、什么是BOM? BOM是物料清单的缩写,也称为产品结构表或产品结构树。 BOM的作用主要是通过计算机辅助企业生产管理,使计算机能够识别企业所制造的产品构成和所有要涉及的物料。 在制造业中,BOM是一份详细记录制造某个产品时所…

【问题记录】mysql报错 ,mysql2 和 mysql 5.

错误2 和 错误5 都是由于注册表有问题: 由于我之前安装过MySQL,导致之前的配置没有删除。 解决: 搜索打开注册表编辑器: 注册表中找到MySQL: 修改路径: "D:\develop\mysql-8.0.39-winx64\bin\mysqld&quo…

网络协议与IO模型

1、说一说网络模型(OSI、TCP/IP模型) OSI采用了分层的结构化技术,共分七层, 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 。 Open System Interconnect 简称OSI,是国际标准化组织(ISO)和国际电报电…

2024年8月23日嵌入式学习

今日主要学习tcp的数据传输 ### Loop本地回环 Loop本地回环通常指的是一段以127开头的IP地址(127.0.0.1 至 127.255.255.254),其中127.0.0.1是最常用的地址,被称为本地回环地址(Loopback Address)。该地址…

C#与其它编程语言有什么区别,以及相关优势有哪些

C#编程语言的主要特性包括**面向对象、统一的类型系统、自动内存管理等**。与其它编程语言相比,C#的优势体现在**跨平台开发支持、强大的语言集成查询(LINQ)功能、高效的性能**这几个方面。 C#的主要特性: 1. 面向对象&#xff…

Learning Deep Features for Discriminative Localization

1、引言 论文链接:https://arxiv.org/abs/1512.04150 Bolei Zhou[1] 等重新审视了 GAP(Gobal Average Pooling),并阐明了它如何明确地使卷积神经网络具有显著的定位能力,同时提出 CAM(Class Activation Maps)[1] 技术来可视化这种能力。CAM 允…

HTML详解

1. 文档结构标签 <!DOCTYPE html>&#xff1a;声明文档类型&#xff0c;告诉浏览器这是一个HTML5文档。<html>&#xff1a;HTML文档的根元素&#xff0c;包含整个HTML文档。<head>&#xff1a;包含文档的元数据&#xff08;metadata&#xff09;&#xff0c…

【全网行为管理解决方案】上网行为系统有哪些?

全网行为管理系统是一种用于监控、管理和优化企业内部网络中所有用户活动及网络流量的技术解决方案。 这类系统可以帮助企业提高网络安全、优化网络性能&#xff0c;并确保网络使用符合公司政策及法规要求。以下是几种常用的上网行为管理系统&#xff1a; 一、安企神 特点&am…

HubSpot 自动化营销平台助力出海企业精准获客与转化 | 自动化营销

HubSpot 提供了多个开源 cms 和一体化且全面的解决方案&#xff0c;可帮助出海企业优化内容营销策略 HubSpot 自动化营销加速国际化 随着全球化的推进&#xff0c;越来越多的企业开始寻求拓展国际市场&#xff0c;而在这个过程中&#xff0c;有效的客户关系管理和营销自动化成…

react redux异步请求

1,创建store //store/modules/channelStore.js import { createSlice } from "reduxjs/toolkit" import axios from "axios"const channelStore createSlice({name: channel,initialState: {channelList: []},reducers: {setChannels (state, action) {s…

javascript利用三元运算符制作补零程序

这里的补零是当数字小于0时自动在前面补零&#xff0c;大于等于10时&#xff0c;前面不用补零。 代码如下 <html><head><meta charset"UTF-8"><title></title></head><body><script>let numprompt("请输入一…

leetcode 3 无重复字符的最长子串

leetcode 3 无重复字符的最长子串 正文普通解法双指针 正文 普通解法 重点观察示例 3。本题重点是创建一个动态区间&#xff0c;然后判断位于这个动态区间之外的字符是否被包含在这个动态区间范围内。并且对于 s 长度小于 1 的情况要重点进行讨论。 class Solution:def lengt…

【React原理 - 任务调度和时间分片详解】

概述 在React15的时候&#xff0c;React使用的是从根节点往下递归的方式同步创建虚拟Dom&#xff0c;由于递归具有同步不可中断的特性&#xff0c;所以当执行长任务时(通常以60帧为标准&#xff0c;即16.6ms)就会长时间占用主线程长时间无响应&#xff0c;导致页面卡顿&#x…

.Net 6 WebApi项目中使用Log4Net详解

众所周知as we know&#xff0c; log4Net是一个很方便的日志输出工具&#xff0c;但是&#xff0c;每次使用&#xff0c;日志都没有顺利输出过.....各种不知名问题.......所以就记录一下&#xff0c;方便下次使用。 具体的与原理和基础在此不做赘述&#xff0c;咱直接上干货&a…

PHP在现代Web开发中的高效应用与实战案例

在快速迭代的Web开发领域&#xff0c;PHP作为一种成熟且广泛使用的服务器端脚本语言&#xff0c;始终占据着举足轻重的地位。从简单的动态网页到复杂的企业级应用&#xff0c;PHP凭借其强大的功能、丰富的扩展库以及良好的社区支持&#xff0c;成为了众多开发者的首选。本文将深…

下载bison操作步骤

bison官网链接 bison-3.8.2官网源代码下载链接 选择下载版本