注册
【与达梦同行】DMDSC2节点与2RW及2ASYNC环境搭建
技术分享/ 文章详情 /

【与达梦同行】DMDSC2节点与2RW及2ASYNC环境搭建

rgy 2022/12/05 4017 4 1

1 DSC集群介绍

DMDSC 集群是一个多实例、单数据库的系统具有高可用、高吞吐量、负载均衡等特点。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些文件,文件存放共享存储上。节点有自己独立的联机日志和归档日志,其中联机日志保存在共享存储上,归档日志可以保存在本地存储上也可以保存在共享存储上。
DMDSC 集群得以实现的重要基础就是共享存储。DM 支持的共享存储有两种:裸设备和 DMASM。这两种存储的区别在于后者在前者的基础上,部署并使用了 DMASM 文件系统。为了方便对裸设备上的磁盘或文件进行管理,推荐用户使用后者。
DMDSC 集群主要由数据库和数据库实例、共享存储、本地存储、通信网络、以及集群控制软件 DMCSS 组成。下面以部署了 DMASM 的 DMDSC 集群为例,展示 DMDSC 集群系统结构,如下图:

image.png

2 部署架构介绍

本次部署主要采用DMDSC集群两节点、DMRW集群两节点及异步同步2节点。其中DMDSC集群主要提供写业务,两节点DMRW备机用于查询业务。当DSC集群存储异常时,可以及时切换到DMRW集群用于提供服务,保证业务不中断。两台异步备机,分布在不同的机房用于数据容灾。架构图如下:
image.png

3 服务器硬件需求

3.1 操作系统要求

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

3.2 操作系统版本安装

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

3.3 本地目录规划

image.png

3.5 共享存储规划

image.png

4 操作系统配置

4.1 用户与组

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

groupadd dinstall

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

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

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

passwd dmdba 输入dmdba密码 dameng123

4.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

4.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

4.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

4.5 防火墙设置

设置系统安全策略

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

4.6 端口规划

搭建数据库集群端口规划如下:(实际中可以按需要修改端口号)
image.png
共享集群与主备端口规划
image.png

5 安装数据库

5.1 挂载数据库软件文件

使用root用户挂载iso文件

mkdir -p /dmiso mount -o loop dm8_20211112_x86_rh6_64_ent_8.1.2.94.iso /dmiso

5.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用户挂载iso文件

[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服务

6 配置共享存储

本次使用VM VirtualBox模拟存储
image.png
磁盘的方式方式有多种这里供参考,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*

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

7 配置 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.95 DCR_EP_PORT = 9000 [GRP_CSS] DCR_EP_NAME = CSS1 DCR_EP_HOST = 192.168.25.96 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.95 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.96 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

8 创建 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工具中执行命令结尾不要加分号。

9 配置ASM的MAL系统配置文件

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

vi /home/dmdba/conf/dmasvrmal.ini 添加以下内容: [MAL_INST1] MAL_INST_NAME = ASM0 MAL_HOST = 192.168.25.95 MAL_PORT = 7000 [MAL_INST2] MAL_INST_NAME = ASM1 MAL_HOST = 192.168.25.96 MAL_PORT = 7000

10 配置 DCR 启动配置文件

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

vi /home/dmdba/conf/dmdcr.ini

10.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

10.2 节点 2 添加以下内容

MDCR_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

11 启动集群

11.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 即表明启动成功)。

11.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'

11.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.95 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.96 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

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

11.4 启动数据库服务

将节点1机器/home/dmdba/conf/dsc1_config目录拷贝到节点2机器的/home/dmdba/conf目录下,再分别启动dmserver即可完成DMDSC集群搭建。
将 dsc2 目录复制到节点 2 上对应的目录下。
scp -r dsc2 192.168.25.96:/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服务,关闭集群。

12 注册服务

以上启动方式为前台启动,仅用于验证集群配置过程。配置成功后需要注册为系统服务,方便启动和关闭集群,以及实现开机自动启动。注册的服务主要有:
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 ./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 ./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

13 优化数据库参数

重新以服务的方式启动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
注意:执行完毕后,需要重启数据库服务生效。这里暂不重启,待下一步配置完归档,再重启。

14 开启归档

注意:生产环境是一定要开启归档的
节点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 = 1e [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

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

15 配置DSC集群监视器

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

su - dmdba vi /home/dmdba/conf/dmcssm.ini CSSM_OGUID = 63635 CSSM_CSS_IP = 192.168.25.95:9000 CSSM_CSS_IP = 192.168.25.96:9000 CSSM_LOG_PATH = /home/dmdba/dmdbms/log CSSM_LOG_FILE_SIZE = 500 CSSM_LOG_SPACE_LIMIT = 2048

启动监视器查看集群:

Cd /home/dmdba/dmdbms/bin ./dmcssm ini_path=/home/dmdba/conf/dmcssm.ini

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

16 监视器停服务

登陆集群监视器节点:

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

17 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

使用dmdba用户数据库备份,操作命令如下:

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';

拷贝备份集到DW备库:
scp -r /dmdata/dmbak/db_full_1028 dmdba@192.168.25.103:/dmdata/dmbak

18 DSC集群与DW配置

18.1 DSC集群配置

18.1.1 修改dm.ini

DSC0节点:

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

DSC1节点:

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

18.1.2 新建dmmal.ini

修改DSC集群所有节点dmmal.ini信息,内容完全一致。
vi /home/dmdba/conf/dsc0_config/dmmal.ini
vi /home/dmdba/conf/dsc1_config/dmmal.ini

MAL_CHECK_INTERVAL = 30 MAL_CONN_FAIL_INTERVAL = 10 [MAL_INST0] MAL_INST_NAME = DSC0 MAL_HOST = 192.168.25.95 MAL_PORT = 9300 MAL_INST_HOST = 192.168.25.95 MAL_INST_PORT = 5236 MAL_DW_PORT = 7436 MAL_INST_DW_PORT = 7536 [MAL_INST1] MAL_INST_NAME = DSC1 MAL_HOST = 192.168.25.96 MAL_PORT = 9300 MAL_INST_HOST = 192.168.25.96 MAL_INST_PORT = 5236 MAL_DW_PORT = 7436 MAL_INST_DW_PORT = 7536 [MAL_INST2] MAL_INST_NAME = RW1 MAL_HOST = 192.168.25.99 MAL_PORT = 9300 MAL_INST_HOST = 192.168.25.99 MAL_INST_PORT = 5236 MAL_DW_PORT = 7436 MAL_INST_DW_PORT = 7536 [MAL_INST3] MAL_INST_NAME = RW2 MAL_HOST = 192.168.25.100 MAL_PORT = 9300 MAL_INST_HOST = 192.168.25.100 MAL_INST_PORT = 5236 MAL_DW_PORT = 7436 MAL_INST_DW_PORT = 7536

18.1.3 新建dmwatcher.ini

dsc0节点:
vi /home/dmdba/conf/dsc0_config/dmwatcher.ini

[GRP1] DW_TYPE = GLOBAL DW_MODE = MANUAL DW_ERROR_TIME = 30 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 = 453332 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver INST_AUTO_RESTART = 0

dsc1节点:
vi /home/dmdba/conf/dsc1_config/dmwatcher.ini

[GRP1] DW_TYPE = GLOBAL DW_MODE = MANUAL DW_ERROR_TIME = 30 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 = 453332 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver INST_AUTO_RESTART = 0

18.1.4 修改dmarch.ini

dsc0配置:
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 ARCH_WAIT_APPLY=1 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = RW1 [ARCHIVE_REALTIME2] ARCH_TYPE = REALTIME ARCH_DEST = RW2

dsc1配置:
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 ARCH_WAIT_APPLY=1 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = rw1 [ARCHIVE_REALTIME2] ARCH_TYPE = REALTIME ARCH_DEST = rw2

18.1.5 修改dmdcr.ini

修改启动数据库到mount状态,并打开css服务自动拉起asm和dmserver进程。
dsc0节点:
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

dsc1节点:
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

注册守护进程服务

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

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

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

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

./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;

18.2 RW实时备库部署

18.2.1 安装数据库软件

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

18.2.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

18.2.3 使用备份还原数据库

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

18.3 RW实时备库配置

18.3.1 修改两个节点dm.ini

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

修改完成之后检查配置信息

[root@dm99 service]# su - dmdba Last login: Wed Nov 9 22:11:16 CST 2022 on pts/2 [dmdba@dm99 ~]$ grep -Ew "INSTANCE_NAME|PORT_NUM|DW_PORT|DW_INACTIVE_INTERVAL|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI|RLOG_SEND_APPLY_MON|COMPATIBLE_MODE|HA_INST_CHECK_FLAG" /dm/dmdata/dmdb/dm.ini INSTANCE_NAME = RW1 #Instance name PORT_NUM = 5236 #Port number on which the database server will listen RLOG_SEND_APPLY_MON = 64 #Monitor recently send or apply rlog_buf info COMPATIBLE_MODE = 0 #Server compatible mode, 0:none, 1:SQL92, 2:Oracle, 3:MS SQL Server, 4:MySQL, 5:DM6, 6:Teradata DW_INACTIVE_INTERVAL = 60 #Time in seconds that used to determine whether DMWATCHER exist DW_PORT = 0 #Instance tcp port for watch2 ALTER_MODE_STATUS = 1 #Whether to permit database user to alter database modeand status by SQLs, 1: yes, 0: no ENABLE_OFFLINE_TS = 2 #Whether tablespace can be offline MAL_INI = 1 #dmmal.ini ARCH_INI = 1 #dmarch.ini [dmdba@dm99 ~]$ [dmdba@dm100 ~]$ grep -Ew "INSTANCE_NAME|PORT_NUM|DW_PORT|DW_INACTIVE_INTERVAL|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI|RLOG_SEND_APPLY_MON|COMPATIBLE_MODE|HA_INST_CHECK_FLAG" /dm/dmdata/dmdb/dm.ini INSTANCE_NAME = RW2 #Instance name PORT_NUM = 5236 #Port number on which the database server will listen RLOG_SEND_APPLY_MON = 64 #Monitor recently send or apply rlog_buf info COMPATIBLE_MODE = 0 #Server compatible mode, 0:none, 1:SQL92, 2:Oracle, 3:MS SQL Server, 4:MySQL, 5:DM6, 6:Teradata DW_INACTIVE_INTERVAL = 60 #Time in seconds that used to determine whether DMWATCHER exist DW_PORT = 0 #Instance tcp port for watch2 ALTER_MODE_STATUS = 1 #Whether to permit database user to alter database mode and status by SQLs, 1: yes, 0: no ENABLE_OFFLINE_TS = 2 #Whether tablespace can be offline MAL_INI = 1 #dmmal.ini ARCH_INI = 1 #dmarch.ini [dmdba@dm100 ~]$

18.3.2 新建dmmal.ini

vi /dm/dmdata/dmdb/dmmal.ini
文件内容和DSC集群节点保持一致

MAL_CHECK_INTERVAL = 30 MAL_CONN_FAIL_INTERVAL = 10 [MAL_INST0] MAL_INST_NAME = DSC0 MAL_HOST = 192.168.25.95 MAL_PORT = 9300 MAL_INST_HOST = 192.168.25.95 MAL_INST_PORT = 5236 MAL_DW_PORT = 7436 MAL_INST_DW_PORT = 7536 [MAL_INST1] MAL_INST_NAME = DSC1 MAL_HOST = 192.168.25.96 MAL_PORT = 9300 MAL_INST_HOST = 192.168.25.96 MAL_INST_PORT = 5236 MAL_DW_PORT = 7436 MAL_INST_DW_PORT = 7536 [MAL_INST2] MAL_INST_NAME = RW1 MAL_HOST = 192.168.25.99 MAL_PORT = 9300 MAL_INST_HOST = 192.168.25.99 MAL_INST_PORT = 5236 MAL_DW_PORT = 7436 MAL_INST_DW_PORT = 7536 [MAL_INST3] MAL_INST_NAME = RW2 MAL_HOST = 192.168.25.100 MAL_PORT = 9300 MAL_INST_HOST = 192.168.25.100 MAL_INST_PORT = 5236 MAL_DW_PORT = 7436 MAL_INST_DW_PORT = 7536

18.3.3 新建dmarch.ini

RW1归档配置
vi /dm/dmdata/dmdb/dmarch.ini

ARCH_WAIT_APPLY=1 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dm/dmarch/ ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 102400 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = DSC0/DSC1 [ARCHIVE_REALTIME2] ARCH_TYPE = REALTIME ARCH_DEST = RW2

RW2归档配置
vi /dm/dmdata/dmdb/dmarch.ini

ARCH_WAIT_APPLY=1 [ARCHIVE_REALTIME2] ARCH_TYPE = REALTIME ARCH_DEST = rw1 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dm/dmarch ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 102400 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = dsc0/dsc1

18.3.4 新建dmwatcher.ini

RW1节点守护配置
vi /dm/dmdata/dmdb/dmwatcher.ini

[GRP1] DW_TYPE = GLOBAL #全局守护类型 DW_MODE = MANUAL #自动切换模式 DW_ERROR_TIME = 30 #远程守护进程故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 35 #本地实例故障认定时间 INST_OGUID = 453332 #守护系统唯一 OGUID 值 INST_INI = /dm/dmdata/dmdb/dm.ini #dm.ini 配置文件路径 INST_AUTO_RESTART = 0 #打开实例的自动启动功能 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动

RW2节点守护配置
vi /dm/dmdata/dmdb/dmwatcher.ini

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

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

RW1/RW2路径相同,使用以下命令直接注册服务

su - root cd /home/dmdba/dmdbms/script/root ./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdata/dmdb/dm.ini -m mount -p rw ./dm_service_installer.sh -t dmwatcher -watcher_ini /dm/dmdata/dmdb/dmwatcher.ini -p rw

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

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

18.3.7 设置RW为备库
设置两个备库的oguid和设置为备库:

cd /home/dmdba/dmdbms/bin ./disql SYSDBA/SYSDBA SP_SET_OGUID(453332); ALTER DATABASE standby;

18.4 配置DSC与RW集群监视器

DSC集群新建dmmonitor.ini
vi /home/dmdba/conf/dmmonitor.ini

MON_DW_Confirm = 0 #普通监视器模式 MON_LOG_PATH = /home/dmdba/dmdbms/log #监视器日志文件存放路径 MON_LOG_INTERVAL = 60 #每隔 60 s 定时记录系统信息到日志文件 MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32 MB MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间 [GRP1] MON_INST_OGUID = 453332 #组 GRP_RW 的唯一 OGUID 值 #以下配置为监视器到组 GRP_RW 的守护进程的连接信息,以“IP:PORT”的形式配置 #IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT MON_DW_IP = 192.168.25.99:7436 MON_DW_IP = 192.168.25.100:7436 MON_DW_IP = 192.168.25.95:7436/192.168.25.96:7436

18.5 启动守护进程

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

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

18.6 监视器查看DSC与RW集群状态

登录集群监视器,查看集群状态:

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

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

19 配置备份策略

19.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/dm/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');

19.2 定时增备

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

19.3 定时删除备份

定时每天晚上22点删除前30天的备份: call SP_CREATE_JOB('del_bak', 1, 0, '', 0, 0, '', 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'',''/dm/dmdata/dmbak'');call sp_db_bakset_remove_batch(''DISK'',now()-30);', 0, 0, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('del_bak', 's2', 1, 1, 1, 0, 0, '22:00:00', NULL, '2021-11-02 15:07:15', NULL, ''); call SP_JOB_CONFIG_COMMIT('del_bak');

20 异备库2节点部署

20.1 停集群服务

1.先停止dsc主库集群数据库服务

使用监视器停止数据库实例即可 cd /home/dmdba/dmdbms/bin ./dmcssm ini_path=/home/dmdba/conf/dmcssm.ini ep stop grp_dsc

2.分别停DSC两个节点集群守护进程

cd /home/dmdba/dmdbms/bin ./DmWatcherServiceDSC stop

3.分别停止两个RW2节点守护与数据库服务

cd /home/dmdba/dmdbms/bin ./DmWatcherServicerw stop

4.主库备份数据库

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 '/dm/dmback/db_full_1110';

5.拷贝备份文件到备库

[dmdba@dm95 dmback]$ scp -r db_full_1110/ 192.168.25.92:/dm/dmback/ [dmdba@dm95 dmback]$ scp -r db_full_1110/ 192.168.25.101:/dm/dmback/

主库dm.ini文件开启异步归档参数

vi /dm/dmdata/dmdb/dm.ini vi /home/dmdba/conf/dsc0_config/dm.ini vi /home/dmdba/conf/dsc1_config/dm.ini TIMER_INI = 1 #配置有异步归档时,打开定时器,定时同步归档到异步备库

20.2 初始化异步备库实例

1.使用以下命令进入dmdba用户下初始化实例

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

使用后备份文件恢复数据

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

20.3 修改两个节点dm.ini

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

20.4 配置dmmal.ini

所有节点dmmail.ini参数信息一致
vi /home/dmdba/conf/dsc0_config/dmmal.ini
vi /home/dmdba/conf/dsc1_config/dmmal.ini
DSC两个节点参数如下:

MAL_CHECK_INTERVAL = 30 MAL_CONN_FAIL_INTERVAL = 10 [MAL_INST0] MAL_INST_NAME = DSC0 MAL_HOST = 192.168.25.95 MAL_PORT = 9300 MAL_INST_HOST = 192.168.25.95 MAL_INST_PORT = 5236 MAL_DW_PORT = 7436 MAL_INST_DW_PORT = 7536 [MAL_INST1] MAL_INST_NAME = DSC1 MAL_HOST = 192.168.25.96 MAL_PORT = 9300 MAL_INST_HOST = 192.168.25.96 MAL_INST_PORT = 5236 MAL_DW_PORT = 7436 MAL_INST_DW_PORT = 7536 [MAL_INST2] MAL_INST_NAME = RW1 MAL_HOST = 192.168.25.99 MAL_PORT = 9300 MAL_INST_HOST = 192.168.25.99 MAL_INST_PORT = 5236 MAL_DW_PORT = 7436 MAL_INST_DW_PORT = 7536 [MAL_INST3] MAL_INST_NAME = RW2 MAL_HOST = 192.168.25.100 MAL_PORT = 9300 MAL_INST_HOST = 192.168.25.100 MAL_INST_PORT = 5236 MAL_DW_PORT = 7436 MAL_INST_DW_PORT = 7536 [MAL_INST4] MAL_INST_NAME = RW3 MAL_HOST = 192.168.25.92 MAL_PORT = 9300 MAL_INST_HOST = 192.168.25.92 MAL_INST_PORT = 5236 MAL_DW_PORT = 7436 MAL_INST_DW_PORT = 7536 [MAL_INST5] MAL_INST_NAME = RW4 MAL_HOST = 192.168.25.101 MAL_PORT = 9300 MAL_INST_HOST = 192.168.25.101 MAL_INST_PORT = 5236 MAL_DW_PORT = 7436 MAL_INST_DW_PORT = 7536

20.5 配置dmarch.ini

所有节点添加异步归档配置信息
RW1归档配置
vi /dm/dmdata/dmdb/dmarch.ini

ARCH_WAIT_APPLY=1 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dm/dmarch ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 102400 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = DSC0/DSC1 [ARCHIVE_REALTIME2] ARCH_TYPE = REALTIME ARCH_DEST = RW2 [ARCHIVE_ASYNC1] ARCH_TYPE = ASYNC #异步归档类型 ARCH_DEST = RW3 #异步归档目标实例名 ARCH_TIMER_NAME = RT_TIMER #定时器名称,和dmtimer.ini 中的名称一致 [ARCHIVE_ASYNC2] ARCH_TYPE = ASYNC #异步归档类型 ARCH_DEST = RW4 #异步归档目标实例名 ARCH_TIMER_NAME = RT_TIMER #定时器名称,和dmtimer.ini 中的名称一致

RW2归档配置
vi /dm/dmdata/dmdb/dmarch.ini

ARCH_WAIT_APPLY=1 [ARCHIVE_REALTIME2] ARCH_TYPE = REALTIME ARCH_DEST = RW1 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dm/dmarch ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 102400 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = dsc0/dsc1 [ARCHIVE_ASYNC1] ARCH_TYPE = ASYNC #异步归档类型 ARCH_DEST = RW3 #异步归档目标实例名 ARCH_TIMER_NAME = RT_TIMER #定时器名称,和dmtimer.ini 中的名称一致 [ARCHIVE_ASYNC2] ARCH_TYPE = ASYNC #异步归档类型 ARCH_DEST = RW4 #异步归档目标实例名 ARCH_TIMER_NAME = RT_TIMER #定时器名称,和dmtimer.ini 中的名称一致

Dsc两个节点追加节点参数信息
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 ARCH_WAIT_APPLY=1 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = RW1 [ARCHIVE_REALTIME2] ARCH_TYPE = REALTIME ARCH_DEST = RW2 [ARCHIVE_ASYNC1] ARCH_TYPE = ASYNC #异步归档类型 ARCH_DEST = RW3 #异步归档目标实例名 ARCH_TIMER_NAME = RT_TIMER #定时器名称,和dmtimer.ini 中的名称一致 [ARCHIVE_ASYNC2] ARCH_TYPE = ASYNC #异步归档类型 ARCH_DEST = RW4 #异步归档目标实例名 ARCH_TIMER_NAME = RT_TIMER #定时器名称,和dmtimer.ini 中的名称一致

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 ARCH_WAIT_APPLY=1 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = RW1 [ARCHIVE_REALTIME2] ARCH_TYPE = REALTIME ARCH_DEST = RW2 [ARCHIVE_ASYNC1] ARCH_TYPE = ASYNC #异步归档类型 ARCH_DEST = RW3 #异步归档目标实例名 ARCH_TIMER_NAME = RT_TIMER #定时器名称,和dmtimer.ini 中的名称一致 [ARCHIVE_ASYNC2] ARCH_TYPE = ASYNC #异步归档类型 ARCH_DEST = RW4 #异步归档目标实例名 ARCH_TIMER_NAME = RT_TIMER #定时器名称,和dmtimer.ini 中的名称一致

RW3配置本地归档

vi /dm/dmdata/dmdb/dmarch.ini [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dm/dmarch ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 102400

RW4配置本地归档

vi /dm/dmdata/dmdb/dmarch.ini [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dm/dmarch ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 102400

20.6 新建dmtimer.ini

dmtimer.ini(配置dmtimer.ini,用于定时触发实例发送归档日志到异步备库)
异步归档的最小触发间隔是1 分钟,定时器调度类型:
1:执行一次
2:按日执行
3:按周执行
4:按月执行的第几天
5:按月执行的第一周
6:按月执行的第二周
7:按月执行的第三周
8:按月执行的第四周
9:按月执行的最后一周
下面示例中定时器配置为每天分钟触发主库发送归档日志到异步备库,可以根据实际情况再做调整

备库RW1/RW2 vi /dm/dmdata/dmdb/dmtimer.ini 主库DSC: vi /home/dmdba/conf/dsc0_config/dmtimer.ini vi /home/dmdba/conf/dsc1_config/dmtimer.ini [RT_TIMER] #和dmarch.ini 中的ARCH_TIMER_NAME 一致 TYPE = 2 #2 按日执行 FREQ_MONTH_WEEK_INTERVAL = 1 #间隔月或周数 FREQ_SUB_INTERVAL = 0 #间隔天数 FREQ_MINUTE_INTERVAL = 1 #间隔分钟数 START_TIME = 00:00:00 #开始时间 END_TIME = 00:00:00 #结束时间 DURING_START_DATE = 2021-5-15 12:00:00 #开始时间点 DURING_END_DATE = 9999-12-31 23:59:59 #结束时间点 NO_END_DATE_FLAG = 1 #是否结束标记 DESCRIBE = RT_TIMER #定时器描述 IS_VALID = 1 #0:表示关闭定时器,1:表示启用定时器

20.7 新建dmwatcher.ini

RW3/RW4节点守护配置
vi /dm/dmdata/dmdb/dmwatcher.ini

[GRP1] DW_TYPE = LOCAL #本地守护类型 DW_MODE = MANUAL #自动切换模式 DW_ERROR_TIME = 30 #远程守护进程故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 35 #本地实例故障认定时间 INST_OGUID = 453332 #守护系统唯一 OGUID 值 INST_INI = /dm/dmdata/dmdb/dm.ini #dm.ini 配置文件路径 INST_AUTO_RESTART = 0 #打开实例的自动启动功能 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动

20.8 注册RW3/RW4节点服务

su - root cd /home/dmdba/dmdbms/script/root ./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdata/dmdb/dm.ini -m mount -p rw ./dm_service_installer.sh -t dmwatcher -watcher_ini /dm/dmdata/dmdb/dmwatcher.ini -p rw

21 禁止服务开机自启动

DSC集群节点执行: systemctl disable DmASMSvrServiceDSC systemctl disable DmCSSServiceDSC systemctl disable DmWatcherServiceDSC DW备库执行: systemctl disable DmServicerw systemctl disable DmWatcherServicerw

22 调整集群数据库参数

(1)执行优化脚本
完成以上步骤之后,还需对实例参数优化。可通过手动方式和自动方式进行调整。为增强参数优化的适用性,降低参数修改的过程风险,建议使用达梦数据库提供的 AutoParaAdj.sql 脚本进行实例参数优化,调整完成之后重启数据库使参数生效。

(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 ./DmWatcherServicerw stop ./DmServicerw start

23 测试集群数据同步

使用disql登录数据,验证数据库同步
image.png
添加数据后测试,重新测试每个节点数据一致
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服