一、概述
DMDSC集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。DMDSC支持故障自动切换和故障自动重加入,某一个数据库实例故障后,不会导致数据库服务无法提供。
二、DMDSC主要特点
1、 高可用性 只要集群中有一个活动节点,就能正常提供数据库服务。此外,当出现磁盘损坏或数据丢失时,既可以利用其他镜像副本继续提供数据库服务,又可以使用其他镜像副本进行数据恢复。
2、高吞吐量 多个节点同时提供数据库服务,有效提升集群的整体事务处理能力。
3、负载均衡 一方面,通过巧用服务名,用户的连接请求被平均分配到集群中的各个节点,确保连接负载平衡;另一方面,条带化技术可保证写入的数据均匀分布到磁盘组内的不同磁盘中,实现数据负载均衡。
DM8中,新增加了监视器的功能。需要注意的是DSC中的监视器与DM实时主备或读写分离集群中的监视器不同,没有确认监视器与非确认监视器,同一个DMDSC集群中,允许最多同时启动10个监视器,建议监视器放在独立的第三方机器上,避免由于节点间网络不稳定等原因导致监视器误判节点故障。下面开始创建共享磁盘,搭建DSC集群。
三、搭建DSC集群
3.1 关闭防火墙
3.2 添加共享磁盘
1、VMware虚拟机创建共享磁盘:
C:\Program Files (x86)\VMware\VMware Workstation>vmware-vdiskmanager.exe -c -s 20GB -a lsilogic -t 2 "D:\shared\test-DSC-20G.vmdk"
2、修改相关虚拟机文件
两台虚拟机添加的vmx文件下都添加一下信息:
disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "10240"
diskLib.maxUnsyncedWrites = "0"
scsi1:0.deviceType = "disk"
scsi1:1.deviceType = "disk"
scsi1:2.deviceType = "disk"
scsi1:3.deviceType = "disk"
scsi1.sharedBus = "VIRTUAL"
查看磁盘信息:
注:两台虚拟机在添加共享磁盘将两台scsi设置成一样的
可能会遇到问题:
解决方案:将所提示路径*.lck结尾文件全部删除
3.3 进行裸设备划分
注意:只需要在一台机器上操作
输入 fdisk /dev/sdb
依次输入 n → p → 1 →回车→ +100M →回车,完成第一块磁盘划分
依次输入 n → p → 2 →回车→ +100M →回车,完成第二块磁盘划分
依次输入 n → p → 3 →回车→ +2048M →回车,完成第三块磁盘划分
依次输入 n → p →回车→回车,完成第四块磁盘划分
w保存配置并退出 fdisk -l或者lsblk可以查看分区是否成功
3.4 绑定裸设备
1、编辑/etc/udev/rules.d/70-raw.rules文件
注:两节点均需配置
2、编辑之后,保存退出。两节点均需执行以下命令完成裸设备的绑定或者重启机器:
partprobe /dev/sdb
/sbin/udevadm control --reload
注:partprobe可以在不重启的情况下重读分区。将磁盘分区表变化信息通知内核,请求操作系统重新加载分区表。
3、完成裸设备绑定后,进行检查好两节点是否同步
blockdev --getsize64 /dev/raw/raw1、2、3、4
3.5 安装数据库软件
1、创建用户组及用户和数据库目录
groupadd dinstall
useradd dmdba -g dinstall
passwd dmdba
mkdir /data/dmdata -p
chown dmdba:dinstall /data -R
注:两节点均需安装但不进行实例初始化步骤
步骤省略
3.6 配置dmdcr_cfg.ini文件
提示:所有配置文件均放在:/home/dmdba/config/目录下
使用 dmdba用户,进行编辑配置文件
配置文件内容如下:
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/raw/raw2 ##规划的vote盘
DCR_OGUID = 63635 ## DMCSSM 登录DMCSS 消息校验用
[GRP]
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = GRP_CSS ##CSS服务组名,规则要求
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60 ##参数的标准配置规范
[GRP_CSS] ##与CSS [GRP]标签配置中的DCR_GRP_NAME保持一致
DCR_EP_NAME = CSS0 ##节点CSS服务名
DCR_EP_HOST = 192.168.233.104 #心跳ip
DCR_EP_PORT = 5230 ##端口使用规范
[GRP_CSS] ##与[GRP]标签配置中的DCR_GRP_NAME保持一致
DCR_EP_NAME = CSS1 ##节点CSS服务名
DCR_EP_HOST = 192.168.233.105 #心跳ip
DCR_EP_PORT = 5230
[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = GRP_ASM ##ASM服务组名
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_ASM] ##与ASM [GRP]标签配置中的DCR_GRP_NAME保持一致
DCR_EP_NAME = ASM0 ##节点ASM服务名
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 10 #共享内存大小,每10M管理600G的ASM磁盘空间,初始化配置100,可管理6T
DCR_EP_HOST = 192.168.233.104 #心跳ip
DCR_EP_PORT = 5231
DCR_EP_ASM_LOAD_PATH = /dev/raw/
[GRP_ASM] ##与ASM [GRP]标签配置中的DCR_GRP_NAME保持一致
DCR_EP_NAME = ASM1 ##节点ASM服务名
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10 #共享内存大小,每10M管理600G的ASM磁盘空间,初始化配置100,可管理6T
DCR_EP_HOST = 192.168.233.105 #心跳ip
DCR_EP_PORT = 5231
DCR_EP_ASM_LOAD_PATH = /dev/raw ##规划的磁盘目录
[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_DAMENG ##DB服务组名
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_DAMENG]
DCR_EP_NAME = DAMENG0
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
[GRP_DAMENG]
DCR_EP_NAME = DAMENG1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9742
注:
- 不同节点服务器间对应的DCR_EP_PORT端口可以相同,但是两个服务器配的ASM的DCR_EP_SHM_KEY不能相同。
- dmdcr_cfg.ini只需在一个节点配置,后续DMASMCMD工具执行 init 语句会使用到。本集群在dsc1 节点上进行操作
3.7 使用DMASMCMD工具进行初始化
只在一台机器上执行即可,此处dmdcr_cfg.ini配置文件在主节点dsc1上,所以执行初始化,也在dsc1完成即可。
执行初始化:
/home/dmdba/dmdbms/bin/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 '/home/dmdba/config/dmdcr_cfg.ini'identified by 'abcd'
init votedisk '/dev/raw/raw2' from '/home/dmdba/config/dmdcr_cfg.ini'
注:
- 需切换dmdba用户,且只在dsc1节点上执行。
- 进行初始化之前对dmdba用户进行授权,不进行授权,执行初始化操作只能用 root用户进行,此操作后,使用dmdba用户进行初始化即可。
3.8 配置dmasvrmal.ini文件
vi /home/dmdba/config/dmasvrmal.ini
文件内容如下:
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.233.104
MAL_PORT = 5233
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.233.105
MAL_PORT = 5234
将dmasvrmal.ini文件拷贝给dsc2节点:
scp dmasvrmal.ini dmdba@192.168.233.105: /home/dmdba/config
注:所有节点dmasvrmal.ini配置文件需保持一致。
3.9 配置dmdcr.ini文件
提示:两个节点分别配置dmdcr.ini,dmdcr_path相同, dmdcr_seqo分别为0和1
1、主节点dsc1的dmdcr.ini(控制节点)
vi /home/dmdba/config/dmdcr.ini
文件内容如下:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/dmdba/config/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_AUTO_OPEN_CHECK = 90
##ASM重启参数,命令行方式启动
##DMDCR_ASM_RESTART_INTERVAL = 71
##DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmASMSvrServiceASM0 start ##服务名与注册的服务名保持一致
##DB重启参数,命令行方式启动
##DMDCR_DB_RESTART_INTERVAL = 81
##DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmServiceDAMENG0 start
2、主节点dsc2的dmdcr.ini(普通节点)
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/dmdba/config/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_AUTO_OPEN_CHECK = 90
##ASM重启参数,命令行方式启动
##DMDCR_ASM_RESTART_INTERVAL = 71
##DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmASMSvrServiceASM1 start ##服务名与注册的服务名保持一致
##DB重启参数,命令行方式启动
##DMDCR_DB_RESTART_INTERVAL = 81
##DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmServiceDAMENG1 start
注:如果DMDCR_DB_RESTART_INTERVAL/DMDCR_ASM_RESTART_INTERVAL配置为 0,则不会执行自动拉起操作,默认为 60s。
配置过程中dmdcr.ini中先不将ASM服务和DMSERVER自动拉起,配置过程中先手动启动DMCSS、DMASM、DMSERVER服务,待所有配置都完成后,再修改dmdcr.ini将ASM服务和DMSERVER服务配置成自动拉起。
3.10 配置监控器dmcssm.ini
配置内容如下,两节点配置文件相同
CSSM_OGUID = 63635 #和 dmdcr_cfg.ini 中的 DCR_OGUID 保持一致
CSSM_CSS_IP = 192.168.233.104:5230 #与DMDCR_CFG.INI中CSS配置项的DCR_EP_HOST和DCR_EP_PORT保持一致
CSSM_CSS_IP = 192.168.233.105:5230 #与DMDCR_CFG.INI中CSS配置项的DCR_EP_HOST和DCR_EP_PORT保持一致
CSSM_LOG_PATH =/home/dmdba/dmdbms/log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 256 #每个日志文件大小上限
CSSM_LOG_SPACE_LIMIT = 1024 #限定日志文件总占用空间
3.11 启动DMCSS和DMASM服务
dsc1和dsc2节点均在dmdba用户下执行(手动启动DMASM服务):
1、手动启动CSS服务
cd /home/dmdba/dmdbms/bin
./dmcss DCR_INI=/home/dmdba/config/dmdcr.ini/
2、手动启动ASM服务
cd /home/dmdba/dmdbms/bin
./dmasmsvr DCR_INI=/home/dmdba/config/dmdcr.ini
3.12 创建DMASM磁盘组
注:选择一个节点执行即可,本次操作在dsc1节点
su – dmdba
cd /home/dmdba/dmdbms/bin
./dmasmtool DCR_INI=/home/dmdba/config/dmdcr.ini
执行:
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3' --创建日志磁盘组
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4' --创建数据磁盘组
注:创建成功后可以在之前的两台主机ASM服务窗口中查看到信息
cd /home/dmdba/dmdbms/bin
./dmasmcmd
ASM > listdisks /dev/raw
3.13 配置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
ctl_size = 8
log_size = 256
dcr_path = /dev/raw/raw1
dcr_seqno = 0
auto_overwrite = 1
[DAMENG0]
config_path = /data/dmdata/DAMENG0_config
port_num = 5236
mal_host = 192.168.233.104
mal_port = 9340
log_path = +DMLOG/DAMENG0_log01.log
log_path = +DMLOG/DAMENG0_log02.log
[DAMENG1]
config_path = /data/dmdata/DAMENG1_config
port_num = 5237
mal_host = 192.168.233.105
mal_port = 9341
log_path = +DMLOG/DAMENG1_log01.log
log_path = +DMLOG/DAMENG1_log02.log
注:只需要一个节点创建即可,此处在dsc1节点创建
3.14 dmini初始化数据库
在dsc1节点执行:
cd /home/dmdba/dmdbms/bin
./dminit control= /home/dmdba/config/dminit.ini
执行完毕可以看到/data/dmdata/目录生成两个文件夹,因为是dsc1节点进行初始化,所以将DAMENG1_config传输至dsc2节点的/data/dmdata目录下。并将dsc1节点DAMENG1_config文件删除或者重命名。
scp -r DAMENG1_config dmdba@192.168.233.105:/data/dmdata
注:传输之后需要看下dsc2节点的/data/dmdata目录下DAMENG1_config文件属组属主及权限。
3.15 启动实例
dsc1节点:
cd /home/dmdba/dmdbms/bin
./dmserver /data/dmdata/DAMENG0_config/dm.ini dcr_ini=
/home/dmdba/config/dmdcr.ini
dsc2节点:
cd /home/dmdba/dmdbms/bin
./dmserver /data/dmdata/DAMENG1_config/dm.ini dcr_ini=/home/dmdba/config/dmdcr.ini
查看集群信息:
/home/dmdba/dmdbms/bin/disql SYSDBA/SYSDBA
Select * from v$dsc_ep_info;
3.16 切换root用户进行注册服务
1、停止数据库服务及ASM、CSS服务。Ctrl+c或者exit
2、注册CSS服务
dsc1节点:
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmcss -p CSS0 -dcr_ini /home/dmdba/config/dmdcr.ini
关闭开机自启
systemctl disable DmCSSServiceCSS0
dsc2节点:
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmcss -p CSS1 -dcr_ini /home/dmdba/config/dmdcr.ini
关闭开机自启
systemctl disable DmCSSServiceDMCSS1
3、注册ASM服务
dsc1节点:
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmasmsvr -p ASM0 -dcr_ini /home/dmdba/config/dmdcr.ini -y DmCSSServiceCSS0
关闭开机自启
systemctl disable DmASMSvrServiceDMASM0.service
dsc2节点:
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmasmsvr -p ASM1 -dcr_ini /home/dmdba/config/dmdcr.ini -y DmCSSServiceCSS1
关闭开机自启
systemctl disable DmASMSvrServiceASM1.service
4、注册SERVER服务
dsc1节点:
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmserver -p DAMENG0 -dm_ini /data/dmdata/DAMENG0_config/dm.ini -y DmASMSvrServiceASM0 -dcr_ini /home/dmdba/config/dmdcr.ini
关闭开机自启
systemctl disable DmServiceDAMENG0
dsc2节点:
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmserver -p DAMENG1 -dm_ini /data/dmdata/DAMENG1_config/dm.ini -y DmASMSvrServiceASM1 -dcr_ini /home/dmdba/config/dmdcr.ini
关闭开机自启
systemctl disable DmServiceDAMENG1
注:注册完成服务,请将dmdcr.ini文件注释的ASM和DB服务注释部分取消,重启路径中实例名修改注册的服务名。
3.17 DMDSC启动、关闭流程
启动顺序:
DMCSS—>DMASMSVR—>DMSERVICE
关闭顺序:
DMSERVICE—>DMASMSVR—>DMCSS。
四 故障及修复
4.1监听端口报错
1、报错信息:
dmcss startup failed,[CODE:-1],error info:css_lsnr_create_sock failed, code:[-1]
2、解决方案:
(1)查看服务是否启动systemctl status DmCSSServiceCSS0,若没有启动则先启动服务。
(2)查看端口占用情况 netstat -ntulp | grep 9341。
若被占用,则查看占用端口的进程号lsof -i :9341
杀死对应进程 kill -9 PID
(3)查看防火墙和访问控制 getenforce
4.2 CSS启动失败
1、问题描述
注册服务后启动CSS服务失败,手动启动也是失败。
2、解决方案
(1)看报错提示,简单错误可以直接解决。
(2)跳转到日志文件路径下,查看最新生成的相关的志文件,主要关注 error 和 warning 信息。
(3)查看防火墙和访问控制。
(4)检查配置文件。
(5)检查文件权限。
(6)先启动一个节点在启动另外的节点,避免争夺控制节点。
4.3 ASM连接异常
1、问题描述
dmasm api init failed,[code:-11041] ASM connection exception
2、解决方案
(1)查看磁盘分区是否错误。
cd /home/dmdba/dmdbms/bin
./dmasmcmd
ASM > listdisks /dev/raw
(2)查看CSS服务和ASM服务是否开启。
(3)查看防火墙是否关闭
(4)检查配置文件、端口、外部虚拟机的磁盘与网卡等。
社区地址:https://eco.dameng.com