DMDSC 集群是一个多实例、单数据库的系统具有高可用、高吞吐量、负载均衡等特点。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些文件,文件存放共享存储上。节点有自己独立的联机日志和归档日志,其中联机日志保存在共享存储上,归档日志可以保存在本地存储上也可以保存在共享存储上。
DMDSC 集群得以实现的重要基础就是共享存储。DM 支持的共享存储有两种:裸设备和 DMASM。这两种存储的区别在于后者在前者的基础上,部署并使用了 DMASM 文件系统。为了方便对裸设备上的磁盘或文件进行管理,推荐用户使用后者。
DMDSC 集群主要由数据库和数据库实例、共享存储、本地存储、通信网络、以及集群控制软件 DMCSS 组成。下面以部署了 DMASM 的 DMDSC 集群为例,展示 DMDSC 集群系统结构,如下图:
本次部署主要采用DMDSC集群两节点、DMRW集群两节点及异步同步2节点。其中DMDSC集群主要提供写业务,两节点DMRW备机用于查询业务。当DSC集群存储异常时,可以及时切换到DMRW集群用于提供服务,保证业务不中断。两台异步备机,分布在不同的机房用于数据容灾。架构图如下:
按实际业务需求,选择合适的服务器,准备 6台服务器,实验服务器参数建议如下:
DM 数据库安装在 Linux 操作系统所需条件:glibc 2.3 以上,内核 2.6,预先安装 UnixODBC,系统性能监控等组件。
DM 数据库不应该使用 root 用户安装和维护。需要在安装之前为 DM 数据库创建一个专用的系统用户 (dmdba) 和用户组 (dinstall)。
执行以下命令,新建组
groupadd dinstall
执行以下命令,新建用户 dmdba
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
执行以下命令,修改 dmdba 用户密码
passwd dmdba 输入dmdba密码 dameng123
执行以下命令,修改 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
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
执行以下命令,修改 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
设置系统安全策略
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
搭建数据库集群端口规划如下:(实际中可以按需要修改端口号)
共享集群与主备端口规划
使用root用户挂载iso文件
mkdir -p /dmiso mount -o loop dm8_20211112_x86_rh6_64_ent_8.1.2.94.iso /dmiso
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服务
本次使用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*
注意
如果查看不到配置的裸设备,请重启服务器再验证
创建配置文件存放目录,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
使用 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工具中执行命令结尾不要加分号。
二节点都需要配置,且文件内容相同,执行以下命令
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
DMASM 的两个节点分别配置,dmdcr.ini,dmdcr_path 相同,dmasvrmal.ini 文件内容也相同,dmdcr_seqo 分别为0 和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
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
集群各节点分别启动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 即表明启动成功)。
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'
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
实例初始化成功,类似下图结果:
在集群的1个节点启动dminit工具初始化数据库。dminit 执行完成后,会在 config_path目录(/home/dmdba/conf/dsc0_config 和/home/dmdba/conf/ dsc1_config)下生成配置文件 dm.ini 和 dmmal.ini。
将节点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服务,关闭集群。
以上启动方式为前台启动,仅用于验证集群配置过程。配置成功后需要注册为系统服务,方便启动和关闭集群,以及实现开机自动启动。注册的服务主要有:
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
重新以服务的方式启动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
注意:执行完毕后,需要重启数据库服务生效。这里暂不重启,待下一步配置完归档,再重启。
注意:生产环境是一定要开启归档的
节点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
注意:归档开启后,需要重启数据库服务。
监视器可以用来监控集群的整个状态,启停服务等。
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,可以看到支持的命令。
登陆集群监视器节点:
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
注意:如果第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
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
修改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
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
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
修改启动数据库到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;
安装步骤同与上述步骤相同
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 '/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"
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 ~]$
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
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
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
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
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;
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
分别启动DSC集群和备库的守护进程:
cd /home/dmdba/dmdbms/bin
DSC集群:
./DmWatcherServiceDSC start
DW备库:
./DmWatcherServicerw start
登录集群监视器,查看集群状态:
cd /home/dmdba/dmdbms/bin
./dmmonitor /home/dmdba/conf/dmmonitor.ini
输入show命令查看,确保数据库实例是ok,且都处于open状态,守护进程状态ok,归档状态都是valid。
#定时每周六凌晨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');
#定时每天凌晨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');
定时每天晚上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');
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 #配置有异步归档时,打开定时器,定时同步归档到异步备库
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"
vi /dm/dmdata/dmdb/dm.ini ALTER_MODE_STATUS = 0 ENABLE_OFFLINE_TS = 2 MAL_INI = 1 ARCH_INI = 1 INSTANCE_NAME= RW3/RW4
所有节点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
所有节点添加异步归档配置信息
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
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:表示启用定时器
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 #命令行方式启动
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
DSC集群节点执行:
systemctl disable DmASMSvrServiceDSC
systemctl disable DmCSSServiceDSC
systemctl disable DmWatcherServiceDSC
DW备库执行:
systemctl disable DmServicerw
systemctl disable DmWatcherServicerw
(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
使用disql登录数据,验证数据库同步
添加数据后测试,重新测试每个节点数据一致
文章
阅读量
获赞