注册
DSC基于镜像部署
专栏/技术分享/ 文章详情 /

DSC基于镜像部署

默默向上游 2024/10/25 1020 3 0
摘要

共享存储上的数据非常宝贵,为了保障这些数据的安全性和高可用性,达梦提供了 DMASM 镜像功能。镜像是 DMASM 的一个重要功能。 DMASM 镜像提供了多副本和条带化功能。多副本技术保证同一数据的多个副本会分别 写入到不同的磁盘中。多个副本中只有一个作为主副本对外提供服务,其余副本均作为镜像 副本。当主副本发生故障后,系统会从镜像副本中重新自动挑选一个继续提供服务。条带化 技术可保证写入的数据均匀分布到磁盘组内的不同磁盘中,实现负载均衡。 DMDSC 采用配置镜像功能的 DMASM 管理的块设备作为共享存储,当出现磁盘损坏或 数据丢失时,既可以利用其他镜像副本继续提供数据库服务,又可以使用其他镜像副本进行数据恢复,以下基于DMASM镜像功能进行部署2副本的DSC集群。

1 部署规划

IP规划:
image.png
端口规划:
image.png
目录规划:(
创建目录owner为dmdba组为dinstall)
image.png
共享磁盘规划:
image.png

2 数据库软件安装

使用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

DSC搭建

3.1 绑定共享存储

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

3.1配置dmdcr_cfg.ini

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

3.2磁盘初始化

进入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'

3.3配置dmasvrmal

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

3.4配置dmdcr.ini

节点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

3.5创建asm磁盘组

两节点分别前台启动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

3.6配置dminit.ini

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

3.7配dmcssm.ini

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

3.8初始化数据库

1节点:

dminit control=/home/dmdba/conf/dminit.ini

image.png

初始化成功后把配置文件/home/dmdba/conf/DSC02发送到2节点

3.9启动数据库

通过前台启动数据库服务并进行登录验证数据库是否正常
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

3.10注册服务

使用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

3.11启动数据库

停止前面所有前台运行的服务后通过服务进行数据库启动:
1、2节点先后启动css服务:

DmCSSServicedmcssstart start

1、2节点先后启动asm服务:

DmASMSvrServiceasmsvr start

1、2节点先后启动dbserver服务

DmServiceDMSERVER  start

登录dmcssm进行查看集群状态:

dmcssm  /home/dmdba/conf/dmcssm.ini

image.png

4 asm磁盘测试

4.1磁盘增加

登录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查看磁盘是否成功增加:

image.png

登录数据库数据库查看平衡进度,返回0行则平衡完成

 SELECT * FROM v$asm_operation;

4.2磁盘删除

注:只能删除未被使用的磁盘
登录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查看磁盘是否成功删除:
image.png

登录数据库数据库查看平衡进度,返回0行则平衡完成:

4.3磁盘替换

登录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查看磁盘是否成功替换:
image.png

5 磁盘故障模拟测试

模拟数据库在使用的时候其中一个磁盘突然离线对数据库影响

5.1模拟业务持续写入

使用jimter模拟持续写入:
image.png
image.png

5.2模拟出现掉盘情况

对1节点/dev/raw/raw5模拟离线,使用root执行命令

echo 1 | sudo tee /sys/block/sdj/device/delete

此时1节点sdj磁盘消失:
image.png

asm日志出现磁盘离线报错
image.png

登录dmasmtoolm 查看磁盘状态是offline状态
image.png

dmcssm观察数据库集群状态并无异常
image.png

查看压测运行结果,成功率100%:
image.png

查看响应时间平稳无明显波动未受磁盘离线影响
image.png

5.2对磁盘进行恢复

操作系统先进行磁盘恢复,使用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,已完成恢复
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服