一、 DMDSC 搭建
1.1 环境准备
硬件 : 两台相同配置机器, 2G 内存, 100G 本地磁盘, 2 块网卡,另有一块共享磁盘 100G 。
操作系统 :RedHat Linux 64 位。
网络配置 :eth0 网卡为 10.0.2.x 内网网段,两台机器分别为 10.0.2.11/10.0.2.12;eth1 为 192.168.242.x 外网网段,两台机器分别为192.168.242.11/192.168.242.12 。内网网段用于 MAL 通讯。
DM 各种工具位于目录 :/dm7/dmdbms/bin 。 配置文件位于目录 :/data 。
备注:真实的生产环境中,建议至少配置两块共享磁盘,分别用来存放联机日志文 件和数据文件。
1.2 搭建 2 节点 DMDSC(DMASM)
1. 节点一在共享磁盘上裸设备划分
1) 输入 fdisk /dev/vdb
2) 依次输入 n -> p -> 1 -> 回车 -> +100M -> 回车,完成第一块磁盘划分
3) 依次输入 n -> p -> 2 -> 回车 -> +100M -> 回车,完成第二块磁盘划分
4) 依次输入 n -> p -> 3 -> 回车 -> +2048M -> 回车,完成第三块磁盘划分
5) 依次输入 n -> p -> 4 -> 回车 -> 回车 -> 回车,完成第四块磁盘划分
6) 编辑 /etc/udev/rules.d/60-raw.rules 文件,增加以下语句 :
ACTION=="add", KERNEL=="vdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="vdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="vdb3", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="vdb4", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"
最后执行 start_udev ,完成裸设备绑定
节点二:
执行 partprobe
ll /dev/vdb* 是否全部存在
编辑 /etc/udev/rules.d/60-raw.rules 文件,增加以下语句 :
ACTION=="add", KERNEL=="vdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="vdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="vdb3", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="vdb4", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"
最后执行 start_udev ,完成裸设备绑定
备注:可以通过 blockdev --getsize64 /dev/raw/raw1 命令查看裸设备大小
2. 配置 dmdcr_cfg.ini 文件,保存到 /data/ 目录下面。后续 DMASMCMD 工具执行 init 语句会使用到。
vi 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 = 10.0.2.11
DCR_EP_PORT = 9341
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 10.0.2.12
DCR_EP_PORT = 9343
[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 = 10
DCR_EP_HOST = 192.168.242.11
DCR_EP_PORT = 9349
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 = 192.168.242.12
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_RAC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_RAC]
DCR_EP_NAME = RAC0
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
[GRP_RAC]
DCR_EP_NAME = RAC1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9742
3. 使用 DMASMCMD 工具初始化
su - dmdba
dmasmcmd (只需要在一台上执行即可,通常节点一)
create dcrdisk '/dev/raw/raw1' 'dcr'
create votedisk '/dev/raw/raw2' 'vote'
create asmdisk '/dev/raw/raw3' 'LOG0'
create asmdisk '/dev/raw/raw4' 'DATA0'
init dcrdisk '/dev/raw/raw1' from '/data/dmdcr_cfg.ini' identified by 'abcd'
init votedisk '/dev/raw/raw2' from '/data/dmdcr_cfg.ini'
备注:可以启动 dmasmcmd 工具,依次输入以上命令,或者将命令写入 asmcmd.txt 文件,执行dmasmcmd script_file=asmcmd.txt ,只需在一台机器执行即可。
用户没有指定脚本文件,则 dmasmcmd 进入交互模式运行,逐条解析、运行命令 ; 用户指定脚本文件(比如 asmcmd.txt )则以行为单位读取文件内容,并依次执行,执行完成以后,自动退出 dmasmcmd 工具。脚本文件必须以 “#asmscriptfile” 开头,否则认为是无效脚本文件 ; 脚本中其它行以 “#” 表示注释 ; 脚本文件大小不超过 1M 。
4. 准备 DMASM 的 MAL 配置文件 ( 命名为 dmasvrmal.ini) ,使用 DMASM 的所有节点都要配置,内容完全一样,保存到 /data 目录下
vi dmasvrmal.ini (所有节点)
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 10.0.2.11
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 10.0.2.12
MAL_PORT = 7237
5. 准备 dmdcr.ini 配置文件,保存到 /data 目录下面
DMASM 的两个节点分别配置 dmdcr.ini 。 dmdcr_path 相同, dmdcr_seqo 分别为 0 和 1 。
vi dmdcr.ini
node01:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /data/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /dm7/dmdbms/bin/dmasmsvr dcr_ini=/data/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /dm7/dmdbms/bin/dmserver path=/data/rac0_config/dm.ini dcr_ini=/data/dmdcr.ini
node02:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /data/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /dm7/dmdbms/bin/dmasmsvr dcr_ini = /data/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /dm7/dmdbms/bin/dmserver path = /data/rac1_config/dm.ini dcr_ini = /data/dmdcr.ini
6. 启动 DMCSS 、 DMASM 服务程序
在节点一和节点二先后分别启动 dmcss 、 dmasmsvr 程序 (初次配置可以使用前台的方式启动)
节点一:
su - dmdba
nohup dmcss DCR_INI=/data/dmdcr.ini &
nohup dmasmsvr DCR_INI=/data/dmdcr.ini &
备注:如果 DMCSS 配置有自动拉起 dmasmsvr 的功能,可以等待 DMCSS 自动拉起 dmasmsvr 程序,不需要手动启动。
节点二:
su - dmdba
nohup dmcss DCR_INI=/data/dmdcr.ini &
nohup dmasmsvr DCR_INI=/data/dmdcr.ini &
7. 使用 dmasmtool 工具创建 DMASM 磁盘组
一个节点执行即可,通常一节点:
su - dmdba
dmasmtool DCR_INI=/data/dmdcr.ini
输入下列语句创建 DMASM 磁盘组 :
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
8. 配置 dminit.ini 文件,保存到 /data 目录
vi dminit.ini ( 一个节点配置即可,通常一节点 )
db_name = rac
system_path = +DMDATA/data
system = +DMDATA/data/rac/system.dbf
system_size = 128
roll = +DMDATA/data/rac/roll.dbf
roll_size = 128
main = +DMDATA/data/rac/main.dbf
main_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
[RAC0]
config_path = /data/rac0_config
port_num = 5236
mal_host = 10.0.2.11
mal_port = 9340
log_path = +DMLOG/log/rac0_log01.log
log_path = +DMLOG/log/rac0_log02.log
[RAC1]
config_path = /data/rac1_config
port_num = 5237
mal_host = 10.0.2.12
mal_port = 9341
log_path = +DMLOG/log/rac1_log01.log
log_path = +DMLOG/log/rac1_log02.log
9. 使用 dminit 初始化 DB 环境
节点一启动 dminit 工具初始化数据库
su - dmdba
dminit control=/data/dminit.ini
备注: dminit 执行完成后,会在 config_path 目录 (/data/rac0_config 和 /data/rac1_config) 下生成配置文件 dm.ini 和 dmmal.ini。
10. 启动数据库服务器
将节点一 /data/rac1_config 目录拷贝到节点二相同目录下,再分别启动 dmserver 即可完成 DMDSC 集群搭建。
备注:如果 DMCSS 配置有自动拉起 dmserver 的功能,可以等待 DMCSS 自动拉起实例,不需要手动启动。 如果需要手动启动,可参考下面的操作步骤。
节点一:
nohup dmserver /data/rac0_config/dm.ini dcr_ini=/data/dmdcr.ini &
节点二:
nohup dmserver /data/rac1_config/dm.ini dcr_ini=/data/dmdcr.ini &
二、故障自动重连
当用户连接到 DM 共享存储集群时,实际上是连接到集群中的一个实例,用户的所有增删改查操作都是由该实例完成的。但是如果该实例出现故障,那么用户连接会被转移到其他正常实例。而这种转移对用户是透明的,用户的增删改查继续返回正确结果,感觉不到异常。这种功能就是故障自动重连。实现故障自动重连的前提条件是在配置 DM 共享存储集群的时候,必须配置连接服务名。
配置 DMDSC 集群,一般要求配置连接服务名,以实现故障自动重连。连接服务名可以在 DM 提供的 JDBC 、 DPI 等接口中使用,连接数据库时指定连接服务名,接口会随机选择 一个 IP 进行连接,如果连接不成功或者服务器状态不正确,则顺序获取下一个 IP 进行连接,直至连接成功或者遍历了所有 IP 。可以通过编辑 dm_svc.conf 文件,配置连接服务名。 dm_svc.conf 配置文件在 DM 安装时生成, Windows 平台下位于 %SystemRoot%\system32 目录, Linux 平台下位于 /etc 目录。
配置一个名为 dmdsc_svc 的连接服务名,使用 dmdsc_svc 连接 DMDSC 集群中的数据库,即可实现故障自动重连。
客户端配置:
vi /etc/dm_svc.conf
dmdsc_svc=(192.168.242.11:5236,192.168.242.12:5237)
SWITCH_TIME=(10000)
SWITCH_INTERVAL=(1000)
三、监控 DMDSC
DMDSC 集群的运行情况可以通过 DMCSSM 监视器进行查看,也可以查询 DMDSC 相关的动态视图获取更详细的信息。DMCSSM 监视器支持一些控制命令,可以用来启动、关闭 DMDSC 集群,还可以进行手动控制节点故障处理和节点重加入。
同一个 DMDSC 集群中,允许最多同时启动 10 个监视器,建议监视器放在独立的第三 方机器上,避免由于节点间网络不稳定等原因导致监视器误判节点故障。
下面举例说明监视器的配置步骤,以上面搭建的 2 节点 DMDSC 环境为基础,配置对应的监视器,监视器放在第三方机器上,为 linux 操作系统, dmcssm.ini 配置文件路径为 /data ,可根据实际情况调整配置环境及路径。
1. 配置 dmcssm.ini 文件
vi dmcssm.ini ( 监控节点上 )
CSSM_OGUID = 63635
CSSM_CSS_IP = 10.0.2.11:9341
CSSM_CSS_IP = 10.0.2.12:9343
CSSM_LOG_PATH =/data/log
CSSM_LOG_FILE_SIZE = 32
CSSM_LOG_SPACE_LIMIT = 0
2. 启动 dmcssm 监视器
dmcssm ini_path=/data/dmcssm.ini
四、服务注册
服务类型 -t:
dmap 、 dmamon 、 dmserver 、 dmwatch 、 dmrww 、 dmwmon 、 dmwatcher 、 dmmonitor 、 dmasmsvr 、 dmcss 、dmcssm
参数文件 -i:
dmserver : dm.ini
dmwatch : dmwatch.ini
dmrww : dmrww.ini
dmwmon : dmwmon.ini
dmwatcher : dmwatcher.ini
dmmonitor : dmmonitor.ini
dmasmsvr : dmdcr.ini
dmcss : dmdcr.ini
dmcssm : dmcssm.ini
dmcss:
./dm_service_installer.sh -t dmcss -i /data/dmdcr.ini -p dmcss
dmasmsvr:
./dm_service_installer.sh -t dmasmsvr -i /data/dmdcr.ini -p dmasmsvr
dmserver:
./dm_service_installer.sh -t dmserver -i /data/rac0_config/dm.ini -d /data/dmdcr.ini -p DMSERVER
dmcssm:
./dm_service_installer.sh -t dmcssm -i /data/dmcssm.ini -p dmcssm
dmmonitor:
./dm_service_installer.sh -t dmmonitor -i /data/dmcssm.ini -p dmmonitor
删除服务:
./dm_service_uninstaller.sh -n DmMonitorServicedmmonitor