上篇我们了解了DMDSC的概念,如下:
DM7 达梦 共享存储数据库集群 (1) — DMDSC 概述
https://www.cndba.cn/dave/article/3685
与 DMDSC 相关的配置文件包括:
1)DMDCR_CFG.INI
2)DMDCR.INI
3)DMINIT.INI
4)MAL 系统配置文件(DMMAL.INI、DMASVRMAL.INI)
5)DM.INI
1 DMDCR_CFG.INI
dmdcr_cfg.ini 是格式化 DCR 和 Voting Disk 的配置文件。配置信息包括三类:集群环境全局信息、集群组信息、以及组内节点信息。
使用 dmasmcmd 工具,可以根据 dmdcr_cfg.ini 配置文件,格式化 DCR 和 Voting Disk。 dmdcr_cfg.ini 配置项具体如下:
集群环境全局信息
1)DCR_VTD_PATH: Voting Disk 路径
2)DCR_N_GRP: 集群环境包括多少个 group,取值范围 1~16
3)DCR_OGUID: 消息标识,dmcssm 登录 dmcss 消息校验用
集群组信息
1)DCR_GRP_TYPE: 组类型(CSS/ASM/DB)
2)DCR_GRP_NAME: 组名,16 字节,配置文件内不可重复
3)DCR_GRP_N_EP: 组内节点个数 N,最大 16(目前暂时只支持 2 节点)
4)DCR_GRP_EP_ARR: 组内包含的节点序列号,{0,1,2,...N-1},用户不能指定,仅用于从 DCR 磁盘 export 出来可见。
5)DCR_GRP_N_ERR_EP: 组内故障节点个数,用户不能指定,仅用于从 DCR 磁盘 export 出来可见。
6)DCR_GRP_ERR_EP_ARR: 组内故障节点序列号,用户不能指定,仅用于从 DCR 磁盘 export 出来可见。
7)DCR_GRP_DSKCHK_CNT: 磁盘心跳机制,容错时间,单位秒,缺省 60S,取值范围 5~600
节点信息(某些属性可能只针对某一类型节点,比如 SHM_KEY 只针对 ASM 节点有效)
1) DCR_EP_NAME: 节点名,16 字节,配置文件内不可重复,DB 的节点名必须和 dm.ini 里的 INSTANCE_NAME 保持一致。ASM 的节点名必须和 dmmal.ini 里的 MAL_INST_NAME 一致,同一类型节点的 EP_NAME 不能重复。
2) DCR_EP_SEQNO: 组内序号,CSS/ASM 不能配置,自动分配,DB 可以配置,0 ~ n_ep -1,组内不能重复,如不配置则自动分配。
3) DCR_EP_HOST :节点 IP(CSS/ASM 有效,表示登录 CSS/ASM 的 IP 地址) 。对 DB 来说,是绑定 VIP 的网卡对应的物理 IP 地址。
4) DCR_EP_PORT:节点 TCP 监听端口(CSS/ASM/DB 有效,对应登录 CSS/ASM/DB 的端口号),取值范围 1024~65534。特别对 DB 来说,DB 的 DCR_EP_PORT与 dm.ini 中的 PORT_NUM 不一致时,DB 端口以 DCR_EP_PORT 为准。
5) DCR_EP_SHM_KEY: 共享内存标识,数值类型(ASM 有效,初始化共享内存的标识符),应为大于 0 的 4 字节整数。
6) DCR_VIP: 节点 VIP(DB 有效,表示配置的虚拟 IP),需要和 DCR_EP_HOST 在同一网段。若需 要取消 VIP 配置,仅需要将 DB 组的 DCR_VIP 和DCR_EP_HOST 删除即可。
7) DCR_CHECK_PORT: DCR 检查端口号。检查实例是否活动的时候用,各实例不能冲突。
8) DCR_EP_SHM_SIZE: 共享内存大小,单位 M,(ASM 有效,初始化共享内存大小),取值范围10~1024
9) DCR_EP_ASM_LOAD_PATH :ASM 磁盘扫描路径,Linux 下一般为/dev/raw,文件模拟情况,必须是全路径,不能是相对路径。
使用说明
1. 在用 dmasmcmd 工具执行 init votedisk disk_path from dcr_cfg_path时,指定的 disk_path 必须和 dcr_cfg_path 里面配置的 DCR_VTD_PATH 相同。
2. 如果配置 dmcssm,dmcssm 的 OGUID 必须和 DCR_OGUID 保持一致。
3. DCR_N_GRP 必须和实际配置的组数目保持一致
4. CSS 和 ASM 组的 DCR_GRP_N_EP 要相等,DB 的 DCR_GRP_N_EP 要小于等于CSS/ASM 的 DCR_GRP_N_EP。
5. ASM 节点的 DCR_EP_NAME 必须和 DMASM 系统使用的 dmmal.ini 配置文件里的MAL_INST_NAME 保持一致。
6. DB 节点的 DCR_EP_NAME 必须和数据库实例使用 dmmal.ini 配置文件里的MAL_INST_NAME、以及 dm.ini 配置文件里的 INSTANCE_NAME 保持一致。
7. 所有 DB 节点的 DCR_EP_NAME 都不能重复,DB 组内的 DCR_EP_SEQNO 不能重复。
举例说明
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/raw/raw2
DCR_OGUID = 63635
[GRP] #[GRP]表示新建一个 Group
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = CSS
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[CSS] #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = CSS0
DCR_EP_HOST = 10.0.2.101
DCR_EP_PORT = 9341
[CSS] #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = CSS1
DCR_EP_HOST = 10.0.2.102
DCR_EP_PORT = 9343
[GRP] #[GRP]表示新建一个 Group
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[ASM] #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = ASM0
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 10.0.2.101
DCR_EP_PORT = 9349
DCR_EP_ASM_LOAD_PATH = /dev/raw
[ASM] #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 10.0.2.201
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP] #[GRP]表示新建一个 Group
DCR_GRP_TYPE = DB
DCR_GRP_NAME = RAC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[RAC] #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = RAC01
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
[RAC] #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = RAC02
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9742
2 DMDCR.INI
dmdcr.ini 是 dmcss、dmasmsvr、dmasmtool 工具的输入参数。记录了当前节点序列号以及 DCR 磁盘路径。
dmdcr.ini 配置项如下:
1)DMDCR_PATH :记录 DCR 磁盘路径
2)DMDCR_SEQNO: 记录当前节点序号(用来获取 ASM 登录信息)
3)DMDCR_MAL_PATH: 保存 dmmal.ini 配置文件的路径,仅对 dmasmsvr 有效。
4)DMDCR_ASM_RESTART_INTERVAL: DMCSS 认定 DMASM 节点故障重启的时间间隔(取值 0~ 86400s),DMCSS 只负责和 DMDCR_SEQNO 节点号相等的DMASM 节点的故障重启,超过设置的时间后,如果 DMASM 节点的 active 标记仍然为 FALSE,则 DMCSS 会执行自动拉起。如果配置为 0,则不会执行自动拉起操作,默认为 60s。
5)DMDCR_ASM_STARTUP_CMD: DMCSS 认定 DMASM 节点故障后,执行自动拉起的命令串,可以配置为服务方式或命令行方式启动。
6)DMDCR_DB_RESTART_INTERVAL: DMCSS 认定 DMDSC 节点故障重启的时间间隔(取值 0~ 86400s),DMCSS 只负责和 DMDCR_SEQNO 节点号相等的DMDSC 节点的故障重启,超过设置的时间后,如果 DMDSC 节点的 active 标记仍然为 FALSE,则 DMCSS 会执行自动拉起。如果配置为 0,则不会执行自动拉起操作,默认为 60s。
7)DMDCR_DB_STARTUP_CMD: DMCSS 认定 DMDSC 节点故障后,执行自动拉起的命令串,可以配置为服务方式或命令行方式启动,具体可参考说明部分。
使用说明:
1.dmasmsvr 和 dmserver 使用不同的 MAL 系统,需要配置两套 MAL 系统,配置文件 dmmal.ini 需要分别生成,保存到不同的目录下,并且 dmmal.ini 中的配置项不能重复、冲突。
2. DMCSS 自动拉起故障 DMASMSVR 或 DMSERVER 实例。
故障认定间隔和启动命令串是配合使用的,DMASMSVR 和 DMSERVER 实例需要各自配置,如果没有配置启动命令串,故障间隔即使配置为大于 0 的值 DMCSS 也不会执行自动拉起操作,DMDCR_ASM_RESTART_INTERVAL 和 DMDCR_DB_RESTART_INTERVAL 默认的60s 只有在配置有启动命令串时才会起作用。
DMDCR_ASM_STARTUP_CMD 和 DMDCR_DB_STARTUP_CMD 的配置方法相同,只是执行码名称和 ini 配置文件路径有区别,可以配置为服务名或命令行启动方式。
DMASMSVR 实例启动命令举例如下:
1. linux 命令行方式启动(不能出现带有空格的路径):
DMDCR_ASM_STARTUP_CMD = /opt/dmdbms/bin/dmasmsvr dcr_ini=/home/data/dmdcr.ini
2. linux 服务方式启动:
DMDCR_ASM_STARTUP_CMD = service dmasmserverd restart
3. Windows 命令行启动:
DMDCR_ASM_STARTUP_CMD = c:/dm/bin/dmasmsvr.exe dcr_ini=d:/asmtest/dmdcr.ini
4. Windows 服务方式启动:
DMDCR_ASM_STARTUP_CMD = net start 注册服务名
DMSERVER 实例启动命令如下:
1. linux 命令行方式启动(不能出现带有空格的路径):
DMDCR_DB_STARTUP_CMD = /opt/dmdbms/bin/dmserver path=/home/data/rac0_config/dm.ini dcr_ini=/home/data/dmdcr.ini
2. linux 服务方式启动:
DMDCR_DB_STARTUP_CMD = service dmracserverd restart
3. Windows 命令行启动:
DMDCR_DB_STARTUP_CMD = c:/dm/bin/dmserver.exe path=d:/asmtest/rac0_config/dm.ini dcr_ini=d:/asmtest/dmdcr.ini
4. Windows 服务方式启动:
DMDCR_DB_STARTUP_CMD = net start 注册服务名
举例说明
DMDCR_PATH=/dev/raw/raw1
DMDCR_SEQNO=0
DMDCR_MAL_PATH=/home/data/dmasvrmal.ini
#故障认定间隔,以及启动命令中的执行码路径和 ini 路径需要根据实际情况调整
DMDCR_ASM_RESTART_INTERVAL = 60
DMDCR_ASM_STARTUP_CMD = /opt/dmdbms/bin/dmasmsvr dcr_ini=/home/data/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 60
DMDCR_DB_STARTUP_CMD = /opt/dmdbms/bin/dmserver
path=/home/data/rac0_config/dm.ini dcr_ini=/home/data/dmdcr.ini
3 DMINIT.INI
dminit.ini 是 dminit 工具初始化数据库环境的配置文件。与初始化库使用普通文件系统不同,如果使用裸设备或者 ASM 文件系统,必须使用 dminit 工具的 control 参数指定 dminit.ini 文件。dminit 工具的命令行参数都可以放在 dminit.ini 中,比如db_name,auto_overwrite 等,dminit.ini 格式分为全局参数和节点参数。常用的dminit.ini 配置项如下。
全局参数(对所有节点有效):
SYSTEM_PATH: 初始化数据库存放的路径
DB_NAME: 初始化数据库名称
MAIN :MAIN表空间路径
MAIN_SIZE: MAIN 表空间大小
SYSTEM: SYSTEM 表空间路径
SYSTEM_SIZE :SYSTEM 表空间大小
ROLL ROLL: 表空间路径
ROLL_SIZE: ROLL 表空间大小
CTL_PATH DM.CTL: 控制文件路径
CTL_SIZE DM.CTL: 控制文件大小
LOG_SIZE: 日志文件大小
HUGE_PATH :huge 表空间路径
AUTO_OVERWRITE :文件存在时的处理方式
DCR_PATH: DCR 磁盘路径
DCR_SEQNO: 连接 DMASM 节点节点号
节点参数(对具体节点有效)
[XXX]: 具体节点都是以[XXX]开始,节点实例名就是 XXX
CONFIG_PATH :配置文件存放路径
PORT_NUM: 节点端口号
MAL_HOST: 节点 MAL 系统使用 IP
MAL_PORT: 节点 MAL 端口
LOG_PATH: 日志文件路径
使用说明
1. SYSTEM_PATH 目前可以支持 ASM 文件系统,如果不指定MAIN/SYSTEM/ROLL/CTL_PATH/HUGE_PATH,数据文件、控制文件和 huge 表空间路径都会默认生成在 SYSTEM_PATH/db_name 下面。
2. 表空间路径和 DM.CTL 路径支持普通操作系统路径、裸设备、ASM 文件路径,如果指定必须指定 SIZE。
3. 只有 dminit 工具使用 ASM 文件系统,才会用到 DCR_PATH 和 DCR_SEQNO,并且不会写入其他配置文件。
4. CONFIG_PATH 暂时只支持裸设备,不支持 ASM 文件系统。DSC 环境配置,两节点的 config_path 要指定不同路径。
5. MAL_HOST 和 MAL_PORT 是为了自动创建 dmmal.ini 文件使用,只有在初始化DSC 环境时需要指定。
6. LOG_PATH 可以不指定,默认会在 SYSTEM_PATH 生成。如果指定,必须指定两个以上。
7. 必须指定实例名,也就是必须配置[XXX]。
8. dminit 工具的 control 参数只能独立使用,不能和其他任何参数一起使用。
举例说明
system_path= +DMDATA/data
db_name= rac
main= +DMDATA/data/rac/main.dbf
main_size= 128
roll = +DMDATA/data/rac/roll.dbf
roll_size= 128
system = +DMDATA/data/rac/system.dbf
system_size= 128
ctl_path = +DMDATA/data/rac/dm.ctl
ctl_size = 8
log_size = 256
dcr_path = /dev/raw/raw1
dcr_seqno = 0
auto_overwrite=1
[rac01]
config_path = /home/data/config1
port_num = 5236
mal_host = 10.0.2.101
mal_port = 9340
log_path = +DMDATA/log/log101.log
log_path = +DMDATA/log/log102.log
[rac02]
config_path = /home/data/config2
port_num = 5237
mal_host = 10.0.2.102
mal_port = 9341
log_path = +DMDATA/log/log201.log
log_pa
4 MAL 系统配置文件(DMMAL.INI、DMASVRMAL.INI)
dmmal.ini 和 dmasvrmal.ini 都是 MAL 配置文件。使用同一套 MAL 系统的所有实例,MAL 系统配置文件要严格保持一致。
MAL 系统配置文件的配置项如下。
MAL_CHECK_INTERVAL:MAL 链路检测时间间隔,取值范围(0s-1800s),默认 30s,配置为 0 表示不进行 MAL 链路检测。为了防止误判,DMDSC 集群中,建议将配置值>= DCR_GRP_NETCHK_TIME。
MAL_CONN_FAIL_INTERVAL :判定 MAL 链路断开的时间,取值范围(2s-1800s),默认 10s。
MAL_LOGIN_TIMEOUT:MPP/DBLINK 等实例间登录时的超时检测间隔(3-1800),以秒为单位,默认 15s。
MAL_BUF_SIZE:单个 MAL 缓存大小限制,以兆为单位。当此 MAL 的缓存邮件超过此大小,则会将邮件存储到文件中。有效值范围(0~500000),默认为 100。
MAL_SYS_BUF_SIZE:MAL 系统总内存大小限制,单位:M。有效值范围(0~500000),默认为 0,表示 MAL 系统无总内存限制。
MAL_VPOOL_SIZE:MAL 系统使用的内存初始化大小,以兆为单位。有效值范围( 1~500000 ), 默 认 为 128 ,此值一般要设置的比MAL_BUF_SIZE 大一些。
MAL_COMPRESS_LEVEL:MAL 消息压缩等级,取值范围(0-10)。默认为 0,不进行压缩;1–9 表示采用 lz 算法,从 1 到 9 表示压缩速度依次递减,压缩率依次递增;10 表示采用 quicklz 算法,压缩速度高于 lz 算法,压缩率相对低。
[MAL_NAME]: MAL 名称,同一个配置文件中 MAL 名称需保持唯一性。
MAL_INST_NAME: 数据库实例名,与 dm.ini 的 INSTANCE_NAME 配置项保持一致,MAL 系统中数据库实例名要保持唯一。
MAL_HOST: MAL IP 地址,使用 MAL_HOST + MAL_PORT 创建 MAL 链路
MAL_PORT: MAL 监听端口
MAL_INST_HOST: MAL_INST_NAME 实例对外服务 IP 地址
MAL_INST_PORT: MAL_INST_NAME 实例对外服务端口,和 dm.ini 中的PORT_NUM 保持一致
MAL_DW_PORT: MAL_INST_NAME 实例守护进程监听端口,其他守护进程或监视器使用 MAL_HOST + MAL_DW_PORT 创建 TCP 连接。
使用说明
1.DMASMSVR 组成的集群环境使用 MAL 系统进行通讯,需要在 dmdcr.ini 配置文件中配置 DMDCR_MAL_PATH 参数,指定 MAL 配置文件路径。例如:DMDCR_MAL_PATH =/home/data/dmasvrmal.ini。
2.使用 MAL 系统的 dmserver 实例,需要将 dm.ini 配置项 MAL_INI 设置为 1。同 时 MAL 系统配置文件名称必须为 dmmal.ini。
3.DMASMSVR和DMDSC集群中的dmserver实例需要分别配置一套独立的MAL系统,两者配置的 MAL 环境不能冲突。
5 DM.INI
dm.ini 是 dmserver 使用的配置文件。
下面几个参数需要按要求进行配置:
1)instance_namedmserver 如果需要使用 DMASM 文件系统,instance_name必须和 DMDCR_CFG.INI 里面配置的 DCR_EP_NAME 相同。
2)mal_ini 必须设置为 1。
3)RAC_USE_SBT 是否使用辅助的平衡二叉树。取值 0 或 1。1 是,0 否。默认 0。DM7 的检查点机制要求 BUFFER 更新链表保持有序性,所有被修改过的数据页,要根据其第一次修改的 LSN 值(FIRST_MODIFIED_LSN)从小到大有序排列。而 DMDSC 的缓存交换机制要求数据页在节点间传递,当一个更新页 P1 从节点 EP0 传递到节点 EP1 时,为了不破坏节点 EP1 更新链表 FIRST_MODIFIED_LSN 的有序性,需要扫描更新链,将 P1 加入到更新链中的合适位置。极端情况下,可能需要扫描整个更新链,才能找到 P1 的插入位置,在 BUFFER 比较大,更新链表比较长的情况下,这种扫描、定位代价十分昂贵,特别是在高并发情况下,会引发严重的并发冲突,影响并发性能。开启 RAC_USE_SBT 参数后,系统内部维护一个平衡二叉树,在将数据页加入更新链表时,根据这个平衡二叉树进行
4)log2^N次比较,就可以找到插入位置。
5)RAC_N_POOLS LBS/GBS 池数目。有效值范围(1~1024),默认值 1。与BUFFER_POOLS 类似,RAC_N_POOLS 将系统中的 LBS/GBS 根据页号进行分组,以降低LBS/GBS 处理的并发冲突。
6)CONFIG_PATH 指定 dmserver 所读取的配置文件(dmmal.ini, dmarch.ini, dmtimer.ini 等)的路径。不允许指定 ASM 目录。缺省使用 SYSTEM_PATH 路径。如果SYSTEM_PATH 保存在 ASM 上,则直接报错。
7)TRACE_PATH 存放系统 trace 文件的路径。不允许指定 ASM 目录。默认的TRACE_PATH 是 SYSTEM_PATH ;如果 SYSTEM_PATH 保存在 ASM 上 ,则../config_path/trace 作为 TRACE_PATH。