特点:高可用性、高性能、负载均衡
DM DSC集群可以自动处理节点故障及故障切换,不影响对外正常服务,保证系统的高可用性。
集群主要由以下部分组成:
可以实现多实例同时访问、修改数据,要求将数据文件、控制文件、日志文件保存在共享存储上。 DMDSC支持使用裸设备或DMASM文件系统作为共享存储。
(1)共享存储最少挂四个盘,即:
voting disk:进程的通知,故障转移。
dcr disk:集群的配置信息,故障信息。
Group log:日志盘,最小不少于4G,否则会引起后面启动报错。
Group data:数据文件盘。
(2)DMASM是一个专用的分布式文件系统,可向用户提供更加便捷的DSC集群数据库文件管理方案,以下主要通过其部件来说明DMASM的功能特点:
DMASM磁盘与文件管理:DMASM文件系统将物理磁盘格式化后,变成可识别、可管理的 DMASM 磁盘,再通过DMASM 磁盘组将一个或者多个 DMASM 磁盘整合成一个整体提供文件服务。
dmasmsvr服务器:提供DMASM服务,启动时会扫描/dev/raw路径下的所有裸设备,构建DMASM磁盘组和DMASM文件系统,实例间通过MAL系统进行信息和数据传递。
dmasmapi接口:用户可以通过调用DMASMAPI接口,访问、操作DMASM文件。
dmasmcmd初始化工具:DMASM文件系统初始化工具,用于格式化裸设备为DMASM磁盘,并初始化DCR Disk和Voting Disk。
dmasmtool管理工具:提供了一套linux文件操作命令,用于管理DMASM文件。
用来保存配置文件,包括记录数据库实例的配置信息文件,本地归档日志、远程归档日志。
分为内部网络和外部网络,内部网络如MAL链路,用于数据库实例之间交换信息和数据,以及网络心跳检测等用途。公共网络则用于对外提供数据库服务。
定时从被监控对象voting disk读取被监控对象的信息,检查被监控对象的状态变化,启动相应处理流程。
写在前面:
1.要关闭防火墙;
2.若在配置过程中出现文件开启失败的提示,在确认该路径下文件确实存在时,很有可能就是文件权限不对,建议使用dmdba权限进行操作,否则配置过程中会出现很多问题;
3.若启动dmcss和dmasmsvr失败,在确认配置文件无误时,重启服务器即可。
在VMware中创建共享磁盘
操作系统:2台麒麟10操作系统
共享磁盘:20G,具体分配如下:
操作系统 | 机器名 | 内存 | 本地磁盘 | 共享磁盘 | IP | 数据库安装路径 | 配置文件路径 |
---|---|---|---|---|---|---|---|
Kylin10 | DSC0 | 2G | 30G | 20G | 192.168.118.139 | /dm8 | /home/DSC |
Kylin10 | DSC2 | 2G | 30G | 20G | 192.168.118.138 | /dm8 | /home/DSC |
查看共享磁盘:
对共享磁盘/dev/sdb进行分区,具体分区如下:
磁盘 | 空间 |
---|---|
voting disk | 100M |
dcr disk | 100M |
Group log | 4G |
Group data | 15.8G |
以下创建了第一个分区,大小为100M,之后的分区与之相似。 | |
依次创建四个分区,分区完成后需要输入w保存: | |
|
|
在两节点上编辑/etc/udev/rules.d/60-raw.rules文件。 |
vim /etc/udev/rules.d/60-raw.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="dmdba", MODE="660"
##在两节点上分别执行partprobe /dev/sdb,通知系统分区表的变化
[root@localhost raw]# partprobe /dev/sdb
##执行裸设备绑定
[root@localhost raw]# udevadm trigger --action=add
##最后检查裸设备绑定是否成功:
[root@localhost raw]# ll /dev/raw/raw*
注意:
执行裸设备绑定时:一般执行 start_udev
,但由于 Linux 系统版本不同,裸设备绑定命令也有所不同,还可使用以下命令进行裸设备绑定:
[root@localhost raw]# /sbin/udevadm trigger --type=devices --action=change --或者 [root@localhost raw]# /sbin/udevadm control --reload --或者 [root@localhost raw]# udevadm trigger --action=add
DCR_N_GRP = 3 DCR_VTD_PATH = /dev/raw/raw2 DCR_OGUID = 63635 [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.118.139 DCR_EP_PORT = 9341 [GRP_CSS] DCR_EP_NAME = CSS1 DCR_EP_HOST = 192.168.118.138 DCR_EP_PORT = 9343 [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 = 93360 DCR_EP_SHM_SIZE = 20 DCR_EP_HOST = 192.168.118.139 DCR_EP_PORT = 9349 DCR_EP_ASM_LOAD_PATH = /dev/raw [GRP_ASM] DCR_EP_NAME = ASM1 DCR_EP_SHM_KEY = 93361 DCR_EP_SHM_SIZE = 20 DCR_EP_HOST = 192.168.118.138 DCR_EP_PORT = 9351 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 DCR_EP_SEQNO = 0 DCR_EP_PORT = 5236 DCR_CHECK_PORT = 9741 [GRP_DSC] DCR_EP_NAME = DSC1 DCR_EP_SEQNO = 1 DCR_EP_PORT = 5237 DCR_CHECK_PORT = 9742
两节点的配置内容一致。
[MAL_INST1] MAL_INST_NAME = ASM0 MAL_HOST = 192.168.118.139 MAL_PORT = 7236 [MAL_INST2] MAL_INST_NAME = ASM1 MAL_HOST = 192.168.118.138 MAL_PORT = 7236
两节点的dmdcr_seqo分别为0和1,其他内容一致。
##DSC0:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/DSC/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 0
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /dm8/bin/dmasmsvr dcr_ini=/home/DSC/dmdcr.ini
#DB重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /dm8/bin/dmasmsvr path=path=/dm8/data/DAMENG/dm.ini dcr_ini=/home/DSC/dmdcr.ini
##DSC1:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/DSC/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 1
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /dm8/bin/dmasmsvr dcr_ini=/home/DSC/dmdcr.ini
#DB重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /dm8/bin/dmasmsvr path=path=/dm8/data/DAMENG/dm.ini dcr_ini=/home/DSC/dmdcr.ini**
[dmdba@localhost bin]$ ./dmcss DCR_INI=/home/DSC/dmdcr.ini [dmdba@localhost bin]$ ./dmasmsvr DCR_INI=/home/DSC/dmdcr.ini
两节点都启动后,显示如下:
[dmdba@localhost bin]$./dmasmtool DCR_INI=/home/dmdba/dmdbms/data/dsc/dmdcr.ini create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3' create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
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 磁盘路径,目前不支持 asm,只能是裸设备
dcr_seqno = 0
auto_overwrite = 1
[DSC0]
#inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /home/DSC/dsc0_config
port_num = 5236
mal_host = 192.168.118.139
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 = /home/DSC/dsc1_config
port_num = 5237
mal_host = 192.168.118.138
mal_port = 9341
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
[dmdba@localhost bin]$ ./dminit control=/home/DSC/dminit.ini
在/home/DSC目录下得到两个文件夹,将dsc1_config文件夹发送到DSC1的相同目录下。
##DSC0:
[dmdba@localhost bin]$./dmserver /home/DSC/dsc0_config/dm.ini dcr_ini=/home/DSC/dmdcr.ini
##DSC1:
[dmdba@localhost bin]$./dmserver /home/DSC/dsc1_config/dm.ini dcr_ini=/home/DSC/dmdcr.ini
##配置dmcssm.ini
CSSM_OGUID = 63635
#配置所有 CSS 的连接信息,
#和 dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致
CSSM_CSS_IP = 192.168.118.139:9341
CSSM_CSS_IP = 192.168.118.138:9343
CSSM_LOG_PATH =../log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
##启动监视器:
[dmdba@localhost bin]$ ./dmcssm INI_PATH=/home/DSC/dmcssm.ini
启动:DMCSS→DMASMSVR→dmserver ,均要在每个节点操作。
关闭:dmserver→DMASMSVR→DMCSS
先关闭 dmserver,再依次关闭 DMASMSVR 和 DMCSS。
DMASMSVR 和 dmserver 控制台执行 exit 命令,会通知所有其他节点一起退出;
DMCSS没有同步功能,需要手动退出所有节点。
文章
阅读量
获赞