- DSC集群概述
DMDSC 集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同 一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。
数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些 文件,这些文件保存在共享存储上。每个节点有自己独立的联机日志和归档日志,其中联机 日志保存在共享存储上,归档日志可以保存在本地存储上也可以保存在共享存储上。
- DSC集群特性
高可用:只要有一个实例在正常运行,那整个集群就可以继续提供服务
高性能:把应用需要处理的事务,分发到多个集群节点上,多个几点同时提供数据库服务
负载均衡:把用户的请求平均分发给集群中各个节点
故障转移:集群中任意一个节点故障,都不会影响用户的使用和集群整体功能,连接到故障节点的用户会被自动转移到健康的节点上。
- DSC集群组件功能
DSC集群主要由数据库和数据库实例、共享存储、本地存储、网络通信、集群控制软件DMCSS组成。
1.数据库和数据库实例:提供工具(路径bin下),创建实例
2.共享存储:实现多个实例同时访问、修改数据、需要将数据文件、控制文件、日志文件保存在共享存储上
3.本地存储:用来保存配置文件(记录数据库实例配置信息的dm.ini、dmarch.ini、dmmal.ini),本地归档日志、远程归档日志。
4.网络通信:分为内部网络和公共网络;
内部网络:用于数据库实例之间交换信息和数据,以及网络心跳检测等用途,mal链路使用的就是内部网络。
公共网络:用于对外提供数据库服务,用户使用公共网络地址登录DM DSC集群,访问数据库。
5.集群控制(DMCSS):集群系统的重要组成部分,DMCSS是DMDSC集群控制软件,负责监控集群中各个几点的运行状态。
主要功能包括:管理集群的启动、关闭、控制节点故障处理、以及节点重加入流程。
- DSC环境搭建
1.环境准备
两台相同配置的虚拟机
挂载共享存储(不小于20G)
主机配置:
主机 | 操作系统 | 磁盘 | 网卡ens33 | 网卡ens37 | |
dm02 | Centos7 | 本地100G | 共享磁盘 20G | 公共网络 192.168.1.8 | 内部网络 192.168.200.1 |
dm03 | Centos7 | 本地100G | 公共网络 192.168.1.33 | 内部网络 192.168.200.2 |
数据库配置:
主机 | 数据库版本 | 实例名 | 安装路径 | 端口 | 配置文件目录 |
dm02 | 1-1-190-21.03.12-136419-ENT | DAMENG | /data | 5236 | /data |
dm03 | 1-1-190-21.03.12-136419-ENT | DAMENG | /data | 5236 | /data |
2.添加硬盘
dm02主机新添加共享磁盘20G
点击硬盘
选中硬盘,点击添加
dm03主机添加dm02添加的那块硬盘
指定磁盘文件存放位置
VM软件需要在两台虚拟机路径下xxx.vmx文件中加入disk.locking = “FALSE“ 参数,否则后启动的虚拟机会启动失败。
disk.locking = “FALSE“
scsi0:1.SharedBus="Virtual"
scsi1:1.SharedBus="Virtual"
3.添加网卡
dm02、dm03分别添加一块网卡
内部网络用仅主机模式,公共网络用NAT模式区分
dm02:
dm03:
- 新硬盘分区
前两个分区大小为100M,第三个分区不少于2G(该分区过小可能会出现启动dmserver闪退、创建ASM磁盘组时连接失败等报错)
使用fdisk命令进行分区
输入n创建添加分区,输入p创建一个主分区,之后都回车,不修改。最后输入w保存操作的结果。
n add a new partition
p primary (0 primary, 0 extended, 4 free)
5.绑定裸设备
编辑vi /etc/udev/rules.d/60raw.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"
两节点分别执行partprobe /dev/sdb,通知系统分区表的变化
两节点执行以下命令,使裸设备绑定生效
udevadm trigger --type=devices --action=change
查看裸设备:
ll /dev/raw/*
注:若执行上面命令没有显示内容,或权限不对,则需要重启以下,若重启后仍然不对,需
要重新配置磁盘。
五、DSC集群搭建过程
5.1配置dmdcr_cfg.ini文件
切换到dmdba1用户,cd到配置文件目录
cd /data
Vim dmdcr_cfg.ini
运行dmasmcmd初始化磁盘,依次执行以下内容
cd /home/dmdba1/dmdbms/bin
./dmasmcmd
5.2配置dmasvrmal.ini文件
在配置文件目录下准备dmasvrmal.ini,具体内容如下。
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.200.1 #心跳ip
MAL_PORT = 50000
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.200.2 #心跳ip
MAL_PORT = 50000
5.3配置dmdcr.ini文件
两个节点都需要配置
节点1:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /data/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 0 #对应节点1
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0 #0为手动拉起dmasmsvr,后续改为1自动拉起。
DMDCR_ASM_STARTUP_CMD = /home/dmdba1/dmdbms/bin/dmasmsvr dcr_ini=/data/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0 #0为手动拉起dmserver,后续改为1自动拉起
DMDCR_DB_STARTUP_CMD = /home/dmdba1/dmdbms/bin/dmserver path=/data/DAMENG/dm.ini dcr_ini=/data/dmdcr.ini
节点2:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /data/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 1 #对应节点2
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /home/dmdba1/dmdbms/bin/dmasmsvr dcr_ini=/data/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /home/dmdba1/dmdbms/bin/dmserver path=/data/DAMENG/dm.ini dcr_ini=/data/dmdcr.ini
5.4启动dmcss、dmasmsvr服务
两个节点依次启动DMCSS与DMASM服务
cd /home/dmdba1/dmdbms/bin
执行:
./dmcss dcr_ini=/data/dmdcr.ini
./dmasmsvr dcr_ini=/data/dmdcr.ini
节点一:
返回dmcss启动的那个会话,看到节点1或节点2的返回,内容很多并且没有报错,表示成功
5.5dmasmtool创建磁盘组
选择一个节点,再开个新会话,启动dmasmtool工具,在bin目录
./dmasmtool dcr_ini=/data/dmdcr.ini
执行:
#创建日志磁盘组
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
#创建数据磁盘组
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
5.6配置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 = 256
dcr_path = /dev/raw/raw1
dcr_seqno = 0
auto_overwrite = 1
page_size = 16
[DSC0] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /data/dsc0_config
port_num = 5236
mal_host = 192.168.200.1
mal_port = 9340
log_path = +DMLOG/log/dsc0_log01.log
log_path = +DMLOG/log/dsc0_log02.log
[DSC1] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /data/dsc1_config
port_num = 5236
mal_host = 192.168.200.2 #心跳ip
mal_port = 9340
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
一个节点配置即可
5.7初始化数据库
1、切换到bin目录下
cd /home/dmdba1/dmdbms/bin
执行:
./dminit control=/data/dminit.ini
初始化完成
2、然后去/data目录下,会看到成功初始化后生成的配置文件,共2个节点,分别用目录装着,目录名是两个节点的数据库名
这两个目录中存放着两个节点上数据库实例的dm.ini、dmmal.ini文件
- 把dsc1_config目录传到节点2存放配置文件的目录上
scp -r dsc1_config dmdba1@192.168.200.2:/data
传完之后,删除节点:1上的dsc1_config 目录
5.8启动数据库服务
切换到bin目录
cd /home/dmdba1/dmdbms/bin
节点1:
./dmserver /data/dsc0_config/dm.ini dcr_ini=/data/dmdcr.ini
节点2:
./dmserver /data/dsc1_config/dm.ini dcr_ini=/data/dmdcr.ini
在dmcss中执行show命令查看
5.8开启远程归档
修改dm.ini参数
ARCH_INI = 1(两个节点都要修改)
节点一:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /data/arch/dsc0/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
ARCH_INCOMING_PATH = /data/arch/dsc0/arch_remote
节点二:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /data/arch/dsc1/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
ARCH_INCOMING_PATH = /data/arch/dsc1/arch_remote
5.9注册服务后台启动
先将两个节点,数据库服务,停掉
然后dmcss会话都停掉,两个节点,输入exit,回车
再将dmasmsvr停掉,两个节点,输入exit,回车
去bin目录下的service_template目录下
节点一:
cp DmCSSService ../DmCSSService_dsc0
vi DmCSSService_dsc0
修改DCR_INI_PATH="/data/dmdcr.ini"
节点二:
cp DmCSSService ../DmCSSService_dsc1
vi DmCSSService_dsc0
修改DCR_INI_PATH="/data/dmdcr.ini"
剩余的DmASMSvrService、DmService,也是如此操作
两个节点,返回配置文件目录,/data,修改dmdcr.ini
DMDCR_ASM_RESTART_INTERVAL = 10
DMDCR_DB_RESTART_INTERVAL = 30
然后返回bin目录,执行:
节点一:
./DmCSSService_dsc0 start
节点二:
./DmCSSService_dsc1 start
使用ps -ef | grep data,过1分钟后查看dmcss是否正常拉起dmasmsvr和dmserver,正常拉起即可。时间根据实例启动耗时而定,需耐心等待一会。
之后启动,就直接执行这个DmCSSService就行了,dmcss会自动拉起dmasmsvr和dmserver
六、配置DMCSSM监视器
任意一个节点即可
cd到配置文件目录 /data
vim 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.200.1:9341 #心跳ip
CSSM_CSS_IP = 192.168.200.2:9343
CSSM_LOG_PATH =/data/log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
启动监视器,查看实例情况
./dmcssm ini_path=/data/dmcssm.ini
执行show命令查看实例
- 集群启、停顺序
集群启动顺序:
节点一:./DmCSSService_dsc0 start
节点二:./DmCSSService_dsc1 start
./dmcssm ini_path=/data/dmcssm.ini
集群停止顺序:
执行exit退出监视器
节点一:./DmCSSService_dsc0 stop
节点二:./DmCSSService_dsc1 stop