注册
【与达梦同行】DSC三节点+实时主备集群实施方案
技术分享/ 文章详情 /

【与达梦同行】DSC三节点+实时主备集群实施方案

神雕大侠 2022/12/12 1135 1 1

一、前期准备工作
1.1 收集系统信息
1.1.1 应用系统信息
1)网络拓扑和集群方案
应用系统网络架构信息,是否有数据库审计和网闸等设备。采用何种数据库集群方案。
四种方案:单机、DMRWC、DSC、MPP和DSC+DW架构设计。
网络拓扑方案,
针对生产系统建议使用集群方式,即达蒙
2)应用系统信息
系统名称
功能概述
业务类型(OLAP/OLTP/混合)
业务运行时段
定期JOB情况
停机窗口情况
业务并发量
数据库及版本
OS
数据库架构(RAC/MPP/主备/读写分离/HA/单机) DSC+主备
备份方式 RMAN
备份策略 全量、增量结合
规划数据量(GB)
空闲数据量(GB)
实际容量(GB)
数据存放格式
(文件系统/裸设备)
数据库模式 归档路径及空间规划
现有灾备方式
中间件(数据库连接池等)
上线时间
备注
1.1.2 硬件配置信息
硬件配置
服务器品牌/型号
CPU型号/数量 cat /proc/cpuinfo
内存容量 free –m
存储设备
RAID模式
网卡
网络带宽 百兆/千兆/万兆交换机
1.2 数据库服务器配置检查
检查数据库服务器配置是否能够满足上线系统功能和性能需求,例如cpu、内存、网络、存储是否能够满足系统扩展要求等。记录硬件测试的基准值:如网络的传输速度、存储的IO性能等。
对于没有配置UPS备用电源的数据库服务器建议关闭存储阵列(RAID卡)上的磁盘缓存。
模拟数据库读写小数据来测试硬盘的IO,命令如下:
dd if=/dev/zero of=test bs=64k count=4k oflag=dsync
测试网络传输速度,注意要测试双向的网络传输速度,命令如下:
scp local_file remote_username@remote_ip:remote_folder
检查数据库服务器上安装的操作系统是否能够满足上线需求,建议安装主流稳定版的Linux操作系统,不建议采用Windows做数据库服务器。
推荐采用64位的CPU和操作系统,为方便后期维护时分析问题,建议安装perf、gdb、nmon、pstack等工具包。
1.3 数据库安装配置检查
检查数据库版本和操作系统是否匹配?
检查是否是dmdba用户启动、达梦数据库程序安装路径、数据路径、备份路径、归档路径是否符合要求,原则上数据文件和备份文件、归档文件要存放到不同的物理磁盘上。
检查数据库初始化参数是否满足应用需求?页大小、大小写敏感、字符集、char按字节还是字符存储等。
检查是否扩展了REDO日志?一般应用将两个REDO都扩展到2GB即可。
检查是否针对应用建立了独立的用户和表空间?要杜绝采用SYSDBA用户和MAIN表空间的情况。
检查给用户分配的权限是否合理,是否过度?一般分配resource的权限即可。
对于单机数据库,数据库是否需要设置开机自启?一般在部署单机数据库时根据用户和现场系统应用场景需求确定是否设置开机自启。可将启动命令添加到开机脚本中,编辑/etc/rc.d/rc.local文件,如下:
su - dmdba -c “/home/dmdba/dmdbms/bin/DmServiceDMSERVER start”

针对DSC部署架构,建议归档日志和备份文件存储到本地文件系统磁盘,尽量不要放置到ASM内。如果需要部署源端为DSC集群的DMHS数据同步,是采用NFS网络挂载方式?还是读区异地归档?
1.4 操作系统参数检查
1.4.1 防火墙检查
数据库服务器都建议关闭防火墙,以root运行命令:
service iptables stop
输入setup命令,设置防火墙为开机不启动。
1.4.2 操作系统资源限制检查
在Linux、Solaris、AIX 和 HP-UNIX 等系统中,操作系统默认会对程序使用操作系统资源进行限制。为了使达梦数据库能够正常运行, 建议用户检查 ulimit 的参数。首先用户使用 dmdba用户进行登录,运行命令(ulimit -a)进行查询。

(1) data seg size建议设置为1048576以上或unlimited,此参数过小将导致数据库启动失败。用vim打开配置文件vi /etc/security/limits.conf 在下面加两行。
dmdba soft data unlimited
dmdba hard data unlimited
(2) file size建议设置unlimited(无限制),此参数过小导致数据库安装或初始化失败,也是在/etc/security/limits.conf文件中配置。
dmdba soft fsize unlimited
dmdba hard fsize unlimited
(3) open files建议设置为 65536 以上或 unlimited。用vim打开配置文件vi /etc/security/limits.conf 在下面加两行。
dmdba soft nolife 65536
dmdba hard nolife 65536
(4) virtual memory建议设置为1048576以上或 unlimited,此参数过小将导致数据库启动失败。
(5) max user processes 最大线程数这个参数建议修改为10240。用vim打开配置文件vi /etc/security/limits.conf 在下面加两行。
dmdba soft nproc 10240
dmdba hard nproc 10240
或者在dmserver的启动脚本中加入ulimit -u 10240。
(6) nice 设置优先级,值越小表示进程“优先级”越高。用vim打开配置文件vi /etc/security/limits.conf 在下面加两行。
dmdba soft nice 0
dmdba hard nice 0
(7) 地址空间限制设置为ulimit。用vim打开配置文件vi /etc/security/limits.conf 在下面加两行。
dmdba soft as unlimited
dmdba hard as unlimited
(8) 内核文件大小建议设置为ulimit。用vim打开配置文件vi /etc/security/limits.conf 在下面加两行。
dmdba soft core unlimited
dmdba hard core unlimited

注意通过systemctl或者systemd service方式设定随机自启动的数据库服务, 其能打开的最大文件描述符、proc数量等不受limits.conf控制,需要修改/etc/systemd/system.conf文件,增加类似DefaultLimitNOFILE=65535重启服务器,才有效果,如下:
DefaultLimitFSIZE=unlimited
DefaultLimitDATA=unlimited
DefaultLimitCORE=unlimited
DefaultLimitNOFILE=65536
DefaultLimitAS=unlimited
DefaultLimitNPROC=10240
DefaultLimitNICE=0

在数据库运行之后,可通过cat /proc/pid号/limits,检查实际资源限制是否生效:

1.4.3 操作系统内存参数检查
Linux操作系统要注意检查/proc/sys/vm/overcommit_memory是否设置为0。设置为1或者2时可能会出现操作物理内存有空余,但数据库服务无法申请内存的严重问题。
cat /proc/sys/vm/overcommit_memory
临时修改:
echo 0 > /proc/sys/vm/overcommit_memory
永久修改:
编辑/etc/sysctl.conf ,修改vm.overcommit_memory=0,然后执行sysctl -p 使配置文件生效。
1.4.4 磁盘调度算法检查
查看对应的调度算法:
cat /sys/block/{DEVICE-NAME}/queue/scheduler,注意把{DEVICE-NAME}替换会数据库所使用的对应的磁盘名称,以下以sda为例。
cat /sys/block/sda/queue/scheduler

注意上图选中的调度算法是[cfq],需要修改调度算法为deadline。
临地更改I/O调度方法,重启后失效:
echo deadline > /sys/block/sda/queue/scheduler
永久的更改I/O调度方法:
修改内核引导参数,加入elevator= deadline。
vi /boot/grub/menu.lst
更改到如下内容:
kernel /boot/vmlinuz-2.6.32-504.el6 ro root=LABEL=/ elevator=deadline rhgb quiet
重新确认调度算法:

1.4.5 ARENA参数检查
为避免arena分配区开辟过多造成内存损耗,在安装部署时需设置环境变量来限制arena的最大数量,将其写入到dmdba环境变量设置中。
vi /etc/profile
加入以下内容:
export MALLOC_ARENA_MAX=1
1.4.6 SWAPPINESS参数检查
为避免操作系统内存因大量使用SWAP内存而降低数据库性能,在安装部署时需检查设置相关变量来控制系统对swap的使用倾向,从而使系统最大发挥内存性能。
vi /etc/sysctl.conf
加入修改以下内容:
vm.swappiness = 10
vm.min_free_kbytes = 默认值或按需设置

swappiness的取值范围为1~100,当操作系统内存不足时,swappiness值建议设置为1;当系统内存足够时,swappiness推荐设置为10,以提供操作系统最佳性能。同时也可配合设置vm.min_free_kbytes参数限制值。注意,当参数vm.min_free_kbytes没有做限制时,建议根据实际情况至少配置一个最小限制值;当操作系统有默认值时,可以不进行改动。
1.5 网络环境检查
针对不同的集群方案,对网络配置的要求不同,需按照如下要求:
对于DSC集群,要求心跳网络至少采用万兆网络,心跳网络采用双网卡绑定。尽量采用独立的心跳网络,与业务网分离。
对于数据守护集群,建议使用独立的心跳网络,同时心跳网络采用双网卡绑定。如采用自动切换模式,务必使用独立心跳网络。
二、部署准备
2.1 硬件准备
服务器 4台服务器(3台DSC+1备库)
操作系统 XXXXXXXX
网卡 每台2块网卡。
磁盘阵列 共享存储,三台服都连接到同一个存储上(共享存储只需要映射到服务器端fdisk -l可以查看到就行,不需要格式化)。
归档日志和备份数据在本地;
2.2 集群规划
名称 DB00机器 DB01机器 DB02机器 BK01机器
业务IP xxx.xxx.xxx.211 xxx.xxx.xxx.212 xxx.xxx.xxx.213 xxx.xxx.xxx.214
心跳IP 1.1.1.1 1.1.1.2 1.1.1.3 1.1.1.4
INSTANCE_NAME DSC0 DSC1 DSC2 DSCSTANDBY
PORT_NUM 5236 5236 5236 5236
软件目录 /media /media /media /media
安装目录 /home/dm/dmdbms /home/dm/dmdbms /home/dm/dmdbms /home/dm/dmdbms
配置文件目录 /home/dscdata /home/dscdata /home/dscdata /dmdata
归档日志目录 /dmarch /dmarch /dmarch /dmarch
备份目录 /dmbak /dmbak /dmbak /dmbak
Logcommit /dmlog /dmlog /dmlog /dmlog
OGUID 45330
监视器地址 已商定使用应用服务器其中一台作为监视器
确认监视器目录 /home/dm/dmdbms/bin
2.3 修改主机名
DB0机器
[root@ localhost]# hostname DB0
[root@ localhost]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME= DB0
[root@ localhost]# vi /etc/hosts
127.0.0.1 localhost DB00 localhost4 localhost4.localdomain4
::1 localhost DB00 localhost6 localhost6.localdomain6

DB01机器
[root@ localhost]# hostname DB1
[root@ localhost]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME= DB1
[root@ localhost]# vi /etc/hosts
127.0.0.1 localhost DB01 localhost4 localhost4.localdomain4
::1 localhost DB01 localhost6 localhost6.localdomain6
DB02机器
[root@ localhost]# hostname DB2
[root@ localhost]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME= DB2
[root@ localhost]# vi /etc/hosts
127.0.0.1 localhost DB2 localhost4 localhost4.localdomain4
::1 localhost DB2 localhost6 localhost6.localdomain6
DSCSTANDBY机器
[root@ localhost]# hostname DSCSTANDBY
[root@ localhost]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME= DSCSTANDBY
[root@ localhost]# vi /etc/hosts
127.0.0.1 localhost DSCSTANDBY localhost4 localhost4.localdomain4
::1 localhost DSCSTANDBY localhost6 localhost6.localdomain6
2.4 关闭防火墙
关闭防火墙,并禁止防火墙服务开机自启。
[root@localhost]# systemctl stop firewalld
[root@localhost]# systemctl disable firewalld
注意:四台机器均需要修改。
2.5 修改系统参数
[root@localhost]# ulimit –n 65536
[root@localhost]# vi /etc/security/limits.conf
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft stack 65536
dmdba hard stack 65536
[root@localhost]# vi /etc/profile
ulimit -SHn 65536
[root@localhost]# vi /etc/sysctl.conf
vm.swappiness = 10
vm.min_free_kbytes = 默认值或按需设置
[root@localhost]# sysctl -p /etc/sysctl.conf
[root@localhost]# vi /etc/security/limits.d/90-nproc.conf
Dmdba soft nproc unlimited
注意:两台机器均需要修改。
三、创建目录并安装数据库
3.1 DB0机器安装数据库
创建dmdba用户,并切换到dmdba用户下,数据库安装在/home/dm/dmdbms目录下;过程……略;
3.2 DB1机器安装数据库
创建dmdba用户,并切换到dmdba用户下,数据库安装在/home/dm/dmdbms目录下;过程……略;
3.3 DB2机器安装数据库
创建dmdba用户,并切换到dmdba用户下,数据库安装在/home/dm/dmdbms目录下;过程……略;
3.4 DSCSTANDBY机器安装数据库
创建dmdba用户,并切换到dmdba用户下,数据库安装在/home/dm/dmdbms目录下;过程……略;

四、存储准备
4.1 划存储

用途 空间规划 说明
存放dcr配置信息 100G 共享存储(DM集群注册表)
存放vote信息 100G 共享存储(表决磁盘)
存放redo log 600G 共享存储
存放data数据 12T 共享存储
存放归档 3Tb 共享存储
备份 5Tb 文件系统挂载1节点(SCP出去)
Logcommit 100G 本地存储空间(每台)
20.9T
—存储划分一块裸设备使用fdisk命令来划分否则不用

fdisk /dev/sdb

  1. 依次输入 np 1 回车 +100M,完成第一块磁盘划分
  2. 依次输入 np 2 回车 +100M,完成第二块磁盘划分
  3. 依次输入 np 3 回车 +20480M,完成第三块磁盘划分
  4. 依次输入 np 回车 回车 回车,完成第四块磁盘划分
  5. 输入w命令,将裸设备划分的设置进行保存
    注意:以上需要在两台机器上执行。
    4.2 挂存储方法1
    [root@localhost]# vi /etc/udev/rules.d/60-raw.rules
    ACTION==“add”, KERNEL==“sdd”, RUN+=“/bin/raw /dev/raw/raw1 %N”
    ACTION==“add”, KERNEL==“sde”, RUN+=“/bin/raw /dev/raw/raw2 %N”
    ACTION==“add”, KERNEL==“sdc”, RUN+=“/bin/raw /dev/raw/raw3 %N”
    ACTION==“add”, KERNEL==“raw[1-3]”, OWNER=“dmdba”, GROUP=“dmdba”, MODE=“660”
    [root@localhost]# partprobe /dev/sdb
    [root@localhost]#7没有start_udev命令,可重启查看dev/raw下的文件
    [root@localhost]# reboot
    注意:三台设备按照顺序修改。可通过blockdev --getsize64 /dev/raw/raw1命令查看裸设备大小。如果60-raw.rules文件不存在,直接创建即可。
    4.3 挂存储方法2
    modprobe raw
    手动执行类似如下命令,“sdb”等换成实际的裸设备名称;
    raw /dev/raw/raw1 /dev/mapper/mpatha
    raw /dev/raw/raw2 /dev/mapper/mpathd
    raw /dev/raw/raw3 /dev/mapper/mpathc
    raw /dev/raw/raw4 /dev/mapper/mpathe
    raw /dev/raw/raw5 /dev/mapper/mpathb
    chown dmdba:dinstall /dev/raw/raw*
    chmod 660 /dev/raw/raw*
    执行完成后;
    vi /etc/rc.d/rc.local 添加上述内容;
    注意:两台设备都执行;
    五、搭建DSC
    5.1配置dmdcr_cfg.ini
    在/home/dm/dscdata下新建dmdcr_cfg.ini文件;
    DCR_N_GRP = 4
    DCR_VTD_PATH = /dev/raw/raw2
    DCR_OGUID = 45331
    [GRP]
    DCR_GRP_TYPE = CSS
    DCR_GRP_NAME = GRP_CSS
    DCR_GRP_N_EP = 3
    DCR_GRP_DSKCHK_CNT = 60
    [GRP_CSS]
    DCR_EP_NAME = CSS0
    DCR_EP_HOST = xxx.xxx.xxx.211 #业务地址
    DCR_EP_PORT = 9341
    [GRP_CSS]
    DCR_EP_NAME = CSS1
    DCR_EP_HOST = xxx.xxx.xxx.212 #业务地址
    DCR_EP_PORT = 9342
    [GRP_CSS]
    DCR_EP_NAME = CSS2
    DCR_EP_HOST = xxx.xxx.xxx.213 #业务地址
    DCR_EP_PORT = 9343

[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = GRP_ASM
DCR_GRP_N_EP = 3
DCR_GRP_DSKCHK_CNT = 60
[GRP_ASM]
DCR_EP_NAME = ASM0
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 1.1.1.1 #心跳地址
DCR_EP_PORT = 9350
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 1.1.1.2 #心跳地址
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP_ASM]
DCR_EP_NAME = ASM2
DCR_EP_SHM_KEY = 93362
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 1.1.1.3 #心跳地址
DCR_EP_PORT = 9353
DCR_EP_ASM_LOAD_PATH = /dev/raw

[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_DSC
DCR_GRP_N_EP = 3
DCR_GRP_DSKCHK_CNT = 60
[GRP_DSC]
DCR_EP_NAME = DSC0
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
[GRP_DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9742
[GRP_DSC]
DCR_EP_NAME = DSC2
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9743
注意:三台机器该文件相同。
5.2初始化磁盘组
在A机器上启动dmasmcmd工具,依次输入以下命令
[root@localhost]# cd /home/dm/bin
[root@localhost]# ./dmasmcmd
ASM> create dcrdisk ‘/dev/raw/raw1’ ‘dcr’
ASM> create votedisk ‘/dev/raw/raw2’ ‘vote’
ASM> create asmdisk ‘/dev/raw/raw3’ ‘LOG0’
create asmdisk ‘/dev/raw/raw4’ ‘DATA0’
create asmdisk ‘/dev/raw/raw5’ ‘ARCH0’

create dcrdisk ‘/dev/raw/raw1’ ‘dcr’
create votedisk ‘/dev/raw/raw2’ ‘vote’
create asmdisk ‘/dev/raw/raw3’ ‘LOG0’
create asmdisk ‘/dev/raw/raw4’ ‘DATA0’
create asmdisk ‘/dev/raw/raw5’ ‘ARCH0’
init dcrdisk ‘/dev/raw/raw1’ from ‘/home/dm/dscdata/dmdcr_cfg.ini’ identified by ‘abcd’
init votedisk ‘/dev/raw/raw2’ from ‘/home/dm/dscdata/dmdcr_cfg.ini’

ASM> init dcrdisk ‘/dev/raw/raw1’ from ‘/home/dm/dscdata/dmdcr_cfg.ini’ identified by ‘abcd’
ASM> init votedisk ‘/dev/raw/raw2’ from ‘/home/dm/dscdata/dmdcr_cfg.ini’
注意: 以上初始化只需在一个节点上执行。
MOUNT DBBAK
5.3配置dmasvrmal.ini
在/dm/dscdata下新建dmasvrmal.ini文件;
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 1.1.1.1
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 1.1.1.2
MAL_PORT = 7237
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 1.1.1.3
MAL_PORT = 7238
注意:三台机器该文件相同。
5.4配置dmdcr.ini
在DB00机器的/home/dm/dscdata下新建dmdcr.ini文件;
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/dm/dscdata/dmasvrmal.ini
DMDCR_SEQNO = 0

#ASM重启参数,命令行方式启动
#DMDCR_ASM_RESTART_INTERVAL = 30
#DMDCR_ASM_STARTUP_CMD = systemctl start DmASMSvrService

#DB重启参数,命令行方式启动
#DMDCR_DB_RESTART_INTERVAL = 60
#DMDCR_DB_STARTUP_CMD = systemctl start DmServiceDSC
在DB01机器的/home/dm/dscdata下新建dmdcr.ini文件;
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/dm/dscdata/dmasvrmal.ini
DMDCR_SEQNO = 1

#ASM重启参数,命令行方式启动
#DMDCR_ASM_RESTART_INTERVAL = 30
#DMDCR_ASM_STARTUP_CMD = systemctl start DmASMSvrService

#DB重启参数,命令行方式启动
#DMDCR_DB_RESTART_INTERVAL = 60
#DMDCR_DB_STARTUP_CMD = systemctl start DmServiceDSC
在DB02机器的/home/dm/dscdata下新建dmdcr.ini文件;
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/dm/dscdata/dmasvrmal.ini
DMDCR_SEQNO = 2

#ASM重启参数,命令行方式启动
#DMDCR_ASM_RESTART_INTERVAL = 30
#DMDCR_ASM_STARTUP_CMD = systemctl start DmASMSvrService

#DB重启参数,命令行方式启动
#DMDCR_DB_RESTART_INTERVAL = 60
#DMDCR_DB_STARTUP_CMD = systemctl start DmServiceDSC

注:dmdcr.ini中先将ASM和DMSERVER配置为手动服务,待所有配置完成后,再修改dmdcr.ini将ASM和DMSERVER配置成自动拉起。
注:DB00: DMDCR_SEQNO =0/ DB01:DMDCR_SEQNO =1/ DB01:DMDCR_SEQNO =2
5.5启动CSS、ASM服务
分别前台启动两台机器的CSS、ASM服务
DB00
[root@localhos]# ./dmcss DCR_INI=/home/dm/dscdata/dmdcr.ini
dmcss V8.1.0.157-Build(2019.05.07-106493)ENT
设置CSS[0]为主CSS
[ASM]: 设置EP[0]为主EP
[ASM]: 设置命令[START NOTIFY], 目标节点[0], 命令序号[2]
[ASM]: 设置命令[EP START], 目标节点[0], 命令序号[3]
[ASM]: 设置命令[NONE], 目标节点[0], 命令序号[0]
[ASM]: 设置命令[EP START], 目标节点[1], 命令序号[9]
[ASM]: 设置命令[NONE], 目标节点[1], 命令序号[0]
[ASM]: 设置命令[EP OPEN], 目标节点[0], 命令序号[12]
[ASM]: 设置命令[EP OPEN], 目标节点[1], 命令序号[13]
[ASM]: 设置命令[NONE], 目标节点[0], 命令序号[0]
[ASM]: 设置命令[NONE], 目标节点[1], 命令序号[0]
[ASM]: 设置命令[EP REAL OPEN], 目标节点[0], 命令序号[15]
[ASM]: 设置命令[EP REAL OPEN], 目标节点[1], 命令序号[16]
[ASM]: 设置命令[NONE], 目标节点[0], 命令序号[0]
[ASM]: 设置命令[NONE], 目标节点[1], 命令序号[0]
DB01
[root@localhos]# ./dmasmsvr DCR_INI=/home/dm/dscdata/dmdcr.ini
DMASMSVR V8.1.0.157-Build(2019.05.07-106493)ENT
ASM SELF EPNO:0
dmasmsvr task worker thread startup
the ASM server is Ready.

DB02
[root@localhos]# ./dmasmsvr DCR_INI=/home/dm/dscdata/dmdcr.ini
DMASMSVR V8.1.0.157-Build(2019.05.07-106493)ENT
ASM SELF EPNO:0
dmasmsvr task worker thread startup
the ASM server is Ready.

5.6创建DMASM磁盘组
在DB00机器上启动dmasmtool工具,创建DMASM磁盘组
[root@localhost]# cd /dm/dmdbms/bin
[root@localhost]#./dmasmtool DCR_INI=/home/dm/dscdata/dmdcr.ini
ASM> create diskgroup ‘DMLOG’ asmdisk ‘/dev/raw/raw3’
create diskgroup ‘DMDATA’ asmdisk ‘/dev/raw/raw4’
create diskgroup ‘DMARCH’ asmdisk ‘/dev/raw/raw5’

在一台机器执行;
5.7配置dminit.ini
在/home/dm/dscdata下新建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
log_size = 2048
dcr_path = /dev/raw/raw1
dcr_seqno = 0
auto_overwrite = 1
PAGE_SIZE = 32
CASE_SENSITIVE = n
[DSC0]
config_path = /home/dm/dscdata/dsc0_config
port_num = 5236
mal_host = 1.1.1.1
mal_port = 9340
log_path = +DMLOG/log/dsc0_log01.log
log_path = +DMLOG/log/dsc0_log02.log
page_size = 32
case_sensitive = n
[DSC1]
config_path = /home/dm/dscdata /dsc1_config
port_num = 5236
mal_host = 1.1.1.2
mal_port = 9341
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
page_size = 32
case_sensitive = n
[DSC2]
config_path = /home/dm/dscdata /dsc1_config
port_num = 5236
mal_host = 1.1.1.3
mal_port = 9342
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
page_size = 32
case_sensitive = n
注意:只在一台机器配置。
5.8初始化数据库
在DB00机器上启动dminit工具初始化数据库,然后会在config目录下生成dsc0_config和dsc1_config目录,每个目录下都有dm.ini和dmmal.ini。将A机器上生成的dsc1_config目录剪贴到DB01机器的config目录下
[root@localhost]# ./dminit control=/home/dm/dscdata/dminit.ini
V7.6.0.70-Build(2018.06.19-93640)ENT

5.9配置dmarch.ini
将两台机器上dm.ini中的ARCH_INI设置为1,然后配置dmarch.ini文件
在DB00机器的/home/dm/dscdata/dsc0_config下新建dmarch.ini文件
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/dmarch/ARCH_DSC0
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 409600
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = +DMARCH/dmarch/ARCH_DSC1
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 409600
ARCH_LOCAL_SHARE = 1
[ARCH_REMOTE2]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC2
ARCH_INCOMING_PATH = +DMARCH/dmarch/ARCH_DSC2
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 409600
ARCH_LOCAL_SHARE = 1----浙江未配置

在DB01机器的/home/dm/dscdata/dsc1_config下新建dmarch.ini文件
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/dmarch/ARCH_DSC1
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 409600
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = +DMARCH/dmarch/ARCH_DSC0
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 409600
ARCH_LOCAL_SHARE = 1
[ARCH_REMOTE2]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC2
ARCH_INCOMING_PATH = +DMARCH/dmarch/ARCH_DSC2
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 409600
ARCH_LOCAL_SHARE = 1
在DB02机器的/home/dm/dscdata/dsc1_config下新建dmarch.ini文件
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/dmarch/ARCH_DSC2
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 409600
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = +DMARCH/dmarch/ARCH_DSC0
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 409600
ARCH_LOCAL_SHARE = 1
[ARCH_REMOTE2]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = +DMARCH/dmarch/ARCH_DSC1
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 409600
ARCH_LOCAL_SHARE = 1
5.10启动DMSERVER服务
DB0机器
[root@localhost]# ./dmserver /home/dm/dscdata/dsc0_config/dm.ini dcr_ini=/home/dm/dscdata/dmdcr.ini

DB1机器
[root@localhost]# ./dmserver /home/dm/dscdata/dsc1_config/dm.ini dcr_ini=/home/dm/dscdata/dmdcr.ini
DB2机器
[root@localhost]# ./dmserver /home/dm/dscdata/dsc0_config/dm.ini dcr_ini=/home/dm/dscdata/dmdcr.ini

5.11设置后台启动脚本
DMCSS后台服务脚本,DMASM后台服务启动脚本,实例DMSERVER后台启动脚本。
DB0机器
[root@localhost]# cp /home/dm/dmdbms/bin/service_template/DmASMSvrService /etc/rc.d/init.d/DmASMSvrService
[root@localhost]# cp /home/dm/dmdbms/bin/service_template/DmCSSService /etc/rc.d/init.d/DmCSSService
[root@localhost]# cp /home/dm/dmdbms/bin/service_template/DmService /etc/rc.d/init.d/DmServiceDSC

[root@localhost]# vi /etc/rc.d/init.d/DmASMSvrService
INI_PATH=“/home/dscdata/dmdcr.ini”

[root@localhost]# vi /etc/rc.d/init.d/DmCSSService
INI_PATH=“/dm/dscdata/dmdcr.ini”

[root@localhost]# vi /etc/rc.d/init.d/DmServiceDSC
INI_PATH=“/dm/dscdata/dsc0_config/dm.ini”
DCR_INI_PATH=“/dm/dscdata/dmdcr.ini”

DB1机器
[root@localhost]# cp /dm/dmdbms/bin/service_template/DmASMSvrService /etc/rc.d/init.d/DmASMSvrService
[root@localhost]# cp /dm/dmdbms/bin/service_template/DmCSSService /etc/rc.d/init.d/DmCSSService
[root@localhost]# cp /dm/dmdbms/bin/service_template/DmService /etc/rc.d/init.d/DmService
[root@localhost]# vi /etc/rc.d/init.d/ DmASMSvrService
INI_PATH=“/dm/dscdata/dmdcr.ini”
[root@localhost]# vi /etc/rc.d/init.d/DmCSSService
INI_PATH=“/dm/dscdata/dmdcr.ini”
[root@localhost]# vi /etc/rc.d/init.d/DmService
INI_PATH=“/dm/dsdata/dsc1_config/dm.ini”
DCR_INI_PATH=“/dm/dscdata/dmdcr.ini”
DB2机器
[root@localhost]# cp /dm/dmdbms/bin/service_template/DmASMSvrService /etc/rc.d/init.d/DmASMSvrService
[root@localhost]# cp /dm/dmdbms/bin/service_template/DmCSSService /etc/rc.d/init.d/DmCSSService
[root@localhost]# cp /dm/dmdbms/bin/service_template/DmService /etc/rc.d/init.d/DmService
[root@localhost]# vi /etc/rc.d/init.d/ DmASMSvrService
INI_PATH=“/dm/dscdata/dmdcr.ini”
[root@localhost]# vi /etc/rc.d/init.d/DmCSSService
INI_PATH=“/dm/dscdata/dmdcr.ini”
[root@localhost]# vi /etc/rc.d/init.d/DmService
INI_PATH=“/dm/dsdata/dsc1_config/dm.ini”
DCR_INI_PATH=“/dm/dscdata/dmdcr.ini”
六、配置监视器
6.1 配置dmcssm.ini
将dmcssm.ini放在数据库安装目录的bin目录下,内容如下:
CSSM_OGUID = 45330
CSSM_CSS_IP = 1.1.1.1:9340
CSSM_CSS_IP = 1.1.1.2:9341
CSSM_CSS_IP = 1.1.1.3:9342
CSSM_LOG_PATH = …/log
CSSM_LOG_FILE_SIZE = 256
CSSM_LOG_SPACE_LIMIT = 1024

CSSM_OGUID = 45330
CSSM_CSS_IP = 1.1.1.1:9340
CSSM_CSS_IP = 1.1.1.2:9341
CSSM_CSS_IP = 1.1.1.3:9342
CSSM_LOG_PATH = …/log
CSSM_LOG_FILE_SIZE = 256
CSSM_LOG_SPACE_LIMIT = 1024
6.2 启动监视器
[dmdba@localhost]# ./dmcssm INI_PATH=dmcssm.ini
七、DSC主备集群的搭建
7.1停止DSC集群并备份配置文件
./dmcssm INI_PATH=dmcssm.ini
ep stop 集群组名/dsc

7.2备份DSC集群数据
1.启动dmrman工具
./dmrman use_ap=2 dcr_ini=/home/dm/dscdata/dmdcr.ini
2.备份
backup database ‘/home/dm/dscdata/dsc_config/dsc0_config/dm.ini’ full backupset ‘/dmbak1/dsc0_bakfull’;
3.把备份传输到单节点备库
scp -r dsc0_bakfull/ xxx.xxx.xxx.214:/opt/dsc0_bakfull
7.3配置单节点备库
1.初始化备库
./dminit db_name=DSCSTANDBY page_size=32 extent_size=32 charset=0 case_sensitive=0 PATH=/dmdata
2.启动dmrman
./dmrman use_ap=2
3.使用 DMDSC 库的备份集还原恢复到单节点备库
restore database ‘/dmdata/DSCSTANDBY/dm.ini’ from backupset ‘/opt/dsc0_bakfull’;
recover database ‘/dmdata/DSCSTANDBY/dm.ini’ from backupset ‘/opt/dsc0_bakfull’;
recover database ‘/dmdata/DSCSTANDBY/dm.ini’ update db_magic;
7.4配置文件修改
7.4.1配置dm.ini
1.Dsc0 的dm.ini文件内容修改如下:
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
2.Dsc1的dm.ini配置文件内容修改如下:
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息

3.Dsc2的dm.ini配置文件内容修改如下:
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
4.备库DSCSTANDBY的dm.ini配置文件内容修改如下:

DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64
7.4.2配置dmmal.ini
在DSC集群的配置文件基础上,添加单节点备库的配置
MAL_CHECK_INTERVAL = 61 #MAL 链路检测时间间隔90
MAL_CONN_FAIL_INTERVAL = 61 #判定 MAL 链路断开的时间90
[MAL_INST0]
MAL_INST_NAME = DSC0 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 1.1.1.1 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 9236 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = xxx.xxx.xxx.211 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 3567 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 4567 #实例监听守护进程 TCP 连接的端口
[MAL_INST1]
MAL_INST_NAME = DSC1
MAL_HOST = 1.1.1.2
MAL_PORT = 9236
MAL_INST_HOST = xxx.xxx.xxx.212
MAL_INST_PORT = 5236
MAL_DW_PORT = 3567
MAL_INST_DW_PORT = 4567
[MAL_INST2]
MAL_INST_NAME = DSC1
MAL_HOST = 1.1.1.3
MAL_PORT = 9236
MAL_INST_HOST = xxx.xxx.xxx.213
MAL_INST_PORT = 5236
MAL_DW_PORT = 3567
MAL_INST_DW_PORT = 4567
[MAL_INST3]
MAL_INST_NAME = DSCSTANDBY
MAL_HOST = 1.1.1.4
MAL_PORT = 9236
MAL_INST_HOST = xxx.xxx.xxx.214
MAL_INST_PORT = 5236
MAL_DW_PORT = 3567
MAL_INST_DW_PORT = 4567
所有的节点的dmmal.ini配置文件要完全一样,把dmmal.ini配置文件拷贝到DSC集群的节点2、3和单节点备库上去
7.4.3配置dmarch.ini,增加实时归档配置
1.节点DSC1的dmarch.ini文件内容
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DSCSTANDBY
2.节点DSC2的dmarch.ini文件内容
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DSCSTANDBY
3.节点DSC3的dmarch.ini文件内容
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DSCSTANDBY
4.单节点备库的dmarch.ini文件内容
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #即时归档类型
ARCH_DEST =DSC0/DSC1/DSC2

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 2048 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 409600 #单位 Mb,0 表示无限制,范围 1024~4294967294M

7.4.4配置dmwatcher.ini
1.DSC0的dmwatcher.ini配置文件内容如下
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #手动切换模式MANUAL
DW_ERROR_TIME = 66 #远程守护进程故障认定时间
INST_RECOVER_TIME = 66 # 主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 30 #本地实例故障认定时间
INST_INI = /home/dm/dscdata/dsc_config/dsc0_config/dm.ini #dm.ini 配置文件路径
DCR_INI = /home/dm/dscdata/dmdcr.ini #dmdcr.ini 配置文件路径
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_AUTO_RESTART = 0 #关闭实例的自动启动功能
INST_STARTUP_CMD = /home/dm/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
2.DSC1的dmwatcher.ini配置文件内容如下
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #手动切换模式
DW_ERROR_TIME = 66 #远程守护进程故障认定时间90
INST_RECOVER_TIME = 66 # 主库守护进程启动恢复的间隔时间90
INST_ERROR_TIME = 30 #本地实例故障认定时间90
INST_INI = /home/dm/dscdata/dsc_config/dsc1_config/dm.ini #dm.ini 配置文件路径
DCR_INI = /home/dm/dscdata/dmdcr.ini #dmdcr.ini 配置文件路径
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_AUTO_RESTART = 0 #关闭实例的自动启动功能
INST_STARTUP_CMD =
INST_SERVICE_IP_CHECK = 0
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭

3.DSC2的dmwatcher.ini配置文件内容如下
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #手动切换模式
DW_ERROR_TIME = 66 #远程守护进程故障认定时间
INST_RECOVER_TIME = 66 # 主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 30 #本地实例故障认定时间
INST_INI = /home/dm/dscdata/dsc_config/dsc2_config/dm.ini #dm.ini 配置文件路径
DCR_INI = /home/dm/dscdata/dmdcr.ini #dmdcr.ini 配置文件路径
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_AUTO_RESTART = 0 #关闭实例的自动启动功能
INST_STARTUP_CMD =
INST_SERVICE_IP_CHECK = 0
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭

4.单节点备库的dmwatcher.ini文件内容如下
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 66
INST_RECOVER_TIME = 66
INST_ERROR_TIME = 30
INST_INI = /dmdata/DSCSTANDBY/dm.ini
INST_OGUID = 453331
INST_STARTUP_CMD = /home/dm/bin/dmserver start
INST_AUTO_RESTART = 1 #对单节点,如果需要打开自动拉起功能,将此配置修改为 1 即可
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

注:参数INST_AUTO_RESTART = 0 在测试完主备集群后,更改为1
7.4.5配置dmmonitor.ini
MON_LOG_PATH = /dmlog
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 64
MON_LOG_SPACE_LIMIT = 20480
MON_DW_CONFIRM = 0 #普通监视器
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = xxx.xxx.xxx.211:5236/xxx.xxx.xxx.212:5236/xxx.xxx.xxx.213:5236
MON_DW_IP = xxx.xxx.xxx.214:5236

7.5启动所有节点数据库
1.启动dsc集群,要求:dmcss正常启动,asm启动,数据库是关闭的
若dmcss已经启动,这时候会自动拉起asm服务和数据库服务,所以只需要登录监视器中,使用命令ep stop dsc就行了。
dsc节点都以mount方式启动
./dmserver /home/dm/dscdata/dsc_config/dsc0_config/dm.ini DCR_INI=/home/dm/dscdata/dmdcr.ini mount
./dmserver /home/dm/dscdata/dsc_config/dsc1_config/dm.ini DCR_INI=/home/dm/dscdata/dmdcr.ini mount
./dmserver /home/dm/dscdata/dsc_config/dsc2_config/dm.ini DCR_INI=/home/dm/dscdata/dmdcr.ini mount

注:以mount方式启动后,在监视器中会看到DSC集群的三个节点DSC1和DSC2的状态都变为了MOUNT,这样表示mount方式启动成功
2.启动单节点备库
./dmserver /dmdata/DSCSTANDBY/dm.ini mount

7.6设置OGUID
1.使用disql连接DSC集群任意一个节点来设置OGUID
SQL> SP_SET_OGUID(453331);
2.使用disql连接单点备库来设置OGUID
SQL>SP_SET_OGUID(453331);
7.7设置主备库
1.连接DSC集群任意一个节点来修改DSC集群为primary模式
SQL>ALTER DATABASE PRIMARY;
2.连接单节点备库来修改为standby模式
SQL> ALTER DATABASE STANDBY;
7.8启动数据守护
1.启动DSC集群的是你个节点的守护进程
./dmwatcher /home/dm/dscdata/dsc_config/dsc0_config/dmwatcher.ini
./dmwatcher /home/dm/dscdata/dsc_config/dsc1_config/dmwatcher.ini
./dmwatcher /home/dm/dscdata/dsc_config/dsc2_config/dmwatcher.ini

2.启动备库的守护进程
./dmwatcher /dmdata/DSCSTANDBY/dmwatcher.ini
八、其它配置
8.1 配置dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(cn)
dm=(xxx.xxx.xxx.211:5236,xxx.xxx.xxx.212:5236,xxx.xxx.xxx.213:5236)
SWITCH_TIME=(10000)
SWITCH_INTERVAL=(1000)
loadBalance=(true)
loadBalanceFreq=(60000)
loadBalancePercent=(10)
LOGIN_ENCRYPT=0

8.2 应用连接
①文件存放:
Linux:将dm_svc.cof文件放在应用服务器/etc目录下。
Windows32位:将dm_svc.cof文件放在应用服务器system32目录下。
Windows64位:将dm_svc.cof文件放在应用服务器system32和syswow64目录下。
②配置应用连接串:
<DRIVER>dm.jdbc.driver.DmDriver</DRIVER>
<URL>jdbc:dm://DSC1:5236?comOra=true&loadBalance=true&loadBalanceFreq=60000</URL>
&:转义字符,转义为&
comOra:是否兼容ORACLE模式
loadBalance:是否负载均衡
loadBalanceFreq:负载均衡的频率60000毫秒(ms)=1分(min)

8.3 设置定时备份
机器上设置定时备份,放置路径为/dmbak,注意更改dm.ini文件中的相关路径。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服