暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

达梦DSC集群+DW备库部署实战:高可用架构搭建指南

579

概述

DMDSC 概述

DM
数据共享集群,全称为DM Data Shared Cluster
(简称DMDSC
),是一种基于共享存储架构的高可用数据库集群解决方案。DMDSC
允许多个数据库实例同时访问和操作同一数据库,具备高可用性、高性能和负载均衡等核心特性。通过其故障自动切换和故障自动重加入机制,当集群中的某个数据库实例发生故障时,系统能够自动将服务切换到其他正常实例,确保数据库服务的持续可用性,从而有效避免因单点故障导致的服务中断问题。


注意事项

以下内容为早期学习阶段整理的关于达梦数据库DSC(Data Sharing Cluster)
结合守护集群部署的详细过程,其架构设计与Oracle ADG(Active Data Guard)
环境类似。特别提醒:本教程仅适用于学习和测试场景,旨在帮助理解相关技术原理和操作流程,切勿直接用于生产环境如有实际生产需求,建议联系达梦数据库官方或专业服务团队,获取定制化方案和技术支持。

1.服务器硬件需求

按实际业务需求,选择合适的服务器,准备
3 台服务器,实验服务器参数建议如下:

硬件要求
物理内存
>=8 GB
交换区
8192
/tmp大小
>2000 MB
网络
物理机器需要 2个网卡,1个 public 网卡,1个 private 网卡
磁盘
根据实际应用系统需要挂载合适大小磁盘
共享存储
根据实际应用系统需要挂载合适大小共享存储

2.操作系统要求

2.1.操作系统版本安装

DM 数据库安装在 Linux 操作系统所需条件:glibc 2.3 以上,内核 2.6,预先安装 UnixODBC,系统性能监控等组件。

2.2.本地目录规划

用途目录路径备注
数据库软件安装目录
/home/dmdba/dmdbms
可用空间>50 GB
本地归档日志存放目录
/dmdata/dmarch
单独挂载磁盘
远程归档日志存放目录
/remote_arch
单独挂载磁盘
备份文件存放目录
/dmdata/dmbak
单独挂载磁盘

2.3.共享存储规划

用途磁盘/分区备注
存放 dcr 信息
/dev/sdf
1 GB 左右
存放 vote 信息
/dev/sdg
1 GB 左右
存放 redo 日志
/dev/sdh
10 GB 左右
存放数据文件
/dev/sdi
11 GB左右

3.操作系统配置

3.1.用户与组

DM 数据库不应该使用 root 用户安装和维护。需要在安装之前为 DM 数据库创建一个专用的系统用户 (dmdba) 和用户组 (dinstall)。

执行以下命令


groupadd dinstall

执行以下命令,新建用户dmdba


useradd -g dinstall -m -d home/dmdba -s bin/bash dmdba

执行以下命令,修改 dmdba 用户密码:


passwd dmdba
Dameng123

输入密码并确认

3.2.用户资源限制

执行以下命令,修改dmdba
用户资源限制:


vim etc/security/limits.conf

文件末尾添加如下内容:


dmdba  soft      nice       0
dmdba  hard      nice       0
dmdba  soft      as         unlimited
dmdba  hard      as         unlimited
dmdba  soft      fsize      unlimited
dmdba  hard      fsize      unlimited
dmdba  soft      nproc      65536
dmdba  hard      nproc      65536
dmdba  soft      nofile     65536
dmdba  hard      nofile     65536
dmdba  soft      core       unlimited
dmdba  hard      core       unlimited
dmdba  soft      data       unlimited
dmdba  hard      data       unlimited

3.3.修改内核参数


cp etc/sysctl.conf etc/sysctl.conf.bak
vi etc/sysctl.conf

  • 表示系统级别的能够打开的文件句柄的数量。是对整个系统的限制,并不是针对用户的

fs.file-max = 6553560
fs.aio-max-nr = 1048576
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
kernel.core_pattern = home/dmdata/core.%p
vm.swappiness=10
vm.dirty_background_ratio = 0
vm.min_free_kbytes = 2097152


使参数生效,以下命令
sysctl -p

3.4.用户环境变量

执行以下命令,修改 dmdba 用户环境变量:


vi home/dmdba/.bash_profile

文件末尾添加如下内容


export DM_HOME=/home/dmdba/dmdbms
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin

3.5.防火墙设置

3.5.1.关闭防火墙


设置系统安全策略
SELinux
echo "SELINUX=disabled" > etc/selinux/config
echo "SELINUXTYPE=targeted" >> etc/selinux/config

cat etc/selinux/config
setenforce 0

关闭防火墙
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service

3.5.2.端口规划

搭建 2 节点共享存储集群,端口规划如下:(实际中可以按需要修改端口号)

主机名public ipprivate ip实例名端口用途
dmdsc1
192.168.25.101

dsc1
5236
数据库实例 dmrw1 监听端口
dmdsc1
192.168.25.101

dsc1
9200
节点 1 DCR 检查数据库实例监听端口
dmdsc1
192.168.25.101

dsc1
9000
节点 1 CSS 进程 TCP 连接端口
dmdsc1
192.168.25.101

dsc1
9100
节点 1 ASM 进程 TCP 连接的端口
dmdsc1
192.168.25.101

dsc1
7000
节点 1 ASM 的 MAL 系统 TCP 连接的端口
dmdsc1
192.168.25.101

dsc1
9300
节点 1 数据库实例的 MAL 系统 TCP 连接的端口
dmdsc2
192.168.25.102

dsc2
5236
数据库实例 dmrw2 监听端口
dmdsc2
192.168.25.102

dsc2
9200
节点 2 DCR 检查数据库实例监听端口
dmdsc2
192.168.25.102

dsc2
9000
节点 2 CSS 进程 TCP 连接端口
dmdsc2
192.168.25.102

dsc2
9100
节点 2 ASM 进程 TCP 连接的端口
dmdsc2
192.168.25.102

dsc2
7000
节点 2 ASM 的 MAL 系统 TCP 连接的端口
dmdsc2
192.168.25.102

dsc2
9300
节点 2 数据库实例的 MAL 系统 TCP 连接的端口
dsc_dw
192.168.25.103

dsc_dw
5236
备库实例端口

共享集群与主备端口规划

实例名
实例端口
MAL 系统监听 TCP 连接的端口
实例本地的守护进程监听
TCP 连接的端口
实例监听守护进程
TCP 连接的端口
dsc1
5236
9300
7236
8236
dsc2
5236
9300
7236
8236
dsc_dw
5236
9300
7236
8236

4.安装数据库

4.1.使用root用户挂载数据库软件的iso文件


mkdir -p dmiso
mount -oloop dm8_20211112_x86_rh6_64_ent_8.1.2.94.iso dmiso

4.2.使用dmdba用户安装软件


su - dmdba

执行以下命令,切换到 dmiso 目录下


cd dmiso

执行 DMInstall.bin 文件开始安装,选择【-i】参数以命令行方式安装。


./DMInstall.bin -i

选择安装程序的语言 c/C 为中文,e/E 为英文。

提示是否安装 key 文件,输入 N 跳过。

选择时区,21 即东 8 区。

选择安装类型,默认典型安装(包含所有内容)。

选择软件安装目录,默认/home/dmdba/dmdbms

确认安装

安装完成提示使用root执行脚本:

/home/dmdba/dmdbms/script/root/root\_installer.sh


[root@dm95 mnt]# home/dmdba/dmdbms/script/root/root_installer.sh
移动 home/dmdba/dmdbms/bin/dm_svc.conf 到/etc目录
修改服务器权限
创建DmAPService服务
Created symlink from etc/systemd/system/multi-user.target.wants/DmAPService.service to usr/lib/systemd/system/DmAPService.service.
创建服务(DmAPService)完成
启动DmAPService服务

5.配置共享存储

本次使用VM VirtualBox
部署

sdf-sdi
是需要配置的共享磁盘。

执行以下命令,新建udev
规则文件:


vi etc/udev/rules.d/90-raw.rules

添加以下内容:


ACTION=="add",KERNEL=="sdf",RUN+="/bin/raw dev/raw/raw1 %N"
ACTION=="add",KERNEL=="sdg",RUN+="/bin/raw dev/raw/raw2 %N"
ACTION=="add",KERNEL=="sdh",RUN+="/bin/raw dev/raw/raw3 %N"
ACTION=="add",KERNEL=="sdi",RUN+="/bin/raw dev/raw/raw4 %N"
KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"

执行以下命令,使 udev 生效:


udevadm trigger --type=devices --action=change

执行以下命令,检查是否配置成功:


ll dev/raw/raw*


注意如果查看不到配置的裸设备,请重启服务器再验证

6.配置 DCR 初始化配置文件

创建配置文件存放目录,2 个节点都要执行,使用dmdba
用户,执行以下命令:


mkdir -p home/dmdba/conf

新建dmdcr_cfg.ini
文件,节点 1 使用dmdba
用户,执行以下命令:


vim home/dmdba/conf/dmdcr_cfg.ini

添加以下内容:


DCR_N_GRP = 3
DCR_VTD_PATH = dev/raw/raw2
DCR_OGUID = 63635

[GRP]
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = GRP_CSS
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_CSS]
DCR_EP_NAME = CSS0
DCR_EP_HOST = 192.168.25.101
DCR_EP_PORT = 9000
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.25.102
DCR_EP_PORT = 9000
[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = GRP_ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_ASM]
DCR_EP_NAME = ASM0
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 500
DCR_EP_HOST = 192.168.25.101
DCR_EP_PORT = 9100
DCR_EP_ASM_LOAD_PATH = dev/raw
[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 500
DCR_EP_HOST = 192.168.25.102
DCR_EP_PORT = 9100
DCR_EP_ASM_LOAD_PATH = dev/raw
[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_DSC]
DCR_EP_NAME = DSC0
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9200
[GRP_DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9200

7.创建 ASM 磁盘

使用dmdba
用户,到DM
数据库软件安装目录的bin
目录执行以下命令(只需在一个节点执行)。


cd home/dmdba/dmdbms/bin
./dmasmcmd

进入 ASM 提示符后执行以下命令:


create dcrdisk '/dev/raw/raw1' 'dcr'
create votedisk '/dev/raw/raw2' 'vote'
create asmdisk '/dev/raw/raw3' 'LOG0'
create asmdisk '/dev/raw/raw4' 'DATA0'

使用编辑好的dmdcr_cfg.ini
配置文件初始化dcrdisk
votedisk
,并在 ASM 提示符执行以下命令:


init dcrdisk '/dev/raw/raw1' from '/home/dmdba/conf/dmdcr_cfg.ini' identified by 'abcd'
init votedisk '/dev/raw/raw2' from '/home/dmdba/conf/dmdcr_cfg.ini'

注意DMASMCMD工具中执行命令结尾不要加分号。

8.配置ASM的MAL系统配置文件

2 个节点都需要配置,且文件内容相同,执行以下命令:


vi home/dmdba/conf/dmasvrmal.ini

添加以下内容:


[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.25.101
MAL_PORT = 7000
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.25.102
MAL_PORT = 7000

9.配置 DCR 启动配置文件

DMASM
的两个节点分别配置,dmdcr.ini,dmdcr_path
相同,dmasvrmal.ini
文件内容也相同,dmdcr_seqo
分别为0 和1。


vi home/dmdba/conf/dmdcr.ini

9.1.节点 1 添加以下内容:


DMDCR_PATH = dev/raw/raw1
#dmasmsvr使用的MAL配置文件路径
DMDCR_MAL_PATH = home/dmdba/conf/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_AUTO_OPEN_CHECK = 90
#ASM重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 30
DMDCR_ASM_STARTUP_CMD = home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/conf/dmdcr.ini
#DB重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 30
DMDCR_DB_STARTUP_CMD = home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/conf/dsc0_config/dm.ini dcr_ini=/home/dmdba/conf/dmdcr.ini

9.2.节点 2 添加以下内容:


DMDCR_PATH = dev/raw/raw1
#dmasmsvr使用的MAL配置文件路径
DMDCR_MAL_PATH = home/dmdba/conf/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_AUTO_OPEN_CHECK = 90
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 30
DMDCR_ASM_STARTUP_CMD = home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/conf/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 30
DMDCR_DB_STARTUP_CMD = home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/conf/dsc1_config/dm.ini dcr_ini=/home/dmdba/conf/dmdcr.ini

警告两个节点的 DMDCR_SEQNO 参数不能相同要唯一,DMDCR_DB_STARTUP_CMD 中启动脚本路径和配置文件路径要配置准确。如果不配置 css 自动启动 asm 和 db 则需要配置 DMDCR_ASM_RESTART_INTERVAL 和DMDCR_DB_RESTART_INTERVAL 为 0

10.启动集群

10.1.启动DMCSS
服务

集群各节点分别启动css
和asm服务,2个节点启动dmcss
dmdba
用户到数据库安装目录bin
下执行以下命令:


./dmcss dcr_ini=/home/dmdba/conf/dmdcr.ini
./dmasmsvr DCR_INI=/home/dmdba/conf/dmdcr.ini

提示上面的启动方式是前台启动,输入exit,即可退出,且要先停asm服务。

css 启动 asm 成功,(出现asm is ready
即表明启动成功)。

10.2.创建 ASM 磁盘组

asm 启动成功后,节点 1 使用dmdba
用户启动dmasmtool
工具。


./dmasmtool dcr_ini=/home/dmdba/conf/dmdcr.ini

在 ASM 提示符下创建 asm 磁盘组,创建 REDO 日志磁盘组,执行以下命令:


create diskgroup 'DMLOG'asmdisk '/dev/raw/raw3'

创建数据文件磁盘组,执行以下命令:


create diskgroup 'DMDATA'asmdisk '/dev/raw/raw4'

10.3.初始化共享存储集群数据库实例

dminit.ini
是设置数据库初始化参数的文件,要根据实际情况设置,尤其是页大小、字符集、大小写是否敏感的参数要和应用确认。在集群一个节点配置即可。

配置dminit
控制文件,节点 1 使用dmdba
用户执行以下命令:


vi home/dmdba/conf/dminit.ini

添加以下内容:


db_name = dsc
system_path = +DMDATA/data
system = +DMDATA/data/dsc/system.dbf
system_size = 128
roll = +DMDATA/data/dsc/roll.dbf
roll_size = 128
main = +DMDATA/data/dsc/main.dbf
main_size = 128
ctl_path = +DMDATA/data/dsc/dm.ctl
ctl_size = 8
page_size = 32
extent_size = 32
charset = 0
case_sensitive = 1
log_size = 2048
dcr_path = dev/raw/raw1
dcr_seqno = 0
auto_overwrite = 1
[DSC0]
config_path = home/dmdba/conf/dsc0_config
port_num = 5236
mal_host = 192.168.25.101
mal_port = 9300
log_path = +DMLOG/log/dsc0_log01.log
log_path = +DMLOG/log/dsc0_log02.log
[DSC1]
config_path = home/dmdba/conf/dsc1_config
port_num = 5236
mal_host = 192.168.25.102
mal_port = 9300
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log

初始化实例,节点 1 使用dmdba
用户执行以下命令:


./dminit control=/home/dmdba/conf/dminit.ini

实例初始化成功,类似下图结果:

在集群的1个节点启动dminit
工具初始化数据库。dminit
执行完成后,会在config_path
目录(/home/dmdba/conf/dsc0_config
/home/dmdba/conf/dsc1_config
)下生成配置文件dm.ini
dmmal.ini

10.4.启动数据库服务

将节点1机器/home/dmdba/conf/dsc1_config
目录拷贝到节点2机器的/home/dmdba/conf
目录下,再分别启动dmserver即可完成DMDSC集群搭建。

dsc2
目录复制到节点 2 上对应的目录下。

scp -r dsc2 192.168.25.102:/home/dmdba/conf/

如果DMCSS
配置有自动拉起dmserver
的功能,可以等待DMCSS
自动拉起实例,不需要手动启动。

下面是手动前台方式启动集群各节点的数据库服务:

节点1:


su - dmdba
cd /home/dmdbadmdbms/bin
./dmserver home/dmdba/conf/dsc0_config/dm.ini dcr_ini=/home/dmdba/conf/dmdcr.ini

节点2:


su - dmdba
cd /home/dmdbadmdbms/bin
./dmserver home/dmdba/conf/dsc1_config/dm.ini dcr_ini=/home/dmdba/conf/dmdcr.ini

观察css
窗口日志,db
会被自动启动。出现system is ready ep real open
,说明数据库实例启动成功。

然后,可以依次退出数据库服务,asm服务,css服务,关闭集群。

11.注册服务

以上启动方式为前台启动,仅用于验证集群配置过程。配置成功后需要注册为系统服务,方便启动和关闭集群,以及实现开机自动启动。注册的服务主要有:DMCSS、DMASM、DMSERVER
这3个关键服务。

2 个节点都需要注册,使用root
用户执行,到数据库安装目录的script/root
目录。

节点1:


su - root
cd /home/dmdba/dmdbms/script/root

./dm_service_installer.sh -t dmcss -dcr_ini home/dmdba/conf/dmdcr.ini -p DSC
./dm_service_installer.sh -t dmasmsvr -dcr_ini home/dmdba/conf/dmdcr.ini -p DSC -y DmCSSServiceDSC.service
./dm_service_installer.sh -t dmserver -dm_ini home/dmdba/conf/dsc0_config/dm.ini -dcr_ini home/dmdba/conf/dmdcr.ini -p DSC -y DmASMSvrServiceDSC

节点2:


su - root
cd /home/dmdba/dmdbms/script/root

./dm_service_installer.sh -t dmcss -dcr_ini home/dmdba/conf/dmdcr.ini -p DSC
./dm_service_installer.sh -t dmasmsvr -dcr_ini home/dmdba/conf/dmdcr.ini -p DSC -y DmCSSServiceDSC.service
./dm_service_installer.sh -t dmserver -dm_ini home/dmdba/conf/dsc1_config/dm.ini -dcr_ini home/dmdba/conf/dmdcr.ini -p DSC -y DmASMSvrServiceDSC.service

12.优化数据库参数

重新以服务的方式启动DSC集群:各节点分别先启动DMCSS服务、再启动DMASM服务,最后启动DMSERVER服务。

节点1和节点2:


su - dmdba

cd /home/dmdba/dmdbms/bin

./DmCSSServiceDSC start

./DmASMSvrServiceDSC start

最后分别启动数据库服务:


./DmServiceDSC start

DSC集群启动成功后,进行数据库参数优化:

(1)使用disql命令,或者登陆达梦的管理工具登陆数据库执行以下优化脚本的内容:

(2)执行完毕后,再执行:


sp_set_para_value(2,'TRX_DICT_LOCK_NUM','1024');
sp_set_para_value(2,'DSC_N_CTLS','50000');
sp_set_para_value(2,'DSC_N_POOLS','101');
sp_set_para_value(2,'DSC_TRX_CMT_LSN_SYNC','0');
sp_set_para_value(2,'DSC_ENABLE_MONITOR','0');

(3)最后,编辑dm.ini

节点1:


vi home/dmdba/conf/dsc0_config/dm.ini
DSC_FILE_INIT_ASYNC = 0
DSC_TRX_CMT_OPT = 1

节点2:


vi home/dmdba/conf/dsc1_config/dm.ini
DSC_FILE_INIT_ASYNC = 0
DSC_TRX_CMT_OPT = 1

注意:执行完毕后,需要重启数据库服务生效。这里暂不重启,待下一步配置完归档,再重启。

13.开启归档

生产环境是一定要开启归档的。

节点1:


vi home/dmdba/conf/dsc0_config/dm.ini
ARCH_INI = 1

vi home/dmdba/conf/dsc0_config/dmarch.ini
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/dmarch/arch_dsc0
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 102400
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = +DMDATA/dmarch/arch_dsc1
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 102400

节点2:


vi home/dmdba/conf/dsc1_config/dm.ini
ARCH_INI = 1

vi home/dmdba/conf/dsc1_config/dmarch.ini
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/dmarch/arch_dsc1
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 102400
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = +DMDATA/dmarch/arch_dsc0
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 102400

注意:归档开启后,需要重启数据库服务。

14.配置DSC集群监视器

监视器可以用来监控集群的整个状态,启停服务等。


su - dmdba
vi home/dmdba/conf/dmcssm.ini


CSSM_OGUID = 63635
CSSM_CSS_IP = 192.168.25.101:9000
CSSM_CSS_IP = 192.168.25.102:9000
CSSM_LOG_PATH = home/dmdba/dmdbms/log
CSSM_LOG_FILE_SIZE = 500
CSSM_LOG_SPACE_LIMIT = 2048

启动监视器查看集群:


/home/dmdba/dmdbms/bin/dmcssm home/dmdba/conf/dmcssm.ini

输入show命令查看,输入help,可以看到支持的命令。

15.配置DSC集群监视器

登陆DSC集群节点1:


su - dmdba
cd /home/dmdba/dmdbms/bin
./dmcssm ini_path=/home/dmdba/conf/dmcssm.ini
ep stop grp_dsc
ep stop grp_asm
exit

然后DSC集群2节点分别执行:


./DmCSSServiceDSC stop

16.DSC集群备份

注意:如果第15步骤停止了集群,需要重启集群,停止数据库实例即可,否则备份时报错无法连接ASM磁盘

节点1和节点2:
su - dmdba
cd home/dmdba/dmdbms/bin
./ DmCSSServiceDSC start
./ DmASMSvrServiceDSC start
最后分别启动数据库服务:
./DmServiceDSC start
使用监视器停止数据库实例即可
cd home/dmdba/dmdbms/bin
./dmcssm ini_path=/home/dmdba/conf/dmcssm.ini
ep stop grp_dsc

集群备份:


cd /home/dmdba/dmdbms/bin
./dmrman use_ap=2 dcr_ini=/home/dmdba/conf/dmdcr.ini
BACKUP DATABASE '/home/dmdba/conf/dsc0_config/dm.ini' BACKUPSET '/dmdata/dmbak/db_full_601';
RMAN> BACKUP DATABASE '/home/dmdba/conf/dsc0_config/dm.ini' BACKUPSET '/dmdata/dmbak/db_full_1028';

拷贝备份集到DW备库:


scp -r dmdata/dmbak/db_full\_1028 dmdba@192.168.25.103:/dmdata/dmbak

17.DSC集群+DW配置

17.1.DSC集群配置

1.修改dm.ini

节点1:


vi home/dmdba/conf/dsc0_config/dm.ini
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1

节点2:
vi home/dmdba/conf/dsc1\_config/dm.ini
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1

2.新建dmmal.ini

DSC集群所有节点内容都一致


vi home/dmdba/conf/dsc0_config/dmmal.ini
MAL_CHECK_INTERVAL = 30
MAL_CONN_FAIL_INTERVAL = 10
[MAL_INST0]
MAL_INST_NAME = DSC0
MAL_HOST = 192.168.25.101
MAL_PORT = 9300
MAL_INST_HOST = 192.168.25.101
MAL_INST_PORT = 5236
MAL_DW_PORT = 8236
MAL_INST_DW_PORT = 7236
[MAL_INST1]
MAL_INST_NAME = DSC1
MAL_HOST = 192.168.25.102
MAL_PORT = 9300
MAL_INST_HOST = 192.168.25.102
MAL_INST_PORT = 5236
MAL_DW_PORT = 8236
MAL_INST_DW_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = DSC_DW
MAL_HOST = 192.168.25.103
MAL_PORT = 9300
MAL_INST_HOST = 192.168.25.103
MAL_INST_PORT = 5236
MAL_DW_PORT = 8236
MAL_INST_DW_PORT = 7236

3.新建dmwatcher.ini

节点1:


vi home/dmdba/conf/dsc0_config/dmwatcher.ini

[GRP1]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 60
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 35
INST_INI = home/dmdba/conf/dsc0_config/dm.ini
DCR_INI = home/dmdba/conf/dmdcr.ini
INST_OGUID = 63635
INST_STARTUP_CMD = home/dmdba/dmdbms/bin/dmserver
INST_AUTO_RESTART = 0

节点2:


vi home/dmdba/conf/dsc1_config/dmwatcher.ini

[GRP1]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 60
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 35
INST_INI = home/dmdba/conf/dsc1_config/dm.ini
DCR_INI = home/dmdba/conf/dmdcr.ini
INST_OGUID = 63635
INST_STARTUP_CMD = home/dmdba/dmdbms/bin/dmserver
INST_AUTO_RESTART = 0

4.修改dmdcr.ini

修改启动数据库到mount
状态,并打开css
服务自动拉起asm
dmserver
进程。

节点1:


vi home/dmdba/conf/dmdcr.ini

DMDCR_PATH = dev/raw/raw1
#dmasmsvr使用的MAL配置文件路径
DMDCR_MAL_PATH = home/dmdba/conf/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_AUTO_OPEN_CHECK = 90
#ASM重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 30
DMDCR_ASM_STARTUP_CMD = home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/conf/dmdcr.ini
#DB重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 30
DMDCR_DB_STARTUP_CMD = home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/conf/dsc0_config/dm.ini dcr_ini=/home/dmdba/conf/dmdcr.ini mount

节点2:


vi home/dmdba/conf/dmdcr.ini

DMDCR_PATH = dev/raw/raw1
#dmasmsvr使用的MAL配置文件路径
DMDCR_MAL_PATH = home/dmdba/conf/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_AUTO_OPEN_CHECK = 90
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 30
DMDCR_ASM_STARTUP_CMD = home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/conf/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 30
DMDCR_DB_STARTUP_CMD = home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/conf/dsc1_config/dm.ini dcr_ini=/home/dmdba/conf/dmdcr.ini mount

5.注册守护进程服务


su - root
cd /home/dmdba/dmdbms/script/root
#节点1:
./dm_service_installer.sh -t dmwatcher -watcher_ini home/dmdba/conf/dsc0_config/dmwatcher.ini -p DSC
#节点2:
./dm_service_installer.sh -t dmwatcher -watcher_ini home/dmdba/conf/dsc1_config/dmwatcher.ini -p DSC

6.启动DSC集群(mount状态),DSC集群2个节点分别执行:


cd /home/dmdba/dmdbms/bin
./DmCSSServiceDSC start

7.任一集群节点,打开监视器查看:


./dmcssm ini_path=/home/dmdba/conf/dmcssm.ini

最终,数据库会成功启动到mount状态。

设置DSC集群为主库

登陆DSC集群任一节点执行:设置OGUID和设置为主库


cd home/dmdba/dmdbms/bin
./disql SYSDBA/SYSDBA

SP_SET_OGUID(63635);
ALTER DATABASE PRIMARY;

17.2.DW实时备库部署

1.安装数据库软件

安装步骤同与上述步骤相同

2.初始化数据库实例


cd /home/dmdba/dmdbms/bin
./dminit path=/dm/dmdata page_size=32 extent_size=32 charset=0 LENGTH_IN_CHAR=0 log_size=2048 db_name=dmdb instance_name=dmdb SYSDBA_PWD="Hn@dameng123" SYSAUDITOR_PWD="Hn@dameng123"

3.使用备份还原数据库


./dmrman use_ap=2 CTLSTMT="RESTORE DATABASE '/dmdata/dmdb/dm.ini' FROM BACKUPSET '/dmdata/dmbak/db_full_1028'"
./dmrman use_ap=2 CTLSTMT="RECOVER DATABASE '/dmdata/dmdb/dm.ini' FROM BACKUPSET '/dmdata/dmbak/db_full_1028'"
./dmrman use_ap=2 CTLSTMT="RECOVER DATABASE '/dmdata/dmdb/dm.ini' UPDATE DB_MAGIC"

17.3.DW实时备库配置

1.修改dm.ini


vi /dmdata/dmdb/dm.ini
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1

2.新建dmmal.ini

文件内容和DSC集群节点保持一致。


vi /dmdata/dmdb/dmmal.ini

MAL_CHECK_INTERVAL = 30
MAL_CONN_FAIL_INTERVAL = 10
[MAL_INST0]
MAL_INST_NAME = DSC0
MAL_HOST = 192.168.25.101
MAL_PORT = 9300
MAL_INST_HOST = 192.168.25.101
MAL_INST_PORT = 5236
MAL_DW_PORT = 8236
MAL_INST_DW_PORT = 7236
[MAL_INST1]
MAL_INST_NAME = DSC1
MAL_HOST = 192.168.25.102
MAL_PORT = 9300
MAL_INST_HOST = 192.168.25.102
MAL_INST_PORT = 5236
MAL_DW_PORT = 8236
MAL_INST_DW_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = DSC_DW
MAL_HOST = 192.168.25.103
MAL_PORT = 9300
MAL_INST_HOST = 192.168.25.103
MAL_INST_PORT = 5236
MAL_DW_PORT = 8236
MAL_INST_DW_PORT = 7236

3.新建dmarch.ini


vi /dmdata/dmdb/dmarch.ini

ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/dmarch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT= 307200
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DSC0/DSC1

4.新建dmwatcher.ini


vi /dmdata/dmdb/dmwatcher.ini

[GRP1]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 60
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 35
INST_INI = /dmdata/dmdb/dm.ini
INST_OGUID = 63635
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
INST_AUTO_RESTART = 1

5.注册守护进程和数据库进程服务


su - root
cd /home/dmdba/dmdbms/script/root

./dm_service_installer.sh -t dmserver -dm_ini /dmdata/dmdb/dm.ini -m mount -p DSC_DW
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/dmdb/dmwatcher.ini -p DSC_DW

6.启动数据库服务(mount状态)


cd /home/dmdba/dmdbms/bin
./DmServiceDSC_DW start

7.设置DW为备库

设置oguid
和设置为备库:


cd /home/dmdba/dmdbms/bin

SP_SET_OGUID(63635);
ALTER DATABASE standby;

17.4.配置DSC+DW集群监视器

DSC集群新建dmmonitor.ini



vi /home/dmdba/conf/dmmonitor.ini

MON_DW_CONFIRM = 0
MON_LOG_PATH = /home/dmdba/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 500
MON_LOG_SPACE_LIMIT = 2048
[GRP1]
MON_INST_OGUID = 63635
MON_DW_IP = 192.168.25.101:8236/192.168.25.102:8236
MON_DW_IP = 192.168.25.103:8236

17.5.启动守护进程

分别启动DSC集群和备库的守护进程:


cd /home/dmdba/dmdbms/bin
DSC集群:
./DmWatcherServiceDSC start
DW备库:
./DmWatcherServiceDSC_DW start

17.6.监视器查看DSC+DW集群状态

打开DSC+DW集群监视器,查看集群状态:


cd /home/dmdba/dmdbms/bin
./dmmonitor /home/dmdba/conf/dmmonitor.ini

输入show命令查看,确保数据库实例是ok,且都处于open状态,守护进程状态ok,归档状态都是valid。

18.备份策略

18.1.定时全备


#定时每周六凌晨1点做物理全备:
SP_INIT_JOB_SYS(1); --开启代理作业
call SP_CREATE_JOB('full_bak', 1, 0, '', 0, 0, '', 0, '每周六晚上凌晨1点开始做物理全备份');
call SP_JOB_CONFIG_START('full_bak');
call SP_ADD_JOB_STEP('full_bak''s1', 6, '01040000/dmdata/dmbak', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('full_bak''s2', 1, 2, 1, 64, 0, '01:00:00', NULL, '2021-11-02 14:58:35', NULL, '');
call SP_JOB_CONFIG_COMMIT('full_bak');

18.2.定时增备


#定时每天凌晨1点,周六除外,做增量备份:
call SP_CREATE_JOB('increment_bak'10''00''0'除每周六外,每天增量物理备份');
call SP_JOB_CONFIG_START('increment_bak');
call SP_ADD_JOB_STEP('increment_bak''s1'6'41040000/dmdata/dmbak|/dmdata/dmbak'0000NULL0);
call SP_ADD_JOB_SCHEDULE('increment_bak''s2'121630'01:00:00'NULL'2021-11-02 15:02:07'NULL'');
call SP_JOB_CONFIG_COMMIT('increment_bak');

18.3.定时删除备份


定时每天晚上22点删除前30天的备份:
call SP_CREATE_JOB('del_bak'10''00''0'每天晚上22点定时删除30天前的备份');
call SP_JOB_CONFIG_START('del_bak');
call SP_ADD_JOB_STEP('del_bak''s1'0'SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/dmdata/dmbak'');call sp_db_bakset_remove_batch(''DISK'',now()-30);'0000NULL0);
call SP_ADD_JOB_SCHEDULE('del_bak''s2'11100'22:00:00'NULL'2021-11-02 15:07:15'NULL'');
call SP_JOB_CONFIG_COMMIT('del_bak');

19.优化DW备库数据库参数

(1)执行1.14步骤的优化脚本

(2)再登陆数据库执行以下命令:


sp_set_para_value(2,'REDO_BUF_SIZE',512) --64
sp_set_para_value(2,'REDOS_BUF_SIZE',30720);--1024
sp_set_para_value(2,'REDOS_BUF_NUM',8192);-- 4096
sp_set_para_value(2,'REDOS_PARALLEL_NUM',32);
sp_set_para_value(2,'REDOS_PRE_LOAD',1);-- 0
sp_set_para_value(2,'REDOS_ENABLE_SELECT',0);-- 1

(3)跑完,重启数据库服务生效


cd /home/dmdba/dmdbms/bin
./DmServiceDSC_DW restart


20.禁止服务开机自启动


DSC集群节点执行:
systemctl disable DmASMSvrServiceDSC
systemctl disable DmCSSServiceDSC
systemctl disable DmServiceDSC
systemctl disable DmWatcherServiceDSC
DW备库执行:
systemctl disable DmServiceDSC_DW
systemctl disable DmWatcherServiceDSC_DW

21.配置服务名访问DSC+DW集群

在应用或中间件服务上创建dm_svc.conf
文件:

LINUX操作系统上创建在/etc/目录下,如/etc/dm_svc.conf

WINDOWS操作系统上创建在C:\\windows\\system32\\和C:\\Windows\\SysWOW64
目录下,文件中添加以下内容:


vi /etc/dm\_svc.conf

# 以#开头的行表示是注释
# 全局配置区
DMDSC=(192.168.25.101:5236,192.168.25.101:5236,192.168.25.103.33)
TIME_ZONE=(+480) #表示+8:00 时区
LOGIN_ENCRYPT=(0)
DIRECT=(Y)
# 服务配置区
[DMDSC]
CLUSTER=(DSC) #表示集群为DSC集群
EP_SELECTOR=(1) #表示第一节点正常时只连第一个节点
AUTO_RECONNECT=(2) #第一个节点故障恢复后自动重连第一个节点
SWITCH_TIME=(3) #在服务器之间切换的次数
SWITCH_INTERVAL=(10) #在服务器之间切换的时间间隔,单位为毫秒注:DMDSC为服务名,可以自定义,如果数据库用的是默认端口5236,则上面文件的端口号也可以省略。

应用的JDBC连接串修改为:jdbc:dm://DMDSC


往期分享

安装部署

1.分享一个以前搭建主备集群遇到的一个路径乱码案例
2.给大家分享如何标准化部署达梦单机环境
3.DM达梦数据库中大写敏感介绍分享


文章转载自国产数据库学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论