达梦数据库-主备集群部署

devtools/2024/12/26 13:34:22/

主备(DW)集群部署

主备集群为最基础的高可用架构,只有主库对外提供数据库服务,备库仅做备份,根据实际要求及网络条件,可以选择配置为自动切换或者手动切换模式,本次以手动切换模式举例。
1主1备2节点主备集群部署规划
IP规划:

主机名服务ip心跳ip数据库实例名
dm01192.168.10.101192.168.10.101dmdbdw1
dm02192.168.10.102192.168.10.102dmdbdw2

端口规划:

实例名实例端口MAL 系统监听 TCP 连接的端口实例本地的守护进程监听 TCP 连接的端口实例监听守护进程 TCP 连接的端口
dw15236733674367536
dw25236733674367536

本地存储LVM磁盘规划:(按实际需求调整磁盘空间)
磁盘 LVM磁盘名/用途
/dev/sdc(100G) /dev/dmappvg/dmapplv (数据库安装磁盘)
/dev/sde(500G) /dev/dmdatavg/dmdatalv (数据磁盘)
/dev/sdf(500G) /dev/dmbakvg/dmbaklv (备份磁盘)

目录规划:(在对应服务器上创建目录owner为dmdba组为dinstall)
数据库软件安装目录 /home/dmdba/dmdbms
实例安装目录 /dmdata/
归档日志存放目录 /dmdata/arch
备份文件存放目录 /dmdata/dmbak/

操作系统配置

该步骤与单机部署一致,详情见 达梦数据库单机部署步骤

数据库软件安装

该步骤与单机部署一致,详情见 达梦数据库单机部署步骤

主备集群配置

初始化实例

2个节点完成实例初始化
执行以下命令

dminit path=/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=dmdb instance_name=dmdb SYSDBA_PWD="password" SYSAUDITOR_PWD="password"

以主机dmdb01为主库,启动实例

dmserver /dmdata/dmdb/dm.ini

出现system is ready后输入exit停止数据库
在这里插入图片描述
dmdb02:
在这里插入图片描述

脱机备份数据库

在主机dmdb01上执行以下命令,确认主库 dmap 服务已启动:
ps -ef|grep dmap
已启动:
在这里插入图片描述
若未启动,则先启动 DMAP 服务,dmdba 到安装目录的 bin 下执行以下命令:

./DmAPService start

dmdba用户 启动dmrman工具

dmrman use_ap=2

执行 backup 全库:

backup database '/dmdata/dmdb/dm.ini' backupset '/home/dmdba/bakfull';

备份还原备库

将备份的文件/home/dmdba/bakfull拷贝到备库服务器上。

在主机dmdb02上
使用 dmrman 工具还原备库,dmdba 用户执行:

dmrman	

进入dmrman工具交互界面
执行 restore:

restore database '/dmdata/dmdb/dm.ini' from backupset '/home/dmdba/bakfull';

完成后执行 recover(图中报错显示为备份期间没有日志产生,可忽略):

recover database '/dmdata/dmdb/dm.ini' from backupset '/home/dmdba/bakfull';

最后执行 recover update db_magic。

recover database '/dmdata/dmdb/dm.ini'  update db_magic;

在这里插入图片描述

修改dm.ini参数

所有节点都要修改
执行以下命令:
vi /dmdata/dmdb/dm.ini
主库dmdb01上修改以下参数值:

INSTANCE_NAME = dw1
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2

备库dmdb02上修改以下参数值:

INSTANCE_NAME = dw2
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2

配置归档配置文件 dmarch.ini

在实例目录下新建文件 dmarch.ini,执行以下命令:
vi /dmdata/dmdb/dmarch.ini
主库dmdb01上添加以下内容:

[ARCHIVE_REALTIME1]  
ARCH_TYPE     = REALTIME  
ARCH_DEST     = dw2   
[ARCHIVE_LOCAL1]
ARCH_TYPE     = LOCAL 
ARCH_DEST     = /dmdata/arch    
ARCH_FILE_SIZE    = 2048
ARCH_SPACE_LIMIT  = 102400

备库Dmdb02上添加以下内容:

[ARCHIVE_REALTIME1]  
ARCH_TYPE     = REALTIME 
ARCH_DEST     = dw1   
[ARCHIVE_LOCAL1]
ARCH_TYPE     = LOCAL
ARCH_DEST     = /dmdata/arch  
ARCH_FILE_SIZE    = 2048
ARCH_SPACE_LIMIT  = 102400    

配置MAL系统配置文件 dmmal.ini

在实例目录下新建文件 dmmal.ini,执行以下命令。
vi /dmdata/dmdb/dmmal.ini
主备库2个节点文件内容要相同。

MAL_CHECK_INTERVAL   = 5  
MAL_CONN_FAIL_INTERVAL  = 15  
[MAL_INST1]MAL_INST_NAME = dw1 MAL_HOST     = 192.168.10.101  MAL_PORT     = 7336MAL_INST_HOST   = 192.168.10.101  MAL_INST_PORT   = 5236 MAL_DW_PORT   = 7436MAL_INST_DW_PORT = 7536
[MAL_INST2]MAL_INST_NAME = dw2 MAL_HOST      = 192.168.10.102  MAL_PORT          = 7336MAL_INST_HOST         = 192.168.10.102  MAL_INST_PORT         = 5236 MAL_DW_PORT  = 7436MAL_INST_DW_PORT = 7536

配置守护进程配置文件 dmwatcher.ini

在实例目录下新建文件 dmwatcher.ini,执行以下命令:
vi /dmdata/dmdb/dmwatcher.ini
主备库2节点文件内容要相同。

[GRP_DW] 
DW_TYPE    = GLOBAL  
DW_MODE    = MANUAL 
DW_ERROR_TIME     = 30  
INST_RECOVER_TIME  = 60         
INST_ERROR_TIME   = 20  
INST_OGUID         = 453331 
INST_INI           = /dmdata/dmdb/dm.ini 
INST_AUTO_RESTART  = 1   
INST_STARTUP_CMD   = /home/dmdba/dmdbms/bin/DmServiceDW start

注册服务

以上启动为前台方式启动,仅用户搭建过程中验证配置。配置没问题后需要将实例,守护进程和确认监视器注册为系统服务。
使用 root 用户,到数据库安装目录的script/root下。
注册守护进程服务(主备库都执行)。

./dm_service_installer.sh -t dmwatcher -p DW -watcher_ini /dmdata/dmdb/dmwatcher.ini	

注册数据库实例服务(主备库都执行):

./dm_service_installer.sh -t dmserver -p DW -dm_ini /dmdata/dmdb/dm.ini

注册之后先不启动,启动服务不以root用户,而要用dmdba用户,启动脚本在v$DM_HOME/bin目录下(也就是软件安装的bin目录),执行 ll | grep Dm可以看到。

Mount状态启动集群

以 mount 方式启动数据库实例
使用 dmdba 用户,执行以下命令(主备库都执行):

dmserver /dmdata/dmdb/dm.ini mount

主备库都要是ready状态,表示成功
在新的终端使用 disql 工具连接数据库

disql SYSDBA/'"password"'

主备库都修改 oguid,执行以下命令:

sp_set_oguid(453331);

主库dmdb01上修改数据库模式为 primary,执行以下命令:

alter database primary;

备库dmdb02上修改数据库模式为 standby,执行以下命令:

alter database standby;

启动守护进程
dmdba 用户下,到数据库安装目录的 bin 下执行以下命令(主备库都执行):

dmwatcher /dmdata/dmdb/dmwatcher.ini

守护进程启动后,会将 Mount 的实例 Open。这里是前台启动的方式,因为我们前面注册了服务名称,所以就没必要前台启动,直接配好主从的主备关系后crtl+C退出两个实例的前台mount启动,然后调整实例启动服务脚本里的启动状态,依次按顺序启动主、备库实例、然后再主、备库的守护DmWatcher服务。

配置监视器

启动监视器(可以在任意节点配置)
守护进程配置为自动切换时,必须配置确认监视器。在主备服务器以外的服务器上(需安装有 DM 数据库软件,且与主备心跳网络端口开放)。
新建确认监视器配置文件 dmmonitor.ini,执行以下命令:
vi /dmdata/dmdb/dmmonitor.ini
添加以下内容:

MON_DW_CONFIRM    = 0
MON_LOG_PATH    = /home/dmdba/dmdbms/log
MON_LOG_INTERVAL  = 60
MON_LOG_FILE_SIZE   = 200
MON_LOG_SPACE_LIMIT  = 1024
[GRP_DW] MON_INST_OGUID    = 453331MON_DW_IP     = 192.168.10.101:7436MON_DW_IP     = 192.168.10.102:7436

执行以下命令,启动监视器。

dmmonitor /dmdata/dmdb/dmmonitor.ini	

启动后输入 show 命令查看集群状态。

配置sql日志

所有节点修改sqllog.ini
到实例路径下
cd /dmdata/dmdb/
vi sqllog.ini

BUF_TOTAL_SIZE = 10240
BUF_SIZE = 1024
BUF_KEEP_CNT = 6
[SLOG_ALL]
FILE_PATH = ../log
PART_STOR = 1
SWITCH_MODE = 2
SWITCH_LIMIT = 512
ASYNC_FLUSH = 1
FILE_NUM = 5
ITEMS = 0
SQL_TRACE_MASK = 2:3:25
MIN_EXEC_TIME = 1500
USER_MODE = 0
USERS = 

验证主备集群同步状态

监视器查看主备集群状态
执行以下命令,启动监视器:

dmmonitor /dmdata/dmdb/dmmonitor.ini

输入 show 命令查看集群状态:
其中守护进程状态 WSTATUS 为 OPEN,实例状态 ISTATUS 为 OPEN,归档类型 RTYPE 为 TIMELY,归档状态 RSTAT 为VALID。
disql 客户端验证
使用 disql 客户端登录主库,创建测试表,插入数据,执行以下命令:

disql SYSDBA/'"password"'@192.168.10.101:5236

SQL 提示符下执行以下命令:

create table test(id int);
insert into test values (1);
commit;

使用 disql 客户端登录备库,查询测试表验证,执行以下命令:

disql SYSDBA/'"password"'@192.168.10.102:5236

SQL 提示符下执行以下命令:

select * from test;

查看数据是否正常同步。

客户端连接集群

客户端主机上需要配置 dm_svc.conf 文件(未安装 DM 数据库的机器新建即可),文件路径:
32 位的 DM 安装在 Win32 操作平台下,此文件位于 %SystemRoot%\system32 目录;
64 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\system32 目录;
32 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\SysWOW64 目录;
在 Linux 平台下,此文件位于/etc 目录。
文件内容:

#全局配置区
DMDW=(192.168.10.101:5236,192.168.10.102:5236)
TIME_ZONE=(+480) #表示+8:00 时区
LOGIN_ENCRYPT=(0)
DIRECT=(Y)
#服务配置区
[DMDW]
LOGIN_MODE=(1) #只连主库

客户端程序连接数据库时,需要指定 IP 端口处替换为服务名即可,例如:disql SYSDBA/‘“password”’@DMDW。jdbc的url为:jdbc:dm://DMDW
注意
当修改了 dm_svc.conf 内容后,需要重启客户端程序,修改的配置才能生效。


到此就完成了达梦数据库主备集群的部署。

更多详细资料可前往达梦社区:https://eco.dameng.com


http://www.ppmy.cn/devtools/145535.html

相关文章

RPA系列-uipath 学习笔记3

用uipath读取excel填写表单 所有素材都搬运自uipath academy 读取数据 现在手头上有这样一份数据 需要按行依次把数据填入到浏览器中的表单中,首先创建一个空的process 在activity中拉入excel process scope,同时在里面点击use_excel_file,选择你要使用的file,并…

代码随想录算法训练营第51期第28天 | 122. 买卖股票的最佳时机 II、55. 跳跃游戏、45. 跳跃游戏 II、1005.K次取反后最大化的数组和

122. 买卖股票的最佳时机 II 122. 买卖股票的最佳时机 IIhttps://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/1.我刚刚看了一下之前用C写题的时候,自己说了句【我好像记得这道题是怎么写的,也不知道是福是祸】会心一笑,好像不…

修改采购订单BAPI学习研究-BAPI_PO_CHANGE

这里是修改采购订单BAPI,修改订单数量和交货日期的简单应用 文章目录 修改数量代码运行结果 修改交货日期代码运行结果 修改数量 代码 *&---------------------------------------------------------------------* *& Report Z_BAPI_PO_CHANGE *&----…

Halcon 的标定

*窗口坐标 宽度 dev_update_window(off)Halcon winw:=10000 winh:=10000 dev_open_window(0, 0, 1000, 1000, black, WindowHandle) dev_set_part(0,0,winw,winh) set_system (clip_region, false) dev_clear_window() dev_set_draw (margin) gen_region_line(xaxis, 0, 0, …

《战神:诸神黄昏》游戏运行时提示找不到gamede.dll文件怎么办?gamede.dll丢失的修复指南

在沉浸于《战神:诸神黄昏》的壮阔世界时,突然弹出的“找不到gamede.dll文件”错误提示可能会让玩家措手不及。作为一名经验丰富的软件开发从业者,我深知这类问题对游戏体验的影响。今天,我将为大家详细解析gamede.dll文件丢失的原…

Redis基础(1)--基本全局指令与架构

1. 基本全局命令 Redis有5种数据结构,但它们都是键值对中的值,对于键来说有⼀些通用的命令。 1.1KEYS 返回所有满足样式(pattern)的key。支持如下统配样式。 h?llo 匹配 hello , hallo 和hxlloh*llo 匹配 hllo 和 heeeelloh[…

Java操作Xml

一、数据准备 1、文件头实体类 package com.xiaobai.xmlpractice;import lombok.AllArgsConstructor; import lombok.Data;/*** Author 王天文* Date 2024/12/18 21:46* Description: xml头*/ AllArgsConstructor Data public class Head {private String desc;private Strin…

whisper.cpp: Android端测试 -- Android端手机部署音频大模型

whisper.cpp: Android端测试 1.环境需要2.构建项目3.Android测试 1.环境需要 以下是经实验验证可行的环境参考,也可尝试其他版本。 (1)PC:Ubuntu 22.04.4 (2)硬件设备:Android 手机 &#x…