共享存储上的数据非常宝贵,为了保障这些数据的安全性和高可用性,达梦提供了 DMASM 镜像功能。镜像是 DMASM 的一个重要功能。 DMASM 镜像提供了多副本和条带化功能。多副本技术保证同一数据的多个副本会分别 写入到不同的磁盘中。多个副本中只有一个作为主副本对外提供服务,其余副本均作为镜像 副本。当主副本发生故障后,系统会从镜像副本中重新自动挑选一个继续提供服务。条带化 技术可保证写入的数据均匀分布到磁盘组内的不同磁盘中,实现负载均衡。 DMDSC 采用配置镜像功能的 DMASM 管理的块设备作为共享存储,当出现磁盘损坏或 数据丢失时,既可以利用其他镜像副本继续提供数据库服务,又可以使用其他镜像副本进行数据恢复,以下基于DMASM镜像功能进行部署2副本的DSC集群。
IP规划:
端口规划:
目录规划:(
创建目录owner为dmdba组为dinstall)
共享磁盘规划:
使用root用户挂载数据库软件的iso文件:
mkdir -p /dmiso
mount -o loop dm8_xxx.iso /dmiso
使用dmdba用户安装软件:
执行以下命令,切换到 /dmiso 目录下执行 DMInstall.bin 文件开始安装,选择【-i】参数以命令行方式安装。
su - dmdba
cd /dmiso
./DMInstall.bin -i
选择安装程序的语言 c/C 为中文,e/E 为英文。
提示是否安装 key 文件,输入 N 跳过。
选择时区,21 即东 8 区。
选择安装类型,默认典型安装(包含所有内容)。
选择软件安装目录,默认/home/dmdba/dmdbms
确认安装
安装完成提示使用root执行脚本:
/home/dmdba/dmdbms/script/root/root_installer.sh
vi /etc/udev/rules.d/60-raw.rules (两节点一致)
KERNEL=="dm-*", ENV{DM_UUID}=="mpath-36000c296475d544501ec24d1128733e5",RUN+="/usr/bin/raw /dev/raw/raw1 %M %m"
KERNEL=="dm-*", ENV{DM_UUID}=="mpath-36000c292fb5b4e8dd649e03e2949d535",RUN+="/usr/bin/raw /dev/raw/raw2 %M %m"
KERNEL=="dm-*", ENV{DM_UUID}=="mpath-36000c2978a80135c33d58a2b9f9198e3",RUN+="/usr/bin/raw /dev/raw/raw3 %M %m"
KERNEL=="dm-*", ENV{DM_UUID}=="mpath-36000c2999a018026e1d9a21221a63e38",RUN+="/usr/bin/raw /dev/raw/raw4 %M %m"
KERNEL=="dm-*", ENV{DM_UUID}=="mpath-36000c295a2d5a584082dfa6a44aea30e",RUN+="/usr/bin/raw /dev/raw/raw5 %M %m"
KERNEL=="dm-*", ENV{DM_UUID}=="mpath-36000c290aceae1e9fec3c23a31af21a5",RUN+="/usr/bin/raw /dev/raw/raw6 %M %m"
KERNEL=="dm-*", ENV{DM_UUID}=="mpath-36000c2941952d7efa60ddc6063a21f57",RUN+="/usr/bin/raw /dev/raw/raw7 %M %m"
KERNEL=="dm-*", ENV{DM_UUID}=="mpath-36000c29e40d79c21042198e23c2ecc37",RUN+="/usr/bin/raw /dev/raw/raw8 %M %m"
KERNEL=="dm-*", ENV{DM_UUID}=="mpath-36000c29fad283c0de0337ebfa5a2db52",RUN+="/usr/bin/raw /dev/raw/raw9 %M %m"
ACTION=="add", KERNEL=="raw[1-9]", OWNER="dmdba", GROUP="dinstall", MODE="660"
执行命令生效:
/sbin/udevadm control --reload-rules
systemctl restart systemd-udev-trigger.service
vi /home/dmdba/conf/dmdcr_cfg.ini
DCR_N_GRP= 3
DCR_DISK_LOAD_PATH = /dev/raw
DCR_OGUID= 509317566
[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 = 192.168.253.134
DCR_EP_PORT = 7436
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.253.137
DCR_EP_PORT = 7436
[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= 54730
DCR_EP_SHM_SIZE= 512
DCR_EP_HOST= 192.168.253.134
DCR_EP_PORT= 7336
[GRP_ASM]
DCR_EP_NAME= ASM1
DCR_EP_SHM_KEY= 54731
DCR_EP_SHM_SIZE= 512
DCR_EP_HOST= 192.168.253.137
DCR_EP_PORT= 7336
[GRP]
DCR_GRP_TYPE= DB
DCR_GRP_NAME= GRP_DSC
DCR_GRP_N_EP= 2
DCR_GRP_DSKCHK_CNT= 60
[GRP_DSC]
DCR_EP_NAME= DSC01
DCR_EP_SEQNO= 0
DCR_EP_PORT= 5236
DCR_CHECK_PORT= 7236
[GRP_DSC]
DCR_EP_NAME= DSC02
DCR_EP_SEQNO= 1
DCR_EP_PORT= 5236
DCR_CHECK_PORT= 7236
进入dmasmcmdm操作界面:
dmasmcmdm
create dcrvdisk '/dev/raw/raw1' 'dcrv1'
create dcrvdisk '/dev/raw/raw2' 'dcrv2'
create dcrvdisk '/dev/raw/raw3' 'dcrv3'
create asmdisk '/dev/raw/raw4' 'log1'
create asmdisk '/dev/raw/raw5' 'data1'
create asmdisk '/dev/raw/raw6' 'log2'
create asmdisk '/dev/raw/raw7' 'data2'
create asmdisk '/dev/raw/raw8' 'data3'
create asmdisk '/dev/raw/raw9' 'data4'
#创建系统盘组:
CREATE SYSTEM DISKGROUP ASMDISK '/dev/raw/raw1' ,'/dev/raw/raw2','/dev/raw/raw3' ATTRIBUTE CONFIG='/home/dmdba/conf/dmdcr_cfg.ini', passwd='123456'
vi /home/dmdba/conf/dmasvrmal.ini (两节点一致)
[MAL_INST1]
MAL_INST_NAME= ASM0
MAL_HOST= 192.168.253.134
MAL_PORT= 7536
[MAL_INST2]
MAL_INST_NAME= ASM1
MAL_HOST= 192.168.253.137
MAL_PORT= 7536
节点1:
vi /home/dmdba/conf/dmdcr.ini
DMDCR_PATH= /dev/raw
DMDCR_SEQNO= 0
DMDCR_MAL_PATH= /home/dmdba/conf/dmasvrmal.ini
DMDCR_ASM_RESTART_INTERVAL= 0
DMDCR_ASM_STARTUP_CMD= /home/dmdba/dmdbms/bin/dmasmsvrm DCR_INI=/home/dmdba/conf/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL= 0
DMDCR_DB_STARTUP_CMD= /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/conf/DSC01_conf/dm.ini
DMDCR_IPC_CONTROL = 2
节点2:
vi /home/dmdba/conf/dmdcr.in
DMDCR_PATH= /dev/raw
DMDCR_SEQNO= 1
DMDCR_MAL_PATH= /home/dmdba/conf/dmasvrmal.ini
DMDCR_ASM_RESTART_INTERVAL= 0
DMDCR_ASM_STARTUP_CMD= /home/dmdba/dmdbms/bin/dmasmsvrm DCR_INI=/home/dmdba/conf/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL= 0
DMDCR_DB_STARTUP_CMD= /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/conf/DSC02_conf/dm.ini
DMDCR_IPC_CONTROL = 2
两节点分别前台启动css:
dmcss dcr_ini=/home/dmdba/conf/dmdcr.ini
两节点分别前台启动asm服务
dmasmsvrm dcr_ini=/home/dmdba/conf/dmdcr.ini
1节点进入dmasmtoolm 并创建磁盘组
dmasmtoolm dcr_ini=/home/dmdba/conf/dmdcr.ini
磁盘组采用MORMAL,即2副本,每个磁盘组2个故障组:
CREATE DISKGROUP 'DMLOG' NORMAL REDUNDANCY FAILGROUP 'log1' asmdisk '/dev/raw/raw4' failgroup 'log2' asmdisk '/dev/raw/raw6' attribute au_size=4, redo_size=128
CREATE DISKGROUP 'DMDATA' NORMAL REDUNDANCY FAILGROUP 'data1' asmdisk '/dev/raw/raw5' failgroup 'data2' asmdisk '/dev/raw/raw7' attribute au_size=4, redo_size=128
1节点新建dminit.ini
vi /home/dmdba/conf/dminit.ini
DB_NAME= dameng
SYSTEM_PATH= +DMDATA/data
SYSTEM= +DMDATA/data/dameng/system.dbf
SYSTEM_SIZE= 128
ROLL= +DMDATA/data/dameng/roll.dbf
ROLL_SIZE= 128
MAIN= +DMDATA/data/dameng/main.dbf
MAIN_SIZE= 128
CTL_PATH= +DMDATA/data/dameng/dm.ctl
LOG_SIZE= 256
DCR_PATH= /dev/raw
DCR_SEQNO= 0
AUTO_OVERWRITE= 2
PAGE_SIZE = 16
EXTENT_SIZE = 16
DATA_MIRROR = 2
LOG_MIRROR = 2
DATA_STRIPING = 32
LOG_STRIPING = 32
[DSC01]
CONFIG_PATH= /home/dmdba/conf/DSC01/
PORT_NUM = 5236
MAL_HOST= 192.168.253.134
MAL_PORT= 7636
LOG_PATH= +DMLOG/log/DSC01_log1.log
LOG_PATH= +DMLOG/log/DSC01_log2.log
[DSC02]
CONFIG_PATH= /home/dmdba/conf/DSC02
PORT_NUM = 5236
MAL_HOST= 192.168.253.137
MAL_PORT= 7636
LOG_PATH= +DMLOG/log/DSC02_log1.log
LOG_PATH= +DMLOG/log/DSC02_log2.log
vi /home/dmdba/conf/dmcssm.ini (两节点一致)
CSSM_OGUID = 509317566
CSSM_CSS_IP = 192.168.253.134:7436
CSSM_CSS_IP = 192.168.253.137:7436
CSSM_LOG_PATH = /home/dmdba/log
CSSM_LOG_FILE_SIZE = 32
CSSM_LOG_SPACE_LIMIT = 0
1节点:
dminit control=/home/dmdba/conf/dminit.ini
初始化成功后把配置文件/home/dmdba/conf/DSC02发送到2节点
通过前台启动数据库服务并进行登录验证数据库是否正常
1节点:
dmserver dcr_ini=/home/dmdba/conf/dmdcr.ini /home/dmdba/conf/DSC01/dm.ini
2节点:
dmserver dcr_ini=/home/dmdba/conf/dmdcr.ini /home/dmdba/conf/DSC02/dm.ini
使用root
cd /home/dmdba/dmdbms/script/root
注册css服务,两节点一致:
./dm_service_installer.sh -t dmcss -p dmcss -dcr_ini /home/dmdba/conf/dmdcr.ini
注册asm服务两节点一致:
./dm_service_installer.sh -t dmasmsvrm -p dmasmsvrm -dcr_ini /home/dmdba/conf/dmdcr.ini -y DmCSSServicedmcss.service
注册dbserver服务:
1节点:
./dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /home/dmdba/conf/DSC01/dm.ini -dcr_ini /home/dmdba/conf/dmdcr.ini -y DmASMSvrServiceasmsvr.service
2节点:
./dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /home/dmdba/conf/DSC02/dm.ini -dcr_ini /home/dmdba/conf/dmdcr.ini -y DmASMSvrServiceasmsvr.service
停止前面所有前台运行的服务后通过服务进行数据库启动:
1、2节点先后启动css服务:
DmCSSServicedmcssstart start
1、2节点先后启动asm服务:
DmASMSvrServiceasmsvr start
1、2节点先后启动dbserver服务
DmServiceDMSERVER start
登录dmcssm进行查看集群状态:
dmcssm /home/dmdba/conf/dmcssm.ini
登录dmasmtoolm :
dmasmtoolm dcr_ini=/home/dmdba/conf/dmdcr.ini
进行增加磁盘:
--把/dev/raw/raw8加入到磁盘组DMDATA中的故障组data2中
ALTER DISKGROUP 'DMDATA' ADD FAILGROUP 'data2' ASMDISK '/dev/raw/raw8'
--增加后重平衡
alter diskgroup 'DMDATA' rebalance disk 'DMASMdata3' power 8
lsdsk查看磁盘是否成功增加:
登录数据库数据库查看平衡进度,返回0行则平衡完成
SELECT * FROM v$asm_operation;
注:只能删除未被使用的磁盘
登录dmasmtoolm :
dmasmtoolm dcr_ini=/home/dmdba/conf/dmdcr.ini
进行磁盘删除:
--删除/dev/raw/raw7
alter diskgroup 'DMDATA' drop asmdisk '/dev/raw/raw8'
--删除后重平衡
alter diskgroup 'DMDATA' fail disk rebalance start power 8
lsdsk查看磁盘是否成功删除:
登录数据库数据库查看平衡进度,返回0行则平衡完成:
登录dmasmtoolm :
dmasmtoolm dcr_ini=/home/dmdba/conf/dmdcr.ini
进行磁盘替换:
--/dev/raw/raw9替换/dev/raw/raw7,对应asm磁盘名DMASMdata1
alter diskgroup 'DMDATA' replace disk 'DMASMdata1' with '/dev/raw/raw9'
--替换后重平衡
ALTER DISKGROUP DMDATA FAIL DISK REBALANCE START power 8
lsdsk查看磁盘是否成功替换:
模拟数据库在使用的时候其中一个磁盘突然离线对数据库影响
使用jimter模拟持续写入:
对1节点/dev/raw/raw5模拟离线,使用root执行命令
echo 1 | sudo tee /sys/block/sdj/device/delete
此时1节点sdj磁盘消失:
asm日志出现磁盘离线报错
登录dmasmtoolm 查看磁盘状态是offline状态
dmcssm观察数据库集群状态并无异常
查看压测运行结果,成功率100%:
查看响应时间平稳无明显波动未受磁盘离线影响
操作系统先进行磁盘恢复,使用root执行
echo "- - -" | sudo tee /sys/class/scsi_host/host*/scan
dmasmtoolm恢复asm磁盘进行online
alter diskgroup 'DMDATA' online disk 'DMASMdata1' with '/dev/raw/raw5'
查看磁盘 '/dev/raw/raw5’状态为NORMAL,已完成恢复
文章
阅读量
获赞