达梦数据库DSC集群安装文档
一、 DSC安装准备工作 1
1.1. 创建安装用户 2
1.2. 配置udev存储 2
二、 DMDSC 搭建 8
三、 搭建DW容灾架构 39
修改dm.ini,数据库实例参数,打开mail通讯等参数 39
修改配置 dmmal.ini ,集群通讯文件 40
Dsc节点与备库节点都需要修改 40
修改dmarch.ini,配置归档参数 41
编辑dmwatcher.ini,配置集群守护组件,向监视器汇报 43
(1)配置 GRP1_RT_DSC01 的 dmwatcher.ini 文件 43
(2)配置 GRP1_RT_DSC02 的 dmwatcher.ini 文件 43
(3)配置 GRP1_RT_01 的 dmwatcher.ini 文件 43
编辑dmmonitor.ini,监视器,裁决数据库是不是出问题,发送信息备库接管 44
配置 dmmonitor.ini 44
编辑dmcssm.ini,dsc监视器,两节点状态,css,asm服务 44
启动数据库到mount 44
设置 OGUID 45
修改主备库模式 45
启动备用库到mount 45
启动守护进程 46
注册服务 46
四、 故障自动重连 48
12.1 配置服务名(dm_svc.conf) 48
12.2 体验故障自动重连 49
五、 动态扩展节点 50
一、DSC安装准备工作
上传安装文件到/u01
1.1.创建安装用户
为了减少对操作系统的影响,用户不应该以 root 系统用户来安装和运行 DM。用户
可以在安装之前为 DM 创建一个专用的系统用户。
- 创建安装用户组 dinstall。
groupadd dinstall - 创建安装用户 dmdba。
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba - 初始化用户密码。
passwd dmdba - 之后通过系统提示进行密码设置。
注意:创建安装系统用户完成后,安装手册之后的操作默认使用安装系统用户进行
操作
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba
Db#NYukaqPrU
1.2.配置udev存储
如果先配置udev再创建用户,需要重启,更改权限
关闭防火墙
本章将举例说明 DMDSC 的搭建过程,并介绍搭建 DMDSC 的一些注意事项。
11.1 环境准备
硬件:两台相同配置机器,32G 内存,120G 本地磁盘,2 块网卡,另有四块共享磁盘
500G/200G/2G/2G。
操作系统:RedHat Linux 64 位。
网 络 配 置 : eth0 网 卡 为 10.1.239 内 网 网 段 , 两 台 机 器 分 别 为
10.1.239.193/10.1.239.194;eth1 为 10.250.239.x 外网网段,两台机器分别为
10.250.239.193/10.250.239.194。内网网段用于 MAL 通讯。
私有网络通讯,如果跨交换机,私有网卡需要设置三层网络ip,以便于跨虚拟交换机通讯
DM 各种工具位于目录:/opt/dmdbms/bin。
配置文件位于目录:/home/data。
真实的生产环境中,建议至少配置两块共享磁盘,分别用来存放联机日志文
件和数据文件。
11.2 搭建 2 节点 DMDSC(DMASM)
如果划分了1块大磁盘,需要分区做以下操作,建议采用裸设备方式
- 在共享磁盘上裸设备划分
- 输入 fdisk /dev/sdb
- 依次输入 n p 1 回车 +100M 回车,完成第一块磁盘划分
- 依次输入 n p 2 回车 +100M 回车,完成第二块磁盘划分
- 依次输入 n p 3 回车 +2048M 回车,完成第三块磁盘划分
- 依次输入 n p 4 回车回车回车,完成第四块磁盘划分
- 编辑/etc/udev/rules.d/60-raw.rules 文件,增加以下语句:
ACTION==“add”, KERNEL==“sdb1”, RUN+=“/bin/raw /dev/raw/raw1 %N”
ACTION==“add”, KERNEL==“sdb2”, RUN+=“/bin/raw /dev/raw/raw2 %N”
ACTION==“add”, KERNEL==“sdb3”, RUN+=“/bin/raw /dev/raw/raw3 %N"DM8 共享存储集群
69
ACTION==“add”, KERNEL==“sdb4”, RUN+=”/bin/raw /dev/raw/raw4 %N"
ACTION==“add”, KERNEL==“raw[1-4]”, OWNER=“root”, GROUP=“root”, MODE=“660”
最后执行 start_udev,完成裸设备绑定
7)可以通过 blockdev --getsize64 /dev/raw/raw1 命令查看裸设备大小
执行脚本查看磁盘,生成文件后udev.sh,放到指定目录
curr=(cd"(cd "(cd"(dirname “$0”)“;pwd)
rm -f $curr/88-dm-asmdevices.rules
for i in b c d e;
do
echo “KERNEL==“sd?”,SUBSYSTEM==“block”, PROGRAM==”/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name”,RESULT==“/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i”, SYMLINK+=“asm-disk$i”,OWNER=“dmdba”, GROUP=“dinstall”,MODE=“0660"” >> $curr/88-dm-asmdevices.rules
done
运行udev.sh
[root@localhost u01]# cat 88-dm-asmdevices.rules
KERNEL==“sd?”,SUBSYSTEM==“block”, PROGRAM==“/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/name",RESULT=="36000c296c14e9e324a580f8580ce18b7",SYMLINK+="asm−diskb",OWNER="dmdba",GROUP="dinstall",MODE="0660"KERNEL=="sd?",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsiid−−whitelisted−−replace−whitespace−−device=/dev/name",RESULT=="36000c296c14e9e324a580f8580ce18b7", SYMLINK+="asm-diskb",OWNER="dmdba", GROUP="dinstall",MODE="0660"
KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/name",RESULT=="36000c296c14e9e324a580f8580ce18b7",SYMLINK+="asm−diskb",OWNER="dmdba",GROUP="dinstall",MODE="0660"KERNEL=="sd?",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsiid−−whitelisted−−replace−whitespace−−device=/dev/name”,RESULT==“36000c29791aec526008e6effcfabef6d”, SYMLINK+=“asm-diskc”,OWNER=“dmdba”, GROUP=“dinstall”,MODE=“0660”
KERNEL==“sd?”,SUBSYSTEM==“block”, PROGRAM==“/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/name",RESULT=="36000c29de7db6697eedf903be7d00d5a",SYMLINK+="asm−diskd",OWNER="dmdba",GROUP="dinstall",MODE="0660"KERNEL=="sd?",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsiid−−whitelisted−−replace−whitespace−−device=/dev/name",RESULT=="36000c29de7db6697eedf903be7d00d5a", SYMLINK+="asm-diskd",OWNER="dmdba", GROUP="dinstall",MODE="0660"
KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/name",RESULT=="36000c29de7db6697eedf903be7d00d5a",SYMLINK+="asm−diskd",OWNER="dmdba",GROUP="dinstall",MODE="0660"KERNEL=="sd?",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsiid−−whitelisted−−replace−whitespace−−device=/dev/name”,RESULT==“36000c2941bd5d0f512adbd8b6c8de9ef”, SYMLINK+=“asm-diske”,OWNER=“dmdba”, GROUP=“dinstall”,MODE=“0660”
拷贝到
cp 88-dm-asmdevices.rules /etc/udev/rules.d/88-dm-asmdevices.rules
执行
udevadm control --reload-rules
systemctl restart systemd-udev-trigger.service
Restart执行不成功需要重启
设置开机自动赋权asm
[root@localhost etc]# vim /etc/rc.local
二、DMDSC 搭建
Linux(Unix)下检查操作系统限制
在 Linux(Unix)系统中,因为 ulimit 命令的存在,会对程序使用操作系统资源进
行限制。为了使 DM 能够正常运行,建议用户检查当前安装用户的 ulimit 参数。
运行 ulimit -a 进行查询。如下图所示:
参数使用限制:
1.data seg size
data seg size (kbytes, -d)
建议用户设置为 1048576(即 1GB)以上或 unlimited(无限制),此参数过小
将导致数据库启动失败。
2. file size
file size(blocks, -f)
建议用户设置为 unlimited(无限制),此参数过小将导致数据库安装或初始化
失败。
3. open files
open files(-n)
建议用户设置为 65536 以上或 unlimited(无限制)。
4.virtual memory
virtual memory (kbytes, -v)
建议用户设置为 1048576(即 1GB)以上或 unlimited(无限制),此参数过小
将导致数据库启动失败。
如 果 用 户 需 要 为 当 前 安 装 用 户 更 改 ulimit 的 资 源 限 制 , 请 修 改 文 件
/etc/security/limits.conf
安装 DM
用户应登录或切换到安装系统用户,进行以下安装步骤的操作(注:不建议使用 root
系统用户进行安装)。
将 DM 安装光盘放入光驱,然后加载(mount)光驱。一般可以通过执行下面的命令来
加载光驱:
mount /dev/cdrom /mnt/cdrom
这里假定光驱对应的文件为/dev/cdrom 且目标路径/mnt/cdrom 已存在。
加载(mount)光驱后,在/mnt/cdrom 目录下存在 DMInstall.bin 文件,
DMInstall.bin 文 件 就 是 DM 的 安 装 程 序 。 在 运 行 安 装 程 序 前 , 需 要 赋 予
DMInstall.bin 文件执行权限。具体命令如下所示:
chmod 755 ./DMInstall.bin
挂载镜像
[root@localhost u01]# mount -o loop dm8_8.1.2.38/dm8_20210712_x86_rh6_64_ent_8.1.2.38_pack1.iso /mnt
创建软件目录
[root@localhost u01]# mkdir /u01/dmdbms
[root@localhost u01]# chown -R dmdba:dinstall /u01/dmdbms/
命令行安装
在现实中,许多 Linux(Unix)操作系统上是没有图形化界面的,为了使 DM 能够在
这些操作系统上顺利安装,DM 提供了命令行的安装方式。在终端进入到安装程序所在文
件夹,执行以下命令进行命令行安装:
./DMInstall.bin -i
安装过程如下:
步骤 1:选择安装语言
请根据系统配置选择相应语言,输入选项,回车进行下一步。如下图所示:
图 2.38 选择安装语言
如果当前操作系统中已存在 DM,将在终端弹出提示,输入选项:继续,将进行下一
步的命令行安装,否则退出命令行安装。如下图所示:
图 2.39 是否继续
注意:若操作系统中已安装 DM,重新安装前,应完全卸载已存在的 DM。并且在重新
安装前,务必备份好数据。
步骤 2:验证 Key 文件
用户可以选择是否输入 Key 文件路径。不输入则进入下一步安装,输入 Key 文件路
径,安装程序将显示 Key 文件的详细信息,如果是合法的 Key 文件且在有效期内,用户
可以继续安装。如下图所示:
输入N
步骤 3:输入时区
用户可以选择 DM 的时区信息。如下图所示:
步骤 4:选择安装类型
命令行安装与图形化安装的选择的安装类型是一样。如下图所示:
用户选择安装类型需要手动输入,默认是典型安装。如果用户选择自定义安装,将
打印全部安装组件信息。用户通过命令行窗口输入要安装的组件序号,选择多个安装组
件时需要使用空格进行间隔。输入完需要安装的组件序号后回车,将打印安装选择组件
所需要的存储空间大小。
步骤 4:选择安装路径
用户可以输入 DM 的安装路径,不输入则使用默认路径,默认值为$HOME/dmdbms(如
果安装用户为 root,则默认安装目录为/opt/dmdbms,但不建议使用 root 系统用户
来安装 DM)。 如下图所示:
步骤 5:安装小结
安装程序将打印用户之前输入的部分安装信息。如下图所示:
步骤 6:安装
注意:安装完成后,终端提示“请以 root 系统用户执行命令”。由于使用非 root
系统用户进行安装,所以部分安装步骤没有相应的系统权限,需要用户手动执行相关命
令。用户可根据提示完成相关操作。
/u01/dmdbms
步骤 7:初始化数据库与注册服务
安装结束后,还需要初始化数据库并注册相关服务才能正式运行达梦数据库,具体
可参考《DM8_dminit 使用手册》和《DM8_Linux 服务脚本使用手册》。
Linux(Unix)下 License 的安装
用户获得 License 文件 dm.key 后,首先将达梦服务器关闭,然后将 dm.key 复制
到 DM 安装目录下,DM 服务器所在的子目录中即可。这与 Windows 下 License 的安装
类似。
操作方法如下:
首先,找到 DM 服务器所在的目录,方法是以 root 用户或安装用户登录到 Linux
系统,启动终端,执行以下命令即可进入 DM 服务器程序安装的目录:
#注:假设安装目录为/opt/dmdbms
cd /opt/dmdbms/bin
然后,先将达梦服务器关闭,再将 dm.key 文件拷贝到该目录,替换原有的 dm.key
即可。
说明:该目录下原有的 dm.key 文件请事先做好备份。
创建配置文件目录
[root@localhost u01]# mkdir dmconf
[root@localhost u01]# chown -R dmdba:dinstall dmconf/
表决磁盘(Voting Disk) 【DCR_VTD_PATH】
表决磁盘记录了集群成员信息,DM 集群通过 Voting Disk 进行心跳检测,确定集群
中节点的状态,判断节点是否出现故障。当集群中出现网络故障时,使用 Voting Disk
来确定哪些 DMDSC 节点应该被踢出集群。表决磁盘还用来传递命令,在集群的不同状态(启
动、节点故障、节点重加入等)DMCSS 通过 Voting Disk 传递控制命令,通知节点执行
相应命令。Voting Disk 必须存储在集群中所有节点都可以访问到的共享存储中,并且只
支持裸设备。在一个集群环境中只能配置一个表决磁盘
DCR_VTD_PATH:表决磁盘,votingdisk路径
DCR_EP_ASM_LOAD_PATH:asm磁盘扫描路径
- 准备 dmdcr_cfg.ini 配置文件,保存到/home/data/目录下面。后续 DMASMCMD
工具执行 init 语句会使用到。 全局信息文件adm,db,css
(主节点有配置文件就行,初始化后就没用了)
[root@localhost dmconf]# vi dmdcr_cfg.ini
[root@localhost dmconf]# chown -R dmdba:dinstall dmdcr_cfg.ini
3.使用 DMASMCMD 工具初始化
[dmdba@localhost ~]$ cd /u01/dmdbms/bin
[dmdba@localhost bin]$ cat /home/dmdba/.bash_profile
Source /root/.bashrc if user has one
[ -f ~/.bashrc ] && . ~/.bashrc
export LD_LIBRARY_PATH="LDLIBRARYPATH:/u01/dmdbms/bin"exportDMHOME="/u01/dmdbms"[dmdba@localhostbin]LD_LIBRARY_PATH:/u01/dmdbms/bin" export DM_HOME="/u01/dmdbms" [dmdba@localhost bin]LDLIBRARYPATH:/u01/dmdbms/bin"exportDMHOME="/u01/dmdbms"[dmdba@localhostbin]
使用 DMASMCMD 工具初始化
[dmdba@localhost bin]$ ./dmasmcmd
create dcrdisk ‘/dev/asm-diske’ ‘dcr’
create votedisk ‘/dev/asm-diskd’ ‘vote’
create asmdisk ‘/dev/asm-diskc’ ‘LOG0’
create asmdisk ‘/dev/asm-diskb’ ‘DATA0’
init dcrdisk ‘/dev/asm-diske’ from '/u01/dmconf/dmdcr_cfg.ini’identified by ‘Sg2021Ai0720’
init votedisk ‘/dev/asm-diskd’ from ‘/u01/dmconf/dmdcr_cfg.ini’
可以启动 dmasmcmd 工具,依次输入以上命令,或者将命令写入 asmcmd.txt 文件,
执行 dmasmcmd script_file=asmcmd.txt,只需在一台机器执行即可。
用户没有指定脚本文件,则 dmasmcmd 进入交互模式运行,逐条解析、运行命令;用
户指定脚本文件(比如 asmcmd.txt),则以行为单位读取文件内容,并依次执行,执行完
成以后,自动退出 dmasmcmd 工具。脚本文件必须以“#asm script file”开头,否则
认为是无效脚本文件;脚本中其它行以“#”表示注释;脚本文件大小不超过 1M。
- 准备 DMASM 的 MAL 配置文件(命名为 dmasvrmal.ini),使用 DMASM 的所有节点都
要配置,内容完全一样,保存到/u01/dmconf 目录下 ,asm的mail通信文件
(两个节点一致)
[dmdba@localhost ~]$ cd /u01/dmconf/
[dmdba@localhost dmconf]$ ls
dmdcr_cfg.ini
[dmdba@localhost dmconf]$ vi dmasvrmal.ini
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 10.250.239.193
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 10.250.239.194
MAL_PORT = 7237
- 准备 dmdcr.ini 配置文件,保存到/home/data 目录下面
DMASM 的两个节点分别配置 dmdcr.ini,dmdcr_path 相同,dmasvrmal.ini 文
件内容也相同,dmdcr_seqo 分别为 0 和 1。
(两个节点不一致,dmdcr_seqo 分别为 0 和 1)
节点 10.0.2.101:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/home/data/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 0
先注释后4行,等数据库服务初始化完,再打开这个功能
DMDCR_PATH = /dev/asm-diske
DMDCR_MAL_PATH = /u01/dmconf/dmasvrmal.ini
DMDCR_SEQNO = 0
#ASM重启参数,命令行方式启动
#DMDCR_ASM_RESTART_INTERVAL = 30
#DMDCR_ASM_STARTUP_CMD = /opt/dmdbms/bin/DmASMSvrServiceDSC0 start
#DB重启参数,命令行方式启动
#DMDCR_DB_RESTART_INTERVAL = 60
#DMDCR_DB_STARTUP_CMD = /opt/dmdbms/bin/DmServiceDSC0 start
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /opt/dmdbms/bin/dmasmsvr
dcr_ini=/home/data/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /opt/dmdbms/bin/dmserver
path=/home/data/dsc0_config/dm.ini dcr_ini=/home/data/dmdcr.ini
节点 10.0.2.102:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/home/data/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 1
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /opt/dmdbms/bin/dmasmsvr dcr_ini=/home/data/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /opt/dmdbms/bin/dmserver
path=/home/data/dsc1_config/dm.ini dcr_ini=/home/data/dmdcr.ini
DMDCR_PATH = /dev/asm-diske
DMDCR_MAL_PATH = /u01/dmconf/dmasvrmal.ini
DMDCR_SEQNO = 1
#ASM重启参数,命令行方式启动
#DMDCR_ASM_RESTART_INTERVAL = 30
#DMDCR_ASM_STARTUP_CMD = /opt/dmdbms/bin/DmASMSvrServiceDSC0 start
#DB重启参数,命令行方式启动
#DMDCR_DB_RESTART_INTERVAL = 60
#DMDCR_DB_STARTUP_CMD = /opt/dmdbms/bin/DmServiceDSC0 start
- 启动 DMCSS、DMASM 服务程序
在 10.1.239.193、10.1.239.194 节点先后分别启动 dmcss、dmasmsvr 程序。
先启动节点1的dmcss,再启动节点2的dmcss,dmasmsvr也一样
/u01/dmdbms/bin
手动启动 dmcss 命令:
[/u01/dmdbms/bin]# ./dmcss DCR_INI=/u01/dmconf/dmdcr.ini
如果,需要重启
[dmdba@localhost bin]$ ./dmcss DCR_INI=/u01/dmconf/dmdcr.ini
dmcss startup failed:[CODE:-4546],error info:Invalid file path[/dev/asm-diske]
不能退出,新启动一个窗口,启动dmasmsvr服务
Css负责全局监控处理
手动启动 dmasmsvr 命令:
[/u01/dmdbms/bin]# ./dmasmsvr DCR_INI=/u01/dmconf/dmdcr.ini
如果 DMCSS 配置有自动拉起 dmasmsvr 的功能,可以等待 DMCSS 自动拉起 dmasmsvr
程序,不需要手动启动。
主 DMCSS 启动后屏幕打印如下:
[/u01/dmdbms/bin]# ./dmcss DCR_INI=/u01/dmconf/dmdcr.ini
dmcss V8
设置 CSS[0]为主 CSS
[ASM]: 设置 EP[0]为控制节点
[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]
- 使用 dmasmtool 工具创建 DMASM 磁盘组
选择一个节点(10.1.239.193),启动 dmasmtool 工具。
[/u01/dmdbms/bin]# ./dmasmtool DCR_INI=/u01/dmconf/dmdcr.ini
输入下列语句创建 DMASM 磁盘组:
#创建日志磁盘组
create diskgroup ‘DMLOG’ asmdisk ‘/dev/asm-diskc’
#创建数据磁盘组
create diskgroup ‘DMDATA’ asmdisk ‘/dev/asm-diskb’
8.准备 dminit.ini 配置文件,保存到/u01/dmconf 目录
(初始化用一下,后续就不用了,扩展节点会用asm上的配置文件)
case_sensitive=1 大小写是否敏感,1是敏感
charset=1 字符集utf8,0是gbk
blank_pad_mode=1 结尾会用空格填充,0是不填充
length_in_char=0 字符存储,0是字节,1是字符
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
= 256
dcr_path
= /dev/raw/raw1 #dcr 磁盘路径,目前不支持 asm,只能是裸设备
dcr_seqno
= 0
auto_overwrite
= 1
[DSC0] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path
= /home/data/dsc0_config
port_num
= 5236
mal_host
= 10.0.2.101
mal_port
= 9340
log_path
= +DMLOG/log/dsc0_log01.log
log_path
= +DMLOG/log/dsc0_log02.log
[DSC1] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path
= /home/data/dsc1_config
port_num
= 5237
mal_host
= 10.0.2.102
mal_port
= 9341
log_path
= +DMLOG/log/dsc1_log01.log
log_path
= +DMLOG/log/dsc1_log02.log
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 = 256
dcr_path = /dev/asm-diske
dcr_seqno = 0
auto_overwrite = 0
page_size=32
extent_size=32
case_sensitive=1
charset=1
blank_pad_mode=1
length_in_char=0
[DSC0]
config_path = /u01/dmconf/DSC/dsc0_config
port_num = 5236
mal_host = 10.250.239.193
mal_port = 9340
log_path = +DMLOG/log/dsc0_log01.log
log_path = +DMLOG/log/dsc0_log02.log
[DSC1]
config_path = /u01/dmconf/DSC/dsc1_config
port_num = 5236
mal_host = 10.250.239.194
mal_port = 9341
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
- 使用 dminit 初始化 DB 环境
选择一个节点(10.0.2.101),启动 dminit 工具初始化数据库。dminit 执行完成
后,会在 config_path 目录(/home/data/dsc0_config 和
/home/data/dsc1_config)下生成配置文件 dm.ini 和 dmmal.ini
./dminit control=/u01/dmconf/dminit.ini
屏幕打印如下:
[/opt/dmdbms/bin]# ./dminit control=/home/data/dminit.ini
initdb V8
db version: 0x70009
file dm.key not found, use default license!
License will expire on 2017-06-08
log file path: +DMLOG/log/dsc0_log01.log
log file path: +DMLOG/log/dsc0_log02.log
log file path: +DMLOG/log/dsc1_log01.log
log file path: +DMLOG/log/dsc1_log02.log
write to dir [+DMDATA/data/dsc].
create dm database success. 2016-06-23 15:23:13
停止临时服务前台服务
先启动css,在启动asm,在启动db
停,先停db,再停asm,最后停止css
先停普通节点
修改开机启动脚本
[root@localhost ~]# vi /etc/rc.local
[root@localhost ~]# chmod +x /etc/rc.d/rc.local
[root@localhost ~]# chmod +x /etc/rc.local
[root@localhost ~]# source /etc/rc.d/rc.local
- 启动数据库服务器
首先,将10.1.239.193机器上/home/data/dsc1_config目录和/u01/dmconf/dsc
目录拷贝到 10.1.239.194 机器相同目录下。然后,再分别启动 dmserver 即可完成 DMDSC
集群搭建。
如果 DMCSS 配置有自动拉起 dmserver 的功能,可以等待 DMCSS 自动拉起实例,不
需要手动启动。
如果需要手动启动,可参考下面的操作步骤:
10.1.239.193 机器:
./dmserver /u01/dmconf/DSC/dsc0_config/dm.ini dcr_ini=/home/data/dmdcr.ini
10.1.239.194 机器:
./dmserver /u01/dmconf/DSC/dsc1_config/dm.ini dcr_ini=/home/data/dmdcr.ini
注册后台启动脚本
[root@localhost ~]# cd /u01/dmdbms/script/root/
[root@localhost root]# ./dm_service_installer.sh -t dmcss -dcr_ini /u01/dmconf/dmdcr.ini -p sgaicss01
第二个节点修改为sgaicss02
注册asm,依赖css服务
[root@localhost root]# ./dm_service_installer.sh -t dmasmsvr -dcr_ini /u01/dmconf/dmdcr.ini -p sgaiasm01 -y DmCSSServicesgaicss01
[root@localhost root]# ./dm_service_installer.sh -t dmasmsvr -dcr_ini /u01/dmconf/dmdcr.ini -p sgaiasm02 -y DmCSSServicesgaicss02
启动服务,注册db服务在搭建dw主备后,启动注册,两个节点分别启动,所有节点css启动后再启动asm
启动css服务
[dmdba@localhost bin]$ ./DmCSSServicesgaicss01 start
[dmdba@localhost bin]$ ./DmCSSServicesgaicss02 start
启动asm服务
[dmdba@localhost bin]$ ./DmASMSvrServicesgaiasm01 start
[dmdba@localhost bin]$ ./DmASMSvrServicesgaiasm02 start
启动前台数据库服务,后续修改为后台服务
10.1.239.193 机器:
./dmserver /u01/dmconf/DSC/dsc0_config/dm.ini dcr_ini=/u01/dmconf/dmdcr.ini
10.1.239.194 机器:
./dmserver /u01/dmconf/DSC/dsc1_config/dm.ini dcr_ini=/u01/dmconf/dmdcr.ini
Dw节点数据库安装
[dmdba@localhost mnt]$ ./DMInstall.bin -i
创建实例
[dmdba@localhost bin]$ ./dminit help
case_sensitive=1 大小写是否敏感,1是敏感
charset=1 字符集utf8,0是gbk
blank_pad_mode=1 结尾会用空格填充,0是不填充
length_in_char=0 字符存储,0是字节,1是字符
[root@localhost mnt]# mkdir /u01/dmdata
[root@localhost mnt]# chown -R dmdba:dinstall /u01/dmdata
[dmdba@localhost bin]$ ./dminit path=/u01/dmdata page_size=32 extent_size=32 case_sensitive=1 charset=1 blank_pad_mode=1 length_in_char=0
DM8数据守护与读写分离集群V4.0
开放主备库归档
单机数据库归档
1.配置 dm.ini,打开 ARCH_INI 参数
ARCH_INI = 1
#打开归档配置
2.配置 dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/data/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~2147483647M
新建asm目录
[dmdba@localhost bin]$ ./dmasmtool DCR_INI=/u01/dmconf/dmdcr.ini
配置 dmarch.ini
集群远程归档
归档配置文件
ARCH_DEST =+DMDATA/data/DSC0/arch 本地归档文件路径
ARCH_INCOMING_PATH =+DMDATA/data/DSC1/arch 远程节点归档路径
[dmdba@localhost dsc0_config]$ pwd
/u01/dmconf/DSC/dsc0_config
[dmdba@localhost dsc0_config]$ vi dmarch.ini
节点1
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =+DMDATA/data/DSC0/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH =+DMDATA/data/DSC1/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
节点2
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =+DMDATA/data/DSC1/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH =+DMDATA/data/DSC0/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
配置 dm.ini
ARCH_INI = 1
#打开归档配置
前台启动数据库,产生归档文件
[dmdba@localhost bin]$ ./dmserver path=/u01/dmconf/DSC/dsc0_config/dm.ini dcr_ini=/u01/dmconf/dmdcr.ini
[dmdba@localhost bin]$ ./dmserver path=/u01/dmconf/DSC/dsc1_config/dm.ini dcr_ini=/u01/dmconf/dmdcr.ini
备份主库
[dmdba@localhost bin]$ ./disql
disql V8
用户名:
密码:
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 7.227(ms)
SQL> backup database backupset ‘/u01/backup/193bak’;
操作已执行
已用时间: 00:00:02.547. 执行号:200.
SQL> exit
[dmdba@localhost bin]$ pwd
/u01/dmdbms/bin
[dmdba@localhost bin]$
拷贝到容灾节点
[dmdba@localhost backup]$ scp -r 193bak/ 10.1.239.195:/u01/backup
The authenticity of host ‘10.1.239.195 (10.1.239.195)’ can’t be established.
ECDSA key fingerprint is SHA256:oBaocNtx/ZQC0hLRZsG/7okySrfrtRJ4ouiForFIV4M.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added ‘10.1.239.195’ (ECDSA) to the list of known hosts.
Authorized users only. All activities may be monitored and reported.
dmdba@10.1.239.195’s password:
193bak.bak 100% 155MB 108.5MB/s 00:01
193bak_1.bak 100% 7680 4.8MB/s 00:00
193bak.meta 100% 81KB 27.3MB/s 00:00
[dmdba@localhost bin]$ ./dmrman
[dmdba@localhost bin]$ ./dmrman
dmrman V8
RMAN> restore database ‘/u01/dmdata/DAMENG/dm.ini’ from backupset ‘/u01/backup/193bak’;
restore database ‘/u01/dmdata/DAMENG/dm.ini’ from backupset ‘/u01/backup/193bak’;
file dm.key not found, use default license!
[Percent:0.00%][Speed:0.00M/s][Cost:00:00:01][Remaining:00:00:00]Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:04][Remaining:00:00:00]
restore successfully.
time used: 00:00:04.301
RMAN>
RMAN> recover database ‘/u01/dmdata/DAMENG/dm.ini’ from backupset ‘/u01/backup/193bak’;
recover database ‘/u01/dmdata/DAMENG/dm.ini’ from backupset ‘/u01/backup/193bak’;
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[32438], file_lsn[32438]
EP:0 total 1 pkgs applied, percent: 50%
EP:0 total 2 pkgs applied, percent: 100%
recover successfully!
time used: 00:00:02.372
RMAN> recover database ‘/u01/dmdata/DAMENG/dm.ini’ update db_magic;
recover database ‘/u01/dmdata/DAMENG/dm.ini’ update db_magic;
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[32443], file_lsn[32443]
recover successfully!
time used: 00:00:01.047
三、搭建DW容灾架构
修改dm.ini,数据库实例参数,打开mail通讯等参数
修改dsc节点,10.1.239.193/194
在 DW_P 机器上配置主库的实例名为 GRP1_RT_01,dm.ini 参数修改如下:
#实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 16
INSTANCE_NAME = GRP1_RT_01
PORT_NUM = 32141 #数据库实例监听端口
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 次的日志发送信息
修改备库节点,10.1.239.195
在 DW_P 机器上配置主库的实例名为 GRP1_RT_01,dm.ini 参数修改如下:
#实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 16
INSTANCE_NAME = GRP1_RT_01
PORT_NUM = 32141 #数据库实例监听端口
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 次的日志发送信息
修改配置 dmmal.ini ,集群通讯文件
Dsc节点与备库节点都需要修改
配置 MAL 系统,各主备库的 dmmal.ini 配置必须完全一致,MAL_HOST 使用内部网
络 IP,MAL_PORT 与 dm.ini 中 PORT_NUM 使用不同的端口值,MAL_DW_PORT 是各实例
对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:
MAL_CHECK_INTERVAL = 5
#MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5
#判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.0.141 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141
#MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.1.131 #实例的对外服务 IP 地址
MAL_INST_PORT = 32141 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 192.168.0.142
MAL_PORT = 61142
MAL_INST_HOST = 192.168.1.132
MAL_INST_PORT = 32142
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
实际配置文件,三个节点一致,都在实例目录,dsc目录(/u01/dmconf/DSC/dsc0_config),备节点(/u01/dmdata/DAMENG)
MAL_CHECK_INTERVAL = 30 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间
[MAL_INST0]
MAL_INST_NAME = DSC0 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 10.250.239.193 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 9340 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 10.1.239.193 #实例的对外服务 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 = 10.250.239.194
MAL_PORT = 9341
MAL_INST_HOST = 10.1.239.194
MAL_INST_PORT = 5236
MAL_DW_PORT = 3568
MAL_INST_DW_PORT = 4568
[MAL_INST2]
MAL_INST_NAME = DSC_RT_01
MAL_HOST = 10.250.239.195
MAL_PORT = 9342
MAL_INST_HOST = 10.1.239.195
MAL_INST_PORT = 5236
MAL_DW_PORT = 3569
MAL_INST_DW_PORT = 4569
修改dmarch.ini,配置归档参数
修改 dmarch.ini,配置本地归档和实时归档。
除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需
要同步归档数据的目标实例名。
当前实例 GRP1_RT_01 是主库,需要向 GRP1_RT_02(实时备库)同步数据,因此实
时归档的 ARCH_DEST 配置为 GRP1_RT_02。
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
#实时归档类型
ARCH_DEST = GRP1_RT_02
#实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/data/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~2147483647M
实际配置文件
Dsc节点1
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =+DMDATA/data/DSC0/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH =+DMDATA/data/DSC1/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DSC_RT_01
Dsc节点2
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =+DMDATA/data/DSC1/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH =+DMDATA/data/DSC0/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DSC_RT_01
远程备份节点1(/u01/dmdata/DAMENG)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =/u01/dmdata/DAMENG/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DSC0/DSC1
编辑dmwatcher.ini,配置集群守护组件,向监视器汇报
依次配置每个节点实例的 dmwatcher.ini 文件,放到各自 dm.ini 中指定的
CONFIG_PATH 目录下。
另外要注意,DMDSC 集群各节点实例的自动拉起是由各自本地的 dmcss 执行的,不是
由守护进程执行,如果要打开 DMDSC 集群的自动拉起,需要再去配置 dmdcr.ini 中的自
动拉起参数,为避免 dmcss 在所有配置步骤完成之前提前将 dmserver 自动拉起,这里先
不修改 dmdcr.ini 配置,放到后面步骤中修改。
(1)配置 GRP1_RT_DSC01 的 dmwatcher.ini 文件
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #手动切换模式
DW_ERROR_TIME = 60
#远程守护进程故障认定时间
INST_RECOVER_TIME = 60
#主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 35
#本地实例故障认定时间
INST_INI = /u01/dmconf/DSC/dsc0_config/dm.ini#dm.ini 配置文件路径
DCR_INI = /u01/dmconf/dmdcr.ini #dmdcr.ini 配置文件路径 css用这个文件,自动拉起服务
INST_OGUID = 1000 #守护系统唯一 OGUID 值 局域网内不能重复
INST_STARTUP_CMD = /u01/dmdbms/bin/dmserver #命令行方式启动
INST_AUTO_RESTART = 0
#关闭实例的自动启动功能
RLOG_SEND_THRESHOLD = 0
#指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0
#指定备库重演日志的时间阈值,默认关闭
(2)配置 GRP1_RT_DSC02 的 dmwatcher.ini 文件
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 60
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 35
INST_INI = /u01/dmconf/DSC/dsc1_config/dm.ini#dm.ini 配置文件路径
DCR_INI = /u01/dmconf/dmdcr.ini #dmdcr.ini 配置文件路径 css用这个文件,自动拉起服务
INST_OGUID = 1000
INST_STARTUP_CMD = /u01/dmdbms/bin/dmserver #命令行方式启动
INST_AUTO_RESTART = 0
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
(3)配置 GRP1_RT_01 的 dmwatcher.ini 文件
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 60
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 35
INST_INI = /u01/dmdata/DAMENG/dm.ini
INST_OGUID = 1000
INST_STARTUP_CMD = /u01/dmdbms/bin/dmserver #命令行方式启动
INST_AUTO_RESTART = 0 #对单节点,如果需要打开自动拉起功能,将此配置修改为 1 即可
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
实际配置时,相关的端口配置和 OGUID 值建议不要和手册示例使用完全相同
的值,避
免多个用户在同一个环境下搭建不同的数据守护系统,出现消息混乱
或者端口冲突等问题。
编辑dmmonitor.ini,监视器,裁决数据库是不是出问题,发送信息备库接管
配置 dmmonitor.ini
编辑 dmmonitor.ini 文件,放在备用节点/u01/dmconf/目录下,因为备用资源消耗较低:
MON_LOG_PATH = /u01/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 64
MON_LOG_SPACE_LIMIT = 0
MON_DW_CONFIRM = 0
[GRP1]
MON_INST_OGUID = 1000
MON_DW_IP = 10.250.239.193:3567/10.250.239.194:3568
MON_DW_IP = 10.250.239.195:3569
编辑dmcssm.ini,dsc监视器,两节点状态,css,asm服务
配置 dmcssm.ini 文件
#和 dmdcr_cfg.ini 中的 DCR_OGUID 保持一致
CSSM_OGUID = 63635
#配置所有 CSS 的连接信息,
#和 dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致
CSSM_CSS_IP = 10.250.239.193:9341
CSSM_CSS_IP = 10.250.239.194:9343
CSSM_LOG_PATH =/u01/dmdbms/log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
启动数据库到mount
[dmdba@localhost bin]$ ./dmserver path=/u01/dmconf/DSC/dsc0_config/dm.ini dcr_ini=/u01/dmconf/dmdcr.ini mount
[dmdba@localhost bin]$ ./dmserver path=/u01/dmconf/DSC/dsc1_config/dm.ini dcr_ini=/u01/dmconf/dmdcr.ini mount
[dmdba@localhost bin]$ ./disql
disql V8
用户名:
密码:
服务器[LOCALHOST:5236]:处于普通配置状态
登录使用时间 : 5.301(ms)
SQL>
设置 OGUID
启动命令行工具 DIsql,连接 DMDSC 集群中的任意一个节点,设置 DMDSC 主库的
OGUID 值。 两个DSC节点可以同时做
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SQL>SP_SET_OGUID(1000);
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);
修改主备库模式
启动命令行工具 DIsql,连接 DMDSC 集群中的任意一个节点,修改 DMDSC 库为
Primary 模式,dsc连个节点都执行。
SQL>ALTER DATABASE PRIMARY;
如果执行报错,第1 行附近出现错误[-720]:守护进程处于活动状态,或当前配置(ALTER_MODE_STATUS)不允许该操作,执行
SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
修改,修改ALTER DATABASE PRIMARY;后,在执行
SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);
启动备用库到mount
[dmdba@localhost bin]$ ./dmserver /u01/dmdata/DAMENG/dm.ini mount
DIsql 连接单节点备库,设置备库 OGUID。
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SQL>SP_SET_OGUID(1000);
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);
DIsql 连接单节点备库,修改备库为 Standby 模式。
SQL>ALTER DATABASE STANDBY;
启动守护进程
启动 DMDSC 主库的所有守护进程:
./dmwatcher /u01/dmconf/DSC/dsc0_config/dmwatcher.ini
./dmwatcher /u01/dmconf/DSC/dsc1_config/dmwatcher.ini
启动备库的守护进程:
./dmwatcher /u01/dmdata/DAMENG/dmwatcher.ini
DW启停顺序
停monitor->停watcher->停dmserver
watcher停远端备机,停db先停主库的db
注册服务
[root@localhost ~]# cd /u01/dmdbms/script/root/
注册数据库服务
DSC节点1
[root@localhost root]# ./dm_service_installer.sh -t dmserver -dm_ini /u01/dmconf/DSC/dsc0_config/dm.ini -dcr_ini /u01/dmconf/dmdcr.ini -p sgaidsc0 -y DmASMSvrServicesgaiasm01 -m mount
DSC节点2
[root@localhost root]# ./dm_service_installer.sh -t dmserver -dm_ini /u01/dmconf/DSC/dsc1_config/dm.ini -dcr_ini /u01/dmconf/dmdcr.ini -p sgaidsc1 -y DmASMSvrServicesgaiasm02 -m mount
备份节点
[root@localhost root]# ./dm_service_installer.sh -t dmserver -dm_ini /u01/dmdata/DAMENG/dm.ini -p sgaidsc03 -m mount
注册wacther
节点1
[root@localhost root]# ./dm_service_installer.sh -t dmwatcher -watcher_ini /u01/dmconf/DSC/dsc0_config/dmwatcher.ini -p sgaiwc0
节点2
[root@localhost root]# ./dm_service_installer.sh -t dmwatcher -watcher_ini /u01/dmconf/DSC/dsc1_config/dmwatcher.ini -p sgaiwc1
备用节点
[root@localhost root]# ./dm_service_installer.sh -t dmwatcher -watcher_ini /u01/dmdata/DAMENG/dmwatcher.ini -p sgaiwc2
Dmdcr修改
节点1
DMDCR_PATH = /dev/asm-diske
DMDCR_MAL_PATH = /u01/dmconf/dmasvrmal.ini
DMDCR_SEQNO = 0
#ASM重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 30
DMDCR_ASM_STARTUP_CMD = /u01/dmdbms/bin/DmASMSvrServicesgaiasm01 start
#DB重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 60
DMDCR_DB_STARTUP_CMD = /u01/dmdbms/bin/DmServicesgaidsc0 start
节点2
DMDCR_PATH = /dev/asm-diske
DMDCR_MAL_PATH = /u01/dmconf/dmasvrmal.ini
DMDCR_SEQNO = 1
#ASM重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 30
DMDCR_ASM_STARTUP_CMD = /u01/dmdbms/bin/DmASMSvrServicesgaiasm02 start
#DB重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 60
DMDCR_DB_STARTUP_CMD = /u01/dmdbms/bin/DmServicesgaidsc1 start
注册dmmonitor
服务只在备库上
[root@localhost root]# ./dm_service_installer.sh -t dmmonitor -monitor_ini /u01/dmconf/dmmonitor.ini -p sgaimon
注册dmcssm
[root@localhost root]# ./dm_service_installer.sh -t dmcssm -cssm_ini /u01/dmconf/dmcssm.ini -p sgaicssm
重启asm和css服务
[dmdba@localhost bin]$ ./DmASMSvrServicesgaiasm01 stop
Stopping DmASMSvrServicesgaiasm01: [ OK ]
[dmdba@localhost bin]$ ./DmCSSServicesgaicss01 stop
Stopping DmCSSServicesgaicss01: [ OK ]
[dmdba@localhost bin]$
[dmdba@localhost bin]$ ./DmCSSServicesgaicss01 start
Starting DmCSSServicesgaicss01: [ OK ]
[dmdba@localhost bin]$ ./DmASMSvrServicesgaiasm01 start
Starting DmASMSvrServicesgaiasm01: [ OK ]
[dmdba@localhost bin]$ ./DmServicesgaidsc0 start
DmServicesgaidsc0 (pid 11202) is running.
[dmdba@localhost bin]$ ./DmWatcherServicesgaiwc0 start
[dmdba@localhost bin]$ ./DmWatcherServicesgaiwc1 start
备份节点
[dmdba@localhost bin]$ ./DmServicesgaidsc03 start
[dmdba@localhost bin]$ ./DmWatcherServicesgaiwc2 start
[dmdba@localhost bin]$ ./DmMonitorServicesgaimon start
[dmdba@localhost bin]$ ./DmCSSMonitorServicesgaicssm start
四、故障自动重连
当用户连接到 DM 共享存储集群时,实际上是连接到集群中的一个实例,用户的所有增
删改查操作都是由该实例完成的。但是如果该实例出现故障,那么用户连接会被转移到其他
正常实例。而这种转移对用户是透明的,用户的增删改查继续返回正确结果,感觉不到异常。
这种功能就是故障自动重连。
实现故障自动重连的前提条件是在配置 DM 共享存储集群的时候,必须配置连接服务名。
12.1 配置服务名(dm_svc.conf)
配置 DMDSC 集群,一般要求配置连接服务名,以实现故障自动重连。连接服务名可以
在 DM 提供的 JDBC、DPI 等接口中使用,连接数据库时指定连接服务名,接口会随机选择
一个 IP 进行连接,如果连接不成功或者服务器状态不正确,则顺序获取下一个 IP 进行连
接,直至连接成功或者遍历了所有 IP。
可以通过编辑 dm_svc.conf 文件,配置连接服务名。dm_svc.conf 配置文件在 DM
安装时生成,Windows 平台下位于%SystemRoot%\system32 目录,Linux 平台下位于
/etc 目录。
连接服务名格式:
SERVERNAME=(IP[:PORT],IP[:PORT],…)
dm_svc.conf 文件常用配置项目说明:
SERVERNAME
连接服务名,用户通过连接服务名访问数据库。
IP
数据库所在的 IP 地址,如果是 IPv6 地址,为了区分端口,需要用[]封闭 IP 地址。
PORT
数据库使用的 TCP 连接端口,可选配置,不配置则使用连接上指定的端口。
SWITCH_TIME
检测到数据库实例故障时,接口在服务器之间切换的次数;超过设置次数没有连接到有
效数据库时,断开连接并报错。有效值范围 1~9223372036854775807,默认值为 3。
SWITCH_INTERVAL83
表示在 服务器之间切换的时间间隔,单位为毫秒,有效值范围
1~9223372036854775807,默认值为 200。
例如,配置一个名为 dmdsc_svc 的连接服务名,使用 dmdsc_svc 连接 DMDSC 集群
中的数据库,即可实现故障自动重连。
dmdsc_svc=(10.0.2.101:5236,10.0.2.102:5237)
SWITCH_TIME=(10000)
SWITCH_INTERVAL=(1000)
关于 dm_svc.conf 的详细设置,请参考《 DM8 系统管理员手册》2.1.1.4
dm_svc.conf 章节。
12.2 体验故障自动重连
基于 11.2 节成功架构的共享存储集群系统,下面用一个简单的例子来体验故障自动重
连。
- 连接到 dsc
DIsql sysdba/sysdba@dmdsc_svc
2.确认当前用户已经连接到的节点实例
SQL> select name from v$instance;
行号 NAME
1 DSC0
用户当前连接到节点 0 上 DSC0 实例。不要退出这个会话,第 4 步还是在这个会话中
执行。
3.关闭 DSC0 实例,或者将节点 0 所在的这台主机关机。
4.等待几秒后,再次执行这条语句,还在会话 1 中执行,服务器会返回提示已切换当
前连接。
SQL> select name from vinstance;[−70065]:连接异常,切换当前连接成功.5.在会话1中再次执行这条语句,可执行成功,可以看到会话已切换到DSC1实例。SQL>selectnamefromvinstance;
[-70065]:连接异常,切换当前连接成功.
5.在会话 1 中再次执行这条语句,可执行成功,可以看到会话已切换到 DSC1 实例。
SQL> select name from vinstance;[−70065]:连接异常,切换当前连接成功.5.在会话1中再次执行这条语句,可执行成功,可以看到会话已切换到DSC1实例。SQL>selectnamefromvinstance;行号 NAME
1 DSC1
8485
五、动态扩展节点
DMDSC 集群支持动态扩展节点,每次扩展可以在原有基础上增加一个节点。
动态扩展节点要求当前 DMDSC 集群的所有节点都为 OK 状态,所有 dmserver 实例都
处于 OPEN 状态,且可以正常访问。
扩展节点过程中,不应该有修改数据库状态或模式的操作。
13.1 动态扩展节点流程
基于 11.2 节成功架构的共享存储集群系统,下面介绍如何动态扩展一个节点。
已搭建好的 DMDSC 集群实例名为 DSC0、DSC1,在此基础上扩展一个节点 DSC2。
13.1.1 环境说明
新增节点环境为:
操作系统:RedHat Linux 64 位。
网络配置:eth0 网卡为 10.0.2.x 内网网段,该机器为 10.0.2.103;eth1 为
192.168.56.x 外网网段,该机器为 192.168.56.103。内网网段用于 MAL 通讯。
DM 各种工具位于目录:/opt/dmdbms/bin。
配置文件位于目录:/home/data。
表 13.1 配置环境说明
实例名
IP 地址
操作系统
备注
DSC0
192.168.56.101
10.0.2.101
RedHat Linux 64 位 192.168.56.101 外部服务 IP;
10.0.2.101 内部通信 IP
DSC1
192.168.56.102
10.0.2.102
RedHat Linux 64 位 192.168.56.102 外部服务 IP;
10.0.2.102 内部通信 IP
DSC2
192.168.56.103
10.0.2.103
RedHat Linux 64 位 192.168.56.103 外部服务 IP;
10.0.2.103 内部通信 IP86
13.1.2 操作流程
- 在 10.0.2.101 机器上使用 DMASMCMD 工具 export 出备份 dmdcr_cfg_bak.ini
[/opt/dmdbms/bin]# ./dmasmcmd
Asm> export dcrdisk ‘/dev/raw/raw1’ to ‘/home/data/dmdcr_cfg_bak.ini’ - 为新增节点准备日志文件
- 使用 DIsql 登录任意一个节点执行添加日志文件操作:
至少两个日志文件,路径必须是 ASM 文件格式,大小可以参考其他两个活动节点。
SQL>alter database add node logfile ‘+DMLOG/log/DSC2_log01.log’ size 256,
‘+DMLOG/log/DSC2_log02.log’ size 256;
2)使用 dmctlcvt 工具将 dm.ctl 转换为文本文件 dmctl.txt,查看 dmctl.txt,
新增节点的日志文件信息已经添加进 dm.ctl。
./dmctlcvt TYPE=1 SRC=+DMDATA/data/dsc/dm.ctl DEST=/home/data/dmctl.txt
DCR_INI=/home/data/dmdcr.ini
3)使用 dmasmtool 工具登录 ASM 文件系统,也可以看到新增的节点日志文件
[/opt/dmdbms/bin]# ./dmasmtool DCR_INI=/home/data/dmdcr.ini
ASM>ls +DMLOG/log
- 为新增节点准备 config_path
将 10.0.2.101 机器/home/data/dsc0_config 目录拷贝到 10.0.2.103 机器相
同目录下,修改名字为/home/data/dsc2_config。
修改 dsc2_config 文件夹下的配置文件:
- 修改 dm.ini
CONFIG_PATH
= /home/data/dsc2_config
instance_name = DSC2 - 如果打开了归档参数,修改 dmarch.ini
- 新建 dmdcr.ini 配置文件,保存到节点 10.0.2.103 的/home/data/目录下面
注意设置 dmdcr_seqo 为 2,修改 dm.ini 路径。
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/home/data/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 287
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /opt/dmdbms/bin/dmasmsvr dcr_ini=/home/data/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /opt/dmdbms/bin/dmserver
path=/home/data/dsc2_config/dm.ini dcr_ini=/home/data/dmdcr.ini - 修改当前环境的 MAL 配置文件
直接修改当前环境的 dmasvrmal.ini 文件,添加新增节点信息,使用 DMASM 的所有
节点都要配置,内容完全一样,并且将新增信息后的 dmasvrmal.ini 文件拷贝到节点
10.0.2.103 的/home/data 目录下。
[MAL_INST3]
MAL_INST_NAME = ASM2
MAL_HOST
= 10.0.2.103
MAL_PORT
= 7238
直接修改 dmserver 三个实例的 dmmal.ini,添加新增节点信息,所有节点都要配置
相同内容,保存到各自的 dsc_config 目录下。
[mal_inst2]
mal_inst_name
= DSC2
mal_host
= 10.0.2.103
mal_port
= 9342
后续实例会重新读 MAL 配置文件,更新内存信息。 - 修改 dmdcr_cfg_bak.ini,添加新增节点信息,CSS/ASMSVR/DB 都要配置
所有组信息修改:
DCR_GRP_N_EP
=
3
DCR_GRP_EP_ARR =
{0,1,2}
每个组增加一个节点信息,注意 DCR_EP_SHM_KEY、端口号不能冲突;各组信息要放
在各自的后面,即[GRP_CSS]中 CSS2 放在 CSS1 后面,[GRP_ASM]中 ASM2 放在 ASM1
后面,DSC2 放在 DSC1
[GRP_CSS]
DCR_EP_NAME =
CSS2
DCR_EP_HOST
= 10.0.2.103
DCR_EP_PORT
= 9500
[GRP_ASM]
DCR_EP_NAME = ASM2
DCR_EP_SHM_KEY = 93362
DCR_EP_SHM_SIZE = 20
DCR_EP_HOST = 10.0.2.103
DCR_EP_PORT = 9501
DCR_EP_ASM_LOAD_PATH
/dev/raw
[GRP_DSC]
DCR_EP_NAME = DSC2
DCR_EP_SEQNO = 2
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9502
7. 使用 DMASMCMD 工具将新增节点信息写回磁盘,新增节点作为 error 节点
[/opt/dmdbms/bin]# ./dmasmcmd
Asm> extend dcrdisk ‘/dev/raw/raw1’ from ‘/home/data/dmdcr_cfg_bak.ini’
8. 在 dmcssm 控制台执行扩展节点命令
extend node
程序会通知所有实例(CSS/ASMSVR/dmserver)更新信息,在 CSS 控制台执行 SHOW
命令,能看到新增节点信息, ASMSVR/dmserver 是 error 节点, 程 序 会 通 知
ASMSVR/dmserver 更新 MAL 信息。
9. 启动新的 DMCSS、DMASM 服务程序
在 10.0.2.103 节点启动 dmcss、dmasmsvr 程序。
手动启动新的 dmcss,dcr_ini 指向新的 dmdcr.ini 文件:
[/opt/dmdbms/bin]# ./dmcss DCR_INI=/home/data/dmdcr.ini89
手动启动新的 dmasmsvr,dcr_ini 指向新的 dmdcr.ini 文件,asmsvr 启动故障
重加入流程:
[/opt/dmdbms/bin]# ./dmasmsvr DCR_INI=/home/data/dmdcr.ini
如果 DMCSS 配置有自动拉起 dmasmsvr 的功能,可以等待 DMCSS 自动拉起 dmasmsvr
程序,不需要手动启动。
10. 启动新的数据库服务器
如果 DMCSS 配置有自动拉起 dmserver 的功能,可以等待 DMCSS 自动拉起实例,不
需要手动启动。
如果需要手动启动,可参考下面的操作步骤:
10.0.2.103 机器:
./dmserver /home/data/dsc2_config/dm.ini dcr_ini=/home/data/dmdcr.ini
11. 配置 dmcssm.ini
如果配置有监视器,则直接修改 dmcssm.ini,增加新扩节点 DMCSS 的 IP:PORT 配
置项 CSSM_CSS_IP,并重启 dmcssm。
如果没有配置,可参考下面的操作步骤:
以搭建的 3 节点 DSC 环境为基础,配置对应的监视器,监视器放在第三方机器上,为
Linux 操作系统,dmcssm.ini 配置文件路径为/home/data/cssm/,可根据实际情况
调整配置环境及路径。
- 配置 dmcssm.ini 文件
#和 dmdcr_cfg.ini 中的 DCR_OGUID 保持一致
CSSM_OGUID =
63635
#配置所有 CSS 的连接信息,
#和 dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致
CSSM_CSS_IP = 10.0.2.101:9341
CSSM_CSS_IP = 10.0.2.102:9343
CSSM_CSS_IP = 10.0.2.103:9500
CSSM_LOG_PATH =
/home/data/cssm #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE
=
32
#每个日志文件最大 32M90
CSSM_LOG_SPACE_LIMIT
=
0
#不限定日志文件总占用空间 - 启动 dmcssm 监视器
./dmcssm INI_PATH=/home/data/cssm/dmcssm.ini
如果由于配置文件错误,动态扩展节点失败,只能停掉所有实例,重新
init dcr 磁盘,不影响 dmserver 数据。
13.1.3 注意事项
- 扩展节点前由用户保证所有 dmcss/dmasmsvr/dmserver 节点都是 OK 的,且都是活
动的; - 每次扩展节点只能扩一个节点,扩展完成后可以再继续扩展节点;
- 扩展节点的过程中不能出现修改实例状态或模式的操作;
- 扩展节点的过程中,如果发生 dmcss/dmasmsvr/dmserver 实例故障,会导致扩展
失败; - 扩展过程中操作失误(比如未修改 dmmal.ini、asmsvrmal.ini,未增加日志文件),
会导致扩展失败; - 执行完 extend node 命令,用户需要查看 log 文件,确认扩展操作是否成功;
- 扩展失败可能会导致集群环境异常,需要退出所有 dmcss/dmasmsvr/dmserver,重
新 init dcr 磁盘。14 监控 DMDSC
DMDSC 集 群 的 运 行 情 况 可 以 通 过 DMCSSM 监视器 ( Dameng Cluster
Synchronization Services Monitor,DMCSSM)进行查看,也可以查询 DMDSC 相
关的动态视图获取更详细的信息。DMCSSM 监视器支持一些控制命令,可以用来启动、关闭
DMDSC 集群,还可以进行手动控制节点故障处理和节点重加入。
14.1 DMCSSM 监视器
14.1.1 功能说明 - 监控集群状态
DMCSS 每秒会发送集群中所有节点的状态信息、当前连接到 DMCSS 的监视器信息以及
DCR 的配置信息到活动的监视器上,监视器提供对应的 show 命令用于查看各类信息。 - 打开/关闭指定组的自动拉起
DMCSSM 提供 SET AUTO RESTART ON/SET AUTO RESTART OFF 命令,通知 DMCSS
打开或关闭对指定组的自动拉起功能,此功能和 DMCSS 的监控打开或关闭没有关系。 - 强制 OPEN 指定组
DMCSSM 提供 OPEN FORCE 命令,在启动 ASM 或 DB 组时,如果组中某个节点发生硬
件故障等原因导致一直无法启动,可执行此命令通知 DMCSS 将 ASM 组或 DB 组强制 OPEN,
不再等待故障节点启动成功。 - 启动/退出集群
DMCSSM 提供 EP STARTUP/EP STOP 命令,可以通知 DMCSS 启动/退出指定的 ASM
或 DB 组。 - 集群故障处理
DMCSSM 提供 EP BREAK/EP RECOVER 命令,在主 CSS 的监控功能被关闭的情况下,
可以通过执行这些命令手动进行故障处理和故障恢复。另外在某些特殊场景下还可通过 EP
HALT 命令强制退出指定节点,具体可参考 14.1.4 命令说明。
9192
14.1.2 配置文件
DMCSSM 的配置文件名称为 dmcssm.ini,所支持的配置项说明如下。
表 14.1 dmcssm.ini 配置项
配置项
配置含义
CSSM_OGUID
用于和 DMCSS 通信校验使用,和 dmdcr_cfg.ini 中的
DCR_OGUID 值保持一致
CSSM_CSS_IP
集群中所有 DMCSS 所在机器的 IP 地址,以及 DMCSS 的监听端
口,配置格式为“IP:PORT”的形式,其中 IP 和 PORT 分别对应
dmdcr_cfg.ini 中 DMCSS 节点的 DCR_EP_HOST 和
DCR_EP_PORT
CSSM_LOG_PATH
日志文件路径,日志文件命名方式为 “dmcssm_年月日时分
秒.log”,例如“dmcssm_20160614131123.log”。
其他请参考附加说明
CSSM_LOG_FILE_SIZE
单个日志文件大小,范围 16~2048,单位为 M,默认值为 64M,
达到最大值后,会自动生成并切换到新的日志文件中
CSSM_LOG_SPACE_LIMIT
日志总空间大小,取值 0 或者 256~4096,单位为 M,默认值为
0,表示没有空间限制,如果达到设定的总空间限制,会自动删
除创建时间最早的日志文件
CSSM_MESSAGE_CHECK
是否对 CSSM 通信消息启用通信体校验(只有当消息的发送端和
接收端都配置为 1 才启用通信体校验)。0:不启用;1:启用。
默认为 1
CSSM_LOG_PATH 配置说明:
如果 dmcssm.ini 中配置有 CSSM_LOG_PATH 路径,则将 CSSM_LOG_PATH 作为日
志文件路径,如果没有配置,则将 dmcssm.ini 配置文件所在的路径作为日志文件路径。93
在有日志写入操作时,如果日志路径下没有日志文件,会自动创建一个新的
日志文件,如果已经有日志文件,则根据设定的单个日志文件大小
(CSSM_LOG_FILE_SIZE)决定继续写入已有的日志文件或者创建新的日志
文件写入。
创建新的日志文件时,根据设定的日志总空间大小
(CSSM_LOG_SPACE_LIMIT)决定是否删除创建时间最早的日志文件。
14.1.3 配置步骤
同一个 DMDSC 集群中,允许最多同时启动 10 个监视器,建议监视器放在独立的第三
方机器上,避免由于节点间网络不稳定等原因导致监视器误判节点故障。
下面举例说明监视器的配置步骤,以 11.2 小节搭建的 2 节点 DSC 环境为基础,配置
对应的监视器,监视器放在第三方机器上,为 windows 操作系统,dmcssm.ini 配置文件
路径为 D:\cssm,可根据实际情况调整配置环境及路径。 - 配置 dmcssm.ini 文件
#和 dmdcr_cfg.ini 中的 DCR_OGUID 保持一致
CSSM_OGUID = 63635
#配置所有 CSS 的连接信息,
#和 dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致
CSSM_CSS_IP = 10.0.2.101:9341
CSSM_CSS_IP = 10.0.2.102:9343
CSSM_LOG_PATH =D:\cssm\log
#监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 32
#每个日志文件最大 32M
CSSM_LOG_SPACE_LIMIT = 0
#不限定日志文件总占用空间 - 启动 dmcssm 监视器
dmcssm.exe INI_PATH=D:\cssm\dmcssm.ini94
14.1.4 命令说明
监视器提供一系列命令,支持集群的状态信息查看以及节点的故障处理,可输入 help
命令,查看命令使用说明。
表 14.2 监视器命令
命令名称
含义
help
显示帮助信息
show [group_name]
显示指定的组信息,如果没有指定 group_name,则
显示所有组信息
show config
显示 dmdcr_cfg.ini 的配置信息
show monitor
显示当前连接到主 CSS 的所有监视器信息
set group_name auto restart on 打开指定组的自动拉起功能(只修改 dmcss 内存值)
set group_name auto restart off 关闭指定组的自动拉起功能(只修改 dmcss 内存值)
open force group_name
强制 open 指定的 ASM 或 DB 组
ep startup group_name
启动指定的 ASM 或 DB 组
ep stop group_name
退出指定的 ASM 或 DB 组
ep halt group_name.ep_name
强制退出指定组中的指定节点
extend node
联机扩展节点
ep crash group_name.ep_name
手动指定节点故障
check crash over group_name
检查指定组故障处理是否真正结束
exit
退出监视器
命令使用说明: - help
显示帮助信息。 - show [group_name]
显示指定的组信息,如果没有指定 group_name,则显示所有组信息。
返回的组信息优先从主 CSS 获取,如果主 CSS 故障或尚未选出,则任选一个从 CSS 返
回组信息。 - show config显示 dmdcr_cfg.ini 的配置信息,对于 DB 类型的节点,会比 CSS/ASM 节点多一项
DCR_EP_SEQNO 的显示值,如果原本的 ini 文件中没有手动配置,则显示的是自动分配的
序列值。
返回的配置信息优先从主 CSS 获取,如果主 CSS 故障或尚未选出,则任选一个从 CSS
返回信息。 - show monitor
显示当前连接到主 CSS 的所有监视器信息,如果主 CSS 故障或尚未选出,则任选一个
从 CSS 显示连接信息。
返回的信息中,第一行为当前执行命令的监视器的连接信息。
在数据守护环境中,守护监视器 dmmonitor 的部分命令(启动/停止/强杀实例)最
终是由 dmcss 执行的,守护进程 dmwatcher 在命令执行中充当了 dmcssm 的角色,守护
进程通知 dmcss 执行完成后,再将执行结果返回给守护监视器。因此 dmcss 上会有
dmwatcher 的连接信息,show monitor 命令也会显示 dmwatcher 的连接信息,可以根
据 from_name 字段值进行区分。 - set group_name auto restart on
打开指定组的自动拉起功能。
可借助 show css 命令查看每个节点的自动拉起标记,每个 css 只能控制和自己的
dmdcr.ini 中配置的 DMDCR_SEQNO 相同节点的自动拉起。 - set group_name auto restart off
关闭指定组的自动拉起功能。
可借助 show css 命令查看每个节点的自动拉起标记,每个 css 只能控制和自己的
dmdcr.ini 中配置的 DMDCR_SEQNO 相同节点的自动拉起。 - open force group_name
在启动 ASM 或 DB 组时,如果某个节点故障一直无法启动,可借助此命令将 ASM 或 DB
组强制 OPEN。
此命令需要发送到主 CSS 执行,并且主 CSS 的监控需要处于打开状态,如果主 CSS 故
障或尚未选出,则命令执行失败。 - ep startup group_name
通知 CSS 启动指定的 ASM 或 DB 组,如果 CSS 已经打开了指定组的自动拉起功能,则
命令不允许执行,需要等待 CSS 自动检测故障并执行拉起操作。
9596
每个 CSS 只负责拉起和自己的 dmdcr.ini 中配置的 DMDCR_SEQNO 相同的 ASM 或 DB
节点,因此需要所有 CSS 都处于活动状态,否则只通知当前活动的 CSS 自动拉起相对应的
节点。
只有在 ASM 组正常启动到 OPEN 状态,并且所有活动的 ASM 节点都处于 OPEN
状态时,才允许启动 DB 组,否则执行 DB 组的启动命令会报错,CSS 自动拉
起 DB 组时也需要满足此条件。
在命令执行前,如果 CSS 对指定组的自动拉起功能是关闭的,在节点拉起成
功后,会打开对指定组的自动拉起功能。 - ep stop group_name
退出指定的 ASM 或 DB 组,如果主 CSS 故障或尚未选出,则命令执行失败。
在退出 ASM 组时,需要保证 DB 组已经退出,否则会报错处理。
在命令执行前,如果 CSS 对指定组的自动拉起功能是打开的,则会先通知 CSS
关闭对指定组的自动拉起功能,再通知指定组退出,避免命令执行成功后节
点再次被自动拉起。
ep halt group_name.ep_name
强制退出指定组的指定 EP。适用于下述场景:
一某个 ASM 或 DB 节点故障,CSS 的心跳容错时间 DCR_GRP_DSKCHK_CNT 配置
值很大,在容错时间内,CSS 不会调整故障节点的 active 标记,一直是 TRUE,CSS 认为
故障 EP 仍然处于活动状态,不会自动执行故障处理,并且不允许手动执行故障处理。
另外,执行 EP STARTUP 或 EP STOP 命令时,会误认为故障 EP 仍然处于活动状态,
导致执行结果与预期不符。此时可以通过执行 EP HALT 命令,通知 CSS 再次 HALT 故障
EP,确认 EP 已经被 HALT 后,CSS 会及时调整 active 标记为 FALSE,在此之后,对自
动/手动故障处理,EP STARTUP/EP STOP 命令都可以正常执行。
二需要强制 HALT 某个正在运行的 ASM 或 DB 节点,也可以通过此命令完成。
11.
extend node
DMDSC 集群联机扩展节点时使用。
程序会通知所有实例(CSS/ASMSVR/dmserver)更新 dcr 信息。
使用 show 命令能看到新增节点信息,新增 ASMSVR/dmserver 为 ERROR 状态。
12.
ep crash group_name.ep_name97
手动指定节点故障,节点故障后,css 只有在 DCR_GRP_DSKCHK_CNT 配置的时间过
后才会判定实例故障,开始故障处理流程。用户如果明确知道实例已经故障,可以收到执行
此命令,CSS 可以立即开始故障处理流程。
13.
check crash over group_name
DB 集群环境故障处理后,需要满足一定条件(控制节点重做故障节点日志产生的数据
页修改都已经刷盘完成),才允许故障节点重新加回集群环境。此命令用来显示 DB 集群环
境故障处理是否真正结束。
14.
exit
退出监视器。
14.2 动态视图
DMDSC 集群提供一系列动态视图来查看当前的系统运行信息。部分视图是全局的,任
意节点登录查询的结果都是相同的,部分视图仅显示登录节点的信息。
14.2.1 VDSCEPINFO显示实例信息,登录任意节点查询得到的结果一致。序号列数据类型说明1EPNAMEVARCHAR(128)实例名称2EPSEQNOINTEGERDSC节点序号3EPGUIDBIGINTEP唯一标识码4EPTIMESTAMPBIGINTEP时间戳5EPMODEVARCHAR(32)EP模式,CONTROLNODE或NORMALNODE6EPSTATUSVARCHAR(32)EP状态,OK或ERROR14.2.2VDSC_EP_INFO
显示实例信息,登录任意节点查询得到的结果一致。
序号
列
数据类型
说明
1
EP_NAME
VARCHAR(128)
实例名称
2
EP_SEQNO
INTEGER
DSC 节点序号
3
EP_GUID
BIGINT
EP 唯一标识码
4
EP_TIMESTAMP BIGINT
EP 时间戳
5
EP_MODE
VARCHAR(32)
EP 模式,CONTROL NODE 或 NORMAL NODE
6
EP_STATUS
VARCHAR(32)
EP 状态,OK 或 ERROR
14.2.2 VDSCEPINFO显示实例信息,登录任意节点查询得到的结果一致。序号列数据类型说明1EPNAMEVARCHAR(128)实例名称2EPSEQNOINTEGERDSC节点序号3EPGUIDBIGINTEP唯一标识码4EPTIMESTAMPBIGINTEP时间戳5EPMODEVARCHAR(32)EP模式,CONTROLNODE或NORMALNODE6EPSTATUSVARCHAR(32)EP状态,OK或ERROR14.2.2VDSC_GBS_POOL
显示 GBS 控制结构的信息,仅显示登录节点的信息。
序号
列
数据类型
说明
1
N_CTL
INTEGER
GBS 控制块总数98
2
N_FREE_CTL
INTEGER
空闲的 GBS 控制块数目
3
N_SUB_POOL
INTEGER
GBS_POOL 个数
14.2.3 VDSCGBSPOOLSDETAIL显示分片的GBSPOOL详细信息,仅显示登录节点的信息。序号列数据类型说明1POOLIDINTEGERGBSPOOL编号2NUSEDCTLINTEGER正在使用的GBS控制块数目3NREQUESTINTEGER正在等待GBS控制块的请求数目4NFREEREQUESTINTEGER空闲的GBS请求控制块数目14.2.4VDSC_GBS_POOLS_DETAIL
显示分片的 GBS_POOL 详细信息,仅显示登录节点的信息。
序号
列
数据类型
说明
1
POOL_ID
INTEGER
GBS_POOL 编号
2
N_USED_CTL
INTEGER
正在使用的 GBS 控制块数目
3
N_REQUEST
INTEGER
正在等待 GBS 控制块的请求数目
4
N_FREE_REQUEST INTEGER
空闲的 GBS 请求控制块数目
14.2.4 VDSCGBSPOOLSDETAIL显示分片的GBSPOOL详细信息,仅显示登录节点的信息。序号列数据类型说明1POOLIDINTEGERGBSPOOL编号2NUSEDCTLINTEGER正在使用的GBS控制块数目3NREQUESTINTEGER正在等待GBS控制块的请求数目4NFREEREQUESTINTEGER空闲的GBS请求控制块数目14.2.4VDSC_GBS_CTL
显示 GBS 控制块信息。多个 pool,依次扫描,仅显示登录节点的信息。
序号
列
数据类型
说明
1
POOL_ID
INTEGER
GBS_POOL 编号
2
TS_ID
INTEGER
表空间号
3
FILE_ID
INTEGER
文件号
4
PAGE_NO
INTEGER
页号
5
ACCESS_MAP
INTEGER
曾经访问此数据页的 EP
6
FRESH_EP
INTEGER
最新数据所在 EP
7
FRESH_LSN
BIGINT
最新修改对应的 LSN 值
8
N_REPLACED
INTEGER
控制块被替换次数
9
N_REVOKED
INTEGER
权限被回收次数
10
N_OWNER
INTEGER
拥有权限的 EP 数
11
N_REQUEST
INTEGER
请求授权的 EP 数
12
N_REVOKING
INTEGER
正在回收权限的 EP 数
13
N_REVOKE_X_ONLY INTEGER
页的优化次数99
14.2.5 VKaTeX parse error: Double subscript at position 694: …
17
N_REVOKE_X_̲ONLY INTEGER
页…DSC_GBS_CTL_LRU_FIRST
显示 GBS 控制块 LRU 链表首页信息。多个 pool,依次扫描,仅显示登录节点的信息。
序号
列
数据类型
说明
1
POOL_ID
INTEGER
GBS_POOL 编号
2
TS_ID
INTEGER
表空间号100
3
FILE_ID
INTEGER
文件号
4
PAGE_NO
INTEGER
页号
5
ACCESS_MAP
INTEGER
曾经访问此数据页的 EP
6
FRESH_EP
INTEGER
最新数据所在 EP
7
FRESH_LSN
BIGINT
最新修改对应的 LSN 值
8
N_REPLACED
INTEGER
控制块被替换次数
9
N_REVOKED
INTEGER
权限被回收次数
10
N_OWNER
INTEGER
拥有权限的 EP 数
11
N_REQUEST
INTEGER
请求授权的 EP 数
12
N_REVOKING
INTEGER
正在回收权限的 EP 数
13
N_REVOKE_X_ONLY INTEGER
页的优化次数
14.2.7 VKaTeX parse error: Double subscript at position 718: …
17
N_REVOKE_X_̲ONLY INTEGER
页…DSC_GBS_CTL_LRU_LAST
显示 GBS 控制块 LRU 链表尾页信息。多个 pool,依次扫描,仅显示登录节点的信息。
序号
列
数据类型
说明
1
POOL_ID
INTEGER
GBS_POOL 编号
2
TS_ID
INTEGER
表空间号
3
FILE_ID
INTEGER
文件号
4
PAGE_NO
INTEGER
页号
5
ACCESS_MAP
INTEGER
曾经访问此数据页的 EP
6
FRESH_EP
INTEGER
最新数据所在 EP
7
FRESH_LSN
BIGINT
最新修改对应的 LSN 值
8
N_REPLACED
INTEGER
控制块被替换次数
9
N_REVOKED
INTEGER
权限被回收次数
10
N_OWNER
INTEGER
拥有权限的 EP 数
11
N_REQUEST
INTEGER
请求授权的 EP 数
12
N_REVOKING
INTEGER
正在回收权限的 EP 数
13
N_REVOKE_X_ONLY INTEGER
页的优化次数
14.2.9 VKaTeX parse error: Double subscript at position 717: …
17
N_REVOKE_X_̲ONLY INTEGER
页…DSC_GBS_REQUEST_CTL
显示等待 GBS 控制块的请求信息。多个 pool,依次扫描,仅显示登录节点的信息。
序号
列
数据类型
说明
1
POOL_ID
INTEGER
GBS_POOL 编号
2
TS_ID
INTEGER
表空间号
3
FILE_ID
INTEGER
文件号
4
PAGE_NO
INTEGER
页号103
5
MODE
INTEGER
封锁模式,0/1/2/4:
N_LATCH/X_LATCH/S_LATCH/F_LATCH
6
EP_SEQNO
INTEGER
请求封锁的 EP
14.2.11 VDSCLBSPOOL显示LBS控制结构的信息,仅显示登录节点的信息。序号列数据类型说明1NCTLINTEGERLBS控制块总数2NFREECTLINTEGER空闲的LBS控制块数目3NSUBPOOLINTEGERLBSPOOL个数14.2.12VDSC_LBS_POOL
显示 LBS 控制结构的信息,仅显示登录节点的信息。
序号
列
数据类型
说明
1
N_CTL
INTEGER
LBS 控制块总数
2
N_FREE_CTL
INTEGER
空闲的 LBS 控制块数目
3
N_SUB_POOL
INTEGER
LBS_POOL 个数
14.2.12 VDSCLBSPOOL显示LBS控制结构的信息,仅显示登录节点的信息。序号列数据类型说明1NCTLINTEGERLBS控制块总数2NFREECTLINTEGER空闲的LBS控制块数目3NSUBPOOLINTEGERLBSPOOL个数14.2.12VDSC_LBS_POOLS_DETAIL
显示分片的 LBS_POOL 详细信息。多个 pool,依次扫描,仅显示登录节点的信息。
序号
列
数据类型
说明
1
POOL_ID
INTEGER
LBS_POOL 编号
2
N_USED_CTL
INTEGER
正在使用的 LBS 控制块数目
3
N_REQUEST_SPACE INTEGER
正在等待 LBS 控制块的请求数目
4
N_FREE_REQUEST
INTEGER
空闲的 LBS 请求控制块数目
14.2.13 VKaTeX parse error: Double subscript at position 508: …
14
N_REVOKE_X_̲ONLY INTEGER
页…DSC_LBS_CTL_LRU_FIRST
显示 LBS 的 LRU_FIRST 控制块信息。多个 pool,依次扫描,仅显示登录节点的信息。
序号
列
数据类型
说明
1
POOL_ID
INTEGER
LBS_POOL 编号
2
TS_ID
INTEGER
表空间号
3
FILE_ID
INTEGER
文件号
4
PAGE_NO
INTEGER
页号
5
ACCESS_MAP
INTEGER
曾经访问此数据页的 EP
6
FRESH_EP
INTEGER
最新数据所在 EP
7
FRESH_LSN
BIGINT
最新修改对应的 LSN 值
8
N_REPLACED
INTEGER
控制块被替换次数
9
N_REVOKED
INTEGER
权限被回收次数
10
N_FIXED
INTEGER
引用计数
11
MODE
INTEGER
获得 GBS 授权的封锁模式
12
PHY_LSN
BIGINT
数据页上的最新 LSN 值
13
N_REQUEST
INTEGER
请求获得授权的工作线程数
14
N_REVOKE_X_ONLY INTEGER
文章详细介绍了达梦数据库DSC集群的安装准备工作,包括创建安装用户、配置udev存储,以及DMDSC搭建的具体步骤。重点讲解了修改数据库实例参数、配置集群通讯、归档参数、集群守护组件、监视器与故障处理等内容。
563

被折叠的 条评论
为什么被折叠?



