简介
适用于密集交易型场景的共享存储集群,采用单库多实例架构,基于共享存储上的多个节点对外提供服务,实现高吞吐量;自动接管故障节点,保证系统高可用性;对标 RAC 架构,是适合金融行业核心生产系统的解决方案
主机名 | public ip | private ip | 实例名 | 端口 | 用途 |
dm180 | 192.168.137.180 | 192.168.137.180 | dsc1 | 5236 | 数据库实例 dmrw1 监听端口 |
dm180 | 192.168.137.180 | 192.168.137.180 | dsc1 | 9741 | 节点 1 DCR 检查数据库实例监听端口 |
dm180 | 192.168.137.180 | 192.168.137.180 | dsc1 | 9341 | 节点 1 CSS 进程 TCP 连接端口 |
dm180 | 192.168.137.180 | 192.168.137.180 | dsc1 | 9351 | 节点 1 ASM 进程 TCP 连接的端口 |
dm180 | 192.168.137.180 | 192.168.137.180 | dsc1 | 7236 | 节点 1 ASM 的 MAL 系统 TCP 连接的端口 |
dm180 | 192.168.137.180 | 192.168.137.180 | dsc1 | 9236 | 节点 1 数据库实例的 MAL 系统 TCP 连接的端口 |
dm181 | 192.168.137.181 | 192.168.137.181 | dsc2 | 5236 | 数据库实例 dmrw2 监听端口 |
dm181 | 192.168.137.181 | 192.168.137.181 | dsc2 | 9741 | 节点 2 DCR 检查数据库实例监听端口 |
dm181 | 192.168.137.181 | 192.168.137.181 | dsc2 | 9341 | 节点 2 CSS 进程 TCP 连接端口 |
dm181 | 192.168.137.181 | 192.168.137.181 | dsc2 | 9351 | 节点 2 ASM 进程 TCP 连接的端口 |
dm181 | 192.168.137.181 | 192.168.137.181 | dsc2 | 7236 | 节点 2 ASM 的 MAL 系统 TCP 连接的端口 |
dm181 | 192.168.137.181 | 192.168.137.181 | dsc2 | 9236 | 节点 2 数据库实例的 MAL 系统 TCP 连接的端口 |
1、裸设备共享存储配置
1.1 创建虚拟机共享磁盘
-- 切换目录
cd C:\Program Files (x86)\VMware\VMware Workstation
-- 创建虚拟机共享磁盘
vmware-vdiskmanager.exe -c -s 2000MB -a lsilogic -t 2 "E:\bingo\VM_ALL\rac_sharedisk\dcrdisk.vmdk"
vmware-vdiskmanager.exe -c -s 2000Mb -a lsilogic -t 2 "E:\bingo\VM_ALL\rac_sharedisk\votedisk.vmdk"
vmware-vdiskmanager.exe -c -s 4000Mb -a lsilogic -t 2 "E:\bingo\VM_ALL\rac_sharedisk\redodisk.vmdk"
vmware-vdiskmanager.exe -c -s 4000Mb -a lsilogic -t 2 "E:\bingo\VM_ALL\rac_sharedisk\datadisk.vmdk"
-- 修改2个虚拟机的vmx配置文件,在虚拟机的安装目录下的.vmx文件最后加上以下信息(如果发现预留磁盘错误,请更改,如scsi1:7,修改为scsi1:8):
scsi0:1.present = "TRUE"
scsi0:1.fileName = "E:\bingo\VM_ALL\rac_sharedisk\dcrdisk.vmdk"
scsi0:1.mode = "independent-persistent"
scsi0:1.redo = ""
scsi0:2.present = "TRUE"
scsi0:2.fileName = "E:\bingo\VM_ALL\rac_sharedisk\votedisk.vmdk"
scsi0:2.mode = "independent-persistent"
scsi0:2.redo = ""
scsi0:3.present = "TRUE"
scsi0:3.fileName = "E:\bingo\VM_ALL\rac_sharedisk\redodisk.vmdk"
scsi0:3.mode = "independent-persistent"
scsi0:3.redo = ""
scsi0:4.present = "TRUE"
scsi0:4.fileName = "E:\bingo\VM_ALL\rac_sharedisk\datadisk.vmdk"
scsi0:4.mode = "independent-persistent"
scsi0:4.redo = ""
disk.EnableUUID="TRUE"
disk.locking="FALSE"
scsi0.shared="TRUE"
diskLib.dataCacheMaxSize="0"
diskLib.dataCacheMaxReadAheadSize="0"
diskLib.dataCacheMinReadAheadSize="0"
diskLib.dataCachePageSize="4096"
diskLib.maxUnsyncedWrites="0"
scsi0.sharedBus="VIRTUAL"
1.2 配置共享存储
注意:2个节点均需要执行
运行命令lsblk,确认磁盘名称
-- 切换目录
cd C:\Program Files (x86)\VMware\VMware Workstation
-- 创建虚拟机共享磁盘
vmware-vdiskmanager.exe -c -s 2000MB -a lsilogic -t 2 "E:\bingo\VM_ALL\rac_sharedisk\dcrdisk.vmdk"
vmware-vdiskmanager.exe -c -s 2000Mb -a lsilogic -t 2 "E:\bingo\VM_ALL\rac_sharedisk\votedisk.vmdk"
vmware-vdiskmanager.exe -c -s 4000Mb -a lsilogic -t 2 "E:\bingo\VM_ALL\rac_sharedisk\redodisk.vmdk"
vmware-vdiskmanager.exe -c -s 4000Mb -a lsilogic -t 2 "E:\bingo\VM_ALL\rac_sharedisk\datadisk.vmdk"
-- 修改2个虚拟机的vmx配置文件,在虚拟机的安装目录下的.vmx文件最后加上以下信息(如果发现预留磁盘错误,请更改,如scsi1:7,修改为scsi1:8):
scsi0:1.present = "TRUE"
scsi0:1.fileName = "E:\bingo\VM_ALL\rac_sharedisk\dcrdisk.vmdk"
scsi0:1.mode = "independent-persistent"
scsi0:1.redo = ""
scsi0:2.present = "TRUE"
scsi0:2.fileName = "E:\bingo\VM_ALL\rac_sharedisk\votedisk.vmdk"
scsi0:2.mode = "independent-persistent"
scsi0:2.redo = ""
scsi0:3.present = "TRUE"
scsi0:3.fileName = "E:\bingo\VM_ALL\rac_sharedisk\redodisk.vmdk"
scsi0:3.mode = "independent-persistent"
scsi0:3.redo = ""
scsi0:4.present = "TRUE"
scsi0:4.fileName = "E:\bingo\VM_ALL\rac_sharedisk\datadisk.vmdk"
scsi0:4.mode = "independent-persistent"
scsi0:4.redo = ""
disk.EnableUUID="TRUE"
disk.locking="FALSE"
scsi0.shared="TRUE"
diskLib.dataCacheMaxSize="0"
diskLib.dataCacheMaxReadAheadSize="0"
diskLib.dataCacheMinReadAheadSize="0"
diskLib.dataCachePageSize="4096"
diskLib.maxUnsyncedWrites="0"
scsi0.sharedBus="VIRTUAL"
1.3 udev方式绑定裸设备
执行以下命令,新建 udev 规则文件:
vi /etc/udev/rules.d/90-raw.rules
添加以下内容:
ACTION=="add",KERNEL=="sdb",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add",KERNEL=="sdc",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add",KERNEL=="sdd",RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add",KERNEL=="sde",RUN+="/bin/raw /dev/raw/raw4 %N"
KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"
-- 使udev配置生效
udevadm trigger --type=devices --action=change
-- 重启udev服务
systemctl restart systemd-udev-trigger.service
检查udev是否配置成功
2 安装DM8数据库
请参考资料
https://blog.csdn.net/sjj51812580/article/details/124377008
说明:如果使用静默安装,请取消数据库初始化以及启动服务等(修改配置项即可)
3、配置DMDSC
3.1 配置 DCR 初始化文件
1、创建配置文件存放目录
pssh -h /opt/list -i "mkdir -p /home/dmdba/config"
2、新建 dmdcr_cfg.ini 文件,节点 1 使用 dmdba 用户,执行以下命令
echo "DCR_N_GRP = 3
DCR_VTD_PATH = /dev/raw/raw2
DCR_OGUID = 63635
[GRP]
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = CSS
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.137.180
DCR_EP_PORT = 9341
[CSS]
DCR_EP_NAME = CSS2
DCR_EP_HOST = 192.168.137.181
DCR_EP_PORT = 9341
[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.137.180
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/raw
[ASM]
DCR_EP_NAME = ASM2
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.137.181
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
[DSC]
DCR_EP_NAME = DSC2
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741" > /home/dmdba/config/dmdcr_cfg.ini
3.2 创建 ASM 磁盘
使用 dmdba 用户,到 DM 数据库软件安装目录的 bin 目录执行以下命令(只需在一个节点执行)
/home/dmdba/dmdbms/bin/dmasmcmd SCRIPT_FILE=/home/dmdba/tmp/asm_init.txt
初始化配置文件内容(后期自动化脚本需要):
#asm script file
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 '/home/dmdba/config/dmdcr_cfg.ini' identified by '123456'
init votedisk '/dev/raw/raw2' from '/home/dmdba/config/dmdcr_cfg.ini'
3.3 配置ASM的MAL系统配置文件
2 个节点都需要配置,且文件内容相同,执行以下命令
配置文件内容
echo "[MAL_INST1]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.137.180
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM2
MAL_HOST = 192.168.137.181
MAL_PORT = 7236" > /home/dmdba/config/dmasvrmal.ini
复制到所有主机
pscp -h /opt/list /home/dmdba/config/dmasvrmal.ini /home/dmdba/config/dmasvrmal.ini
3.4 配置 DCR 启动配置文件
节点1配置内容:
节点1配置内容:
echo "DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/home/dmdba/config/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 0
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL =10
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/config/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 30
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path= /home/dmdba/config/dsc1/dm.ini dcr_ini=/home/dmdba/config/dmdcr.ini" > /home/dmdba/config/dmdcr.ini
节点2配置内容:
echo "DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/home/dmdba/config/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 1
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL =10
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/config/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 30
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path= /home/dmdba/config/dsc2/dm.ini dcr_ini=/home/dmdba/config/dmdcr.ini" > /home/dmdba/config/dmdcr.ini
注意
两个节点的 DMDCR_SEQNO 参数不能相同要唯一,DMDCR_DB_STARTUP_CMD 中启动脚本路径和配置文件路径要配置准确。如果不配置 css 自动启动 asm 和 db 则需要配置 DMDCR_ASM_RESTART_INTERVAL 和DMDCR_DB_RESTART_INTERVAL 为 0
-- 查看配置内容
pssh -h /opt/list -i "cat /home/dmdba/config/dmdcr.ini"
4、初始化及启动集群
4.1 启动 DMCSS 服务
2 个节点启动 dmcss,dmdba 用户到数据库安装目录 bin 下执行以下命令
-- 启动服务,必须切换到bin目录,否则出现共享文件找不到的问题
pssh -h /opt/list -i --timeout 0 "cd /home/dmdba/dmdbms/bin && nohup ./dmcss dcr_ini=/home/dmdba/config/dmdcr.ini &"
-- 查看日志
tail -f /home/dmdba/dmdbms/log/dm_CSS1_202204.log
4.2 创建ASM磁盘组(磁盘服务已启动后)
./dmasmtool dcr_ini=/home/dmdba/config/dmdcr.ini
在 ASM 提示符下创建 asm 磁盘组,创建 REDO 日志磁盘组,执行以下命令:
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
创建数据文件磁盘组,执行以下命令:
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
asm 磁盘组创建成功,执行以下命令:
-- 查看磁盘组列表
ASM>ls
+
disk groups total [4]......
NO.1 name: DMLOG
NO.2 name: DMDATA
NO.3 name: VOTE
NO.4 name: DCR
Used time: 0.892(ms).
ASM>
4.3 初始化数据库
配置 dminit 控制文件,节点 1 使用 dmdba 用户执行以下命令:
vi /home/dmdba/config/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 = 1024
dcr_path = /dev/raw/raw1 #dcr 磁盘路径,目前不支持 asm,只能是裸设备
dcr_seqno = 0
auto_overwrite = 1
[DSC1] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /home/dmdba/config/dsc1
port_num = 5236
mal_host = 192.168.137.180
mal_port = 9236
log_path = +DMLOG/log/DSC1_log01.log
log_path = +DMLOG/log/DSC1_log02.log
[DSC2] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /home/dmdba/config/dsc2
port_num = 5236
mal_host = 192.168.137.181
mal_port = 9236
log_path = +DMLOG/log/DSC2_log01.log
log_path = +DMLOG/log/DSC2_log02.log
初始化实例,节点 1 使用 dmdba 用户执行以下命令:
./dminit control=/home/dmdba/config/dminit.ini
初始化完成后会在 init 控制文件配置的目录下生成 2 个实例的配置文件
将 dsc2 目录复制到节点 2 上对应的目录下。
scp -r dsc2 192.168.137.181:/home/dmdba/config/
4.4 注册服务
注册服务
以上启动方式为前台启动,仅用于验证集群配置过程。配置成功后需要注册为系统服务,方便启动和关闭集群,以及实现开机自动启动。
2 个节点都需要注册,使用 root 用户执行,到数据库安装目录的 script/root 目录。
节点 1 执行以下命令:
./dm_service_installer.sh -t dmcss -p css -dcr_ini /home/dmdba/config/dmdcr.ini
节点执行节点1相同命令即可
关闭前台启动的 css,以服务方式启动 css。
节点 1 执行以下命令:
systemctl start DmCSSServicecss1
节点 2 执行以下命令:
systemctl start DmCSSServicecss2
验证集群状态
配置监视器查看
任意节点新建监视器配置文件,执行以下命令:
vi /home/dmdba/config/dmcssm.ini
添加以下内容:
#和 dmdcr_cfg.ini 中的 DCR_OGUID 保持一致
CSSM_OGUID = 63635
#配置所有 CSS 的连接信息,
#和 dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致
CSSM_CSS_IP = 192.168.137.180:9341
CSSM_CSS_IP = 192.168.137.181:9341
CSSM_LOG_PATH =/home/dmdba/dmdbms/log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 1024 #每个日志文件最大 1024 MB
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
启动监视器,dmdba 用户执行,到数据库软件安装目录 bin 下执行以下命令:
./dmcssm ini_path=/home/dmdba/config/dmcssm.ini
输入 show 命令,查看 css、asm 和 db 的状态。
以 db 为例,inst_status 字段为 OPEN,vtd_status 字段为 WORKING,active 字段为 TRUE 说明 db 服务正常。
4.5 客户端验证
任意节点配置 dm_svc.conf 文件,执行以下命令:
vi /etc/dm_svc.conf
添加以下内容:
dmdsc=(192.168.137.180:5236,192.168.137.181:5236)
使用 disql 工具登录集群(数据库安装目录的 bin 下):
disql SYSDBA/SYSDBA@dmdsc
查询视图 v$dsc_ep_info,查看集群状态,执行以下命令:
select * from v$dsc_ep_info;
5、集群管理
5.1 重启集群
关闭数据库:监视器中执行 ep stop dsc
关闭 asm:监视器中执行 ep stop asm
关闭 css:各节点关闭各自的 css 服务 systemctl stop DmCSSServicecss1/DmCSSServicecss2
启动 css: 各节点启动各自的 css 服务 systemctl start DmCSSServicecss1/DmCSSServicecss2
启动 asm:配置了自动拉起,等待 asm 自动启动
启动数据库:配置了自动拉起,等待数据库自动启动
5.2 归档配置
生产环境必须开启归档日志,且必须限制归档日志保留量,限制方法:
设置归档空间大小限制即指定 SPACE_LIMIT 参数(单位是 MB)。
定期删除归档日志(设置定时作业)。
共享存储集群归档需要配置本地归档和远程归档(保证每个节点都有所有归档日志)。
实例 dsc1 上配置,执行以下命令:
alter database mount;
alter database archivelog;
alter database add archivelog 'DEST=/home/dmdba/dmarch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=102400';
alter database add archivelog 'DEST=dsc2, TYPE=REMOTE, FILE_SIZE=1024, SPACE_LIMIT=102400, INCOMING_PATH=/home/dmdba/remote_arch';
alter database open;
实例 dsc2 上配置,执行以下命令:
alter database mount;
alter database archivelog;
alter database add archivelog 'DEST=/home/dmdba/dmarch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=102400';
alter database add archivelog 'DEST=dsc1, TYPE=REMOTE, FILE_SIZE=1024, SPACE_LIMIT=102400, INCOMING_PATH=/home/dmdba/remote_arch';
alter database open;
更多资料,请查阅官方网站:https://eco.dameng.com