DM 共享存储数据库集群(DSC)
- 概述
DMDSC 集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同 一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。
DMDSC 集群主要由数据库和数据库实例、共享存储、本地存储、通信网络、以及集群控制软件 DMCSS组成。
- 相关知识点
共享存储
物理存储器中一段可由两个以上的进程共享的存储空间。共享存储段具有大小和物理存储地址。想要访问共享存储段的进程可以连接这段存储区域到自己的地址空间中任何适合的地方,其他进程也一样。这样,多个进程便可以访问相同的物理存储。
DMDSC 集群中,为了实现多个实例同时访问、修改数据,要求将数据文件、控制文件、日志文件保存在共享存储上。配置 DMDSC 集群需要的 DCR、Voting disk 必须保存在 DMASM 文件系统管辖范围之外的共享存储上。
集群控制
集群控制是集群系统的重要组成部分。DMCSS 就是一款集群控制软件,专门负责监控 集群中各个节点的运行状态。DMCSS 主要功能包括:管理集群的启动和关闭,控制节点故障处理,以及管理节点重加入流程.
业务网卡,虚拟内部网络
虚拟内部网络:内部网络用于数据库实例之间交换信息和数据,MAL 链路使用的就是内部网络
心跳网卡,虚拟专用网络
虚拟专用网络:公共网络用于对外提供数据库服务,用户使用公共网络地址登录 DMDSC 集群,访问数据库。
共享内存
共享内存是一种快速、高效的进程间通信手段。所谓共享内存,就是同一块物理内存被 映射到多个进程的地址空间,进程 A 可以即时看到进程 B 对共享内存的修改,反之亦然。 DMASM 服务器进程和 DMASM 客户端进程之间通过共享内存方式共享 DMASM 文件到实际磁 盘的映射关系。
VIP
是一个不与特定计算机或者计算机中的网络接口相连的IP地址。 数据包被发送到这个 VIP 地址,但是所有的数据还是经过真实的网络接口。在集群环境中, 应用通过 VIP 连接数据库服务器,实例故障后,把实例配置的 VIP 设置到其他活动节点(叫 做 IP 漂移),这样应用可以不用修改配置,继续访问数据库服务。
- 搭建
- 1、集群规划
A机器 | B机器 | |||
业务IP | 192.168.56.101 | 192.168.56.105 | ||
心跳IP | 192.168.56.101 | 192.168.56.105 | ||
软件目录 | /opt/dsc/setup | /opt/dsc/setup | ||
安装目录 | /opt/dsc/dmdbms | /opt/dsc/dmdbms | ||
配置文件目录 | /opt/dsc/config | /opt/dsc/config | ||
归档日志目录 | /opt/dsc/arch_0 | /opt/dsc/arch_1 | ||
远程归档目录 | /opt/dsc/arch_0_remote | /opt/dsc/arch_1_remote | ||
备份目录 | /opt/dsc/bak | /opt/dsc/bak | ||
dmdcr_cfg | CSS | DCR_EP_NAME | CSS0 | CSS1 |
DCR_EP_HOST | 192.168.56.101 | 192.168.56.105 | ||
DCR_EP_PORT | 5336 | 5337 | ||
ASM | DCR_EP_NAME | ASM0 | ASM1 | |
DCR_EP_HOST | 192.168.56.101 | 192.168.56.105 | ||
DCR_EP_PORT | 5436 | 5437 | ||
DB | DCR_EP_NAME | DSC0 | DSC1 | |
DCR_EP_PORT | 5236 | 5236 | ||
DCR_CHECK_PORT | 5536 | 5537 | ||
dmasvrmal | MAL_INST_NAME | ASM0 | ASM1 | |
MAL_HOST | 192.168.56.101 | 192.168.56.105 | ||
MAL_PORT | 5636 | 5637 | ||
dminit | PORT_NUM | 5236 | 5236 | |
MAL_HOST | 192.168.56.101 | 192.168.56.105 | ||
MAL_PORT | 5736 | 5737 | ||
归档上限 | 51200 | 51200 | ||
OGUID | 45331 |
说明:具体规划及部署方式以现场环境为准。
- 2、创建共享磁盘
测试操作系统为centos7.5两台机器IP分别为192.168.184.131(主节点dsc1),192.168.184.133 dsc2此次搭建DSC是测试环境,在虚拟机VM16.0pro上需要新建共享磁盘。
储存规划
用途 | 空间规划(总共6T) |
sdb1用于dcr信息 | 100M |
sdb2用于存放vote信息 | 100M |
sdb3用于存放redo log | 20480M |
sdb4用于存放data | 剩下的全部空间 |
使用fdisk /dev/sdb 命令进行分区操作
只需要再DSC1节点处划分
[root@~]# fdisk /dev/sdb
1) 依次输入 n p 1 回车 +100M,完成第一块磁盘划分
2) 依次输入 n p 2 回车 +100M,完成第二块磁盘划分
3) 依次输入 n p 3 回车 +20480M,完成第三块磁盘划分
4) 依次输入 n p 回车 回车 回车,完成第四块磁盘划分
5) 输入w命令,将裸设备划分的设置进行保存
输入fdisk -l查看是否同步
已同步
绑定设备
[root@~]# vi /etc/udev/rules.d/70-persistent-ipoib.rules
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdb3", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sdb4", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"
[root@~]# partprobe /dev/sdb
[root@~]# reboot
注意:可通过blockdev --getsize64 /dev/raw/raw1 、2、3、4命令分别查看设备大小。看是否对应
对应,证明划分正确
1. 搭建DSC
1. 改主机名1(2号机换成2)
[root@~]# hostname dmdsc01
[root@~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=dmdsc01
[root@~]# vi /etc/hostsname
dmdsc01
1. 关防火墙
[root@~]# systemctl stop firewalld
[root@~]# systemctl disable firewalld
[root@~]# systemctl status firewalld
1. 网卡自启
[root@~]# vi /etc/sysconfig/network-scripts/ifcfg-eth33
ONBOOT=yes
[root@~]# systemctl restart network
1. 创建用户、目录、安装数据库安装到/opt/dsc/dmdbms目录下
[root@~]# groupadd dinstall -g 2001;useradd -g dinstall dmdba -u 1001;passwd dmdba
[root@~]# mkdir -p /opt/dsc/setup /opt/dsc/dmdbms /opt/dsc/config /opt/dsc/arch_0 /opt/dsc/arch_0_remote /opt/dsc/bak
[root@~]# chown dmdba.dinstall /opt/dsc -R;chmod 777 /opt/dsc -R
[dmdba@~]# /opt/dsc/setup/DMInstall.bin -i
1. 创建dmdcr_cfg.ini(11、2配置相同)
DCR_N_GRP = 3 #集群环境有多少个GROUP,范围:1~16
DCR_VTD_PATH = /dev/raw/raw2
DCR_OGUID = 45331
[GRP] #新建一个GROUP
DCR_GRP_TYPE = CSS #组类型(CSS/ASM/DB)
DCR_GRP_NAME = GRP_CSS #组名
DCR_GRP_N_EP = 2 #组内节点个数
DCR_GRP_DSKCHK_CNT = 60 #磁盘心跳容错时间,单位:秒
[GRP_CSS]
DCR_EP_NAME = CSS0 #CSS节点名
DCR_EP_HOST = 192.168.56.101 #心跳地址
DCR_EP_PORT = 5336 #CSS端口
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST =192.168.56.105
DCR_EP_PORT = 5337
[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 #ASM节点名,和dmasvrmal的MAL_INST_NAME一致
DCR_EP_SHM_KEY = 93360 #共享内存标识
DCR_EP_SHM_SIZE = 10 #共享内存大小
DCR_EP_HOST = 192.168.56.101 #心跳地址
DCR_EP_PORT = 5436 #ASM端口
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.56.105
DCR_EP_PORT = 5437
DCR_EP_ASM_LOAD_PATH = /dev/raw
[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 = DSC0 #实例名,和dm.ini的INSTANCE_NAME一致
DCR_EP_SEQNO = 0 #组内序号,不能重复
DCR_EP_PORT = 5236 #实例端口,和dm.ini的PORT_NUM一致
DCR_CHECK_PORT = 5536 #DCR检查端口
[GRP_DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 5537
1. 初始化磁盘
1号机,在bin下面的./dmasmcmd
ASM> create dcrdisk '/dev/raw/raw1' 'dcr'
ASM> create votedisk '/dev/raw/raw2' 'vote'
ASM> create asmdisk '/dev/raw/raw3' 'LOG0'
ASM> create asmdisk '/dev/raw/raw4' 'DATA0'
ASM> init dcrdisk '/dev/raw/raw1' from '/opt/dsc/config/dmdcr_cfg.ini' identified by 'admin1234'
ASM> init votedisk '/dev/raw/raw2' from '/opt/dsc/config/dmdcr_cfg.ini'
1. 创建dmasvrmal.ini
两机器相同配置在/opt/dsc/config下
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.56.101 #心跳地址
MAL_PORT = 5636 #MAL监听端口
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.56.105
MAL_PORT = 5637
1. 创建dmdcr.ini
1号机
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /opt/dsc/config/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_AUTO_OPEN_CHECK = 90
#DMDCR_ASM_RESTART_INTERVAL = 30 #CSS认定ASM故障重启的时间
#DMDCR_ASM_STARTUP_CMD = /opt/dsc/dmdbms/bin/dmasmsvr dcr_ini=/opt/dsc/config/dmdcr.ini
#DMDCR_DB_RESTART_INTERVAL = 60 #CSS认定DSC故障重启的时间
#DMDCR_DB_STARTUP_CMD = /opt/dsc/dmdbms/bin/dmserver path=/opt/dsc/config/dsc0_config/dm.ini dcr_ini=/opt/dsc/config/dmdcr.ini
注:当前是手动拉起,等配置完成后将#删除,可自动拉起
1. 启动CSS、ASM服务bin目录下1、2号机依次启动
Css
./dmcss DCR_INI=/opt/dsc/config/dmdcr.ini
Asm
./dmasmsvr DCR_INI=/opt/dsc/config/dmdcr.ini
1. 创建DMASM磁盘组
1号机器
[dmdba@~]# /opt/dsc/dmdbms/bin/dmasmtool DCR_INI=/opt/dsc/config/dmdcr.ini
ASM> create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
ASM> create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
1. 创建dminit.ini
1、2机器配置相同
vi /opt/dsc/config/dminit.ini
db_name = dsc
system_path = +DMDATA/data
main = +DMDATA/data/dsc/main.dbf
main_size = 128
roll = +DMDATA/data/dsc/roll.dbf
roll_size = 128
system = +DMDATA/data/dsc/system.dbf
system_size = 128
ctl_path = +DMDATA/data/dsc/dm.ctl
ctl_size = 8
log_size = 2048
dcr_path = /dev/raw/raw1
dcr_seqno = 0
auto_overwrite = 1
PAGE_SIZE = 32
CASE_SENSITIVE = Y
CHARSET = 0
[DSC0]
config_path = /opt/dsc/config/dsc0_config
port_num = 5236
mal_host = 192.168.56.101
mal_port = 5736
log_path = +DMLOG/log/dsc0_log01.log
log_path = +DMLOG/log/dsc0_log02.log
[DSC1]
config_path = /opt/dsc/config/dsc1_config
port_num = 5236
mal_host = 192.168.56.106
mal_port = 5737
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
1. 初始化实例
--初始化实例
[dmdba@~]# /opt/dsc/dmdbms/bin/dminit control=/opt/dsc/config/dminit.ini
...
create dm database success. 2020-11-14 21:25:31
--拷贝文件
[dmdba@~]# scp -r /opt/dsc/config/dsc1_config dmdba@192.168.56.106:/opt/dsc/config/
1. 创建dmarch.ini,开归档
1号
vi /opt/dsc/config/dsc0_config/dmarch.ini
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL
ARCH_DEST = /opt/dsc/arch_0
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 51200
[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = /opt/dsc/arch_0_remote
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 51200
2号
vi /opt/dsc/config/dsc1_config/dmarch.ini
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL
ARCH_DEST = /opt/dsc/arch_1
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 51200
[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = /opt/dsc/arch_1_remote
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 51200
1. 启动DMSERVER服务
/opt/dsc/dmdbms/bin/dmserver /opt/dsc/config/dsc0_config/dm.ini dcr_ini=/opt/dsc/config/dmdcr.ini
看是否有报错。
1. 注册CSS、ASM、DMSERVER后台服务
[root@~]# /opt/dsc/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /opt/dsc/config/dmdcr.ini -p CSS
[root@~]# /opt/dsc/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /opt/dsc/config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM
[root@~]# /opt/dsc/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /opt/dsc/config/dsc0_config/dm.ini -dcr_ini /opt/dsc/config/dmdcr.ini -y DmASMSvrServiceASM.service -p DSC
1. 配置监视器
1、2号机相同
vi /opt/dsc/dmdbms/bin/dmcssm.ini
CSSM_OGUID = 45331
CSSM_CSS_IP = 192.168.56.101:5336
CSSM_CSS_IP = 192.168.56.106:5337
CSSM_LOG_PATH = ../log
CSSM_LOG_FILE_SIZE = 512
CSSM_LOG_SPACE_LIMIT = 2048
1. 启动监视器
/opt/dsc/dmdbms/bin/dmcssm INI_PATH=/opt/dsc/dmdbms/bin/dmcssm.ini
1. 启停集群
启动:1/2机器CSS
/opt/dsc/dmdbms/bin/DmCSSServiceCSS start
CSS启动后30秒自动拉起ASM,60秒自动拉起DMSERVER。
停止: 1/2机器DMSERVER→A/B机器ASM→A/B机器CSS
说明:1)DSC正常停库必须2节点同时停止,根据目前脚本配置,CSS启动后30秒自动拉起ASM,60秒自动拉起DMSERVER,所以停止DMSERVER和ASM后,要尽快停止CSS,避免被自动拉起。2)ASM服务在任意节点停止,2个节点的ASM服务都会停止,为了保险起见,可以两边都执行停止命令。3)服务全部停止后,要检查后台进程是否全部停止。