搭建DMDSC
一.概述
DMDSC 集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。DMDSC 集群主要由数据库和数据库实例、共享存储、DMASM 或 DMASM 镜像、本地存储、通信网络、集群控制软件 DMCSS、集群监视器 DMCSSM 组成。
二.搭建准备
- 网络配置及规划
为每台安装有DM8的机器配置双网卡,外部IP提供服务,内部IP进行数据交换。以下是所使用的机器的网络和端口规划:
节点 | 内部IP | 外部IP |
---|---|---|
DSC1 | 192.168.26.111 | 192.168.61.129 |
DSC2 | 192.168.26.112 | 192.168.61.130 |
监视器 | 192.168.26.111 | 192.168.61.129 |
端口 | 用途 |
---|---|
5237 | 数据库实例监听端口 |
9741 | DCR检查数据库实例监听端口 |
9341 | CSS进程TCP连接端口 |
9351 | ASM进程TCP连接端口 |
7236 | ASM的MAL系统TCP连接端口 |
9236 | 数据库实例的MAL系统TCP连接端口 |
- 添加共享磁盘
在Vmware中,为每台虚拟机添加硬盘,并修改参数,使其成为共享磁盘。步骤如下:
为DSC1机器添加硬盘。
将虚拟磁盘存储为单个文件,并立即分配所有空间。
对新创建的磁盘进行配置,点击高级,将其设置为独立磁盘。
DSC1硬盘添加完成,DSC2硬盘添加操作类似,但选择使用现有虚拟磁盘创建。
打开并修改所使用的所有虚拟机的配置文件。
添加以下内容:
scsi0.sharedBus = “virtual”
scsi0:1.deviceType = “disk”
disk.locking = “false”
diskLib.dataCacheMaxSize = “0”
diskLib.dataCacheMaxReadAheadSize = “0”
diskLib.DataCacheMinReadAheadSize = “0”
diskLib.dataCachePageSize = “4096”
diskLib.maxUnsyncedWrites = “0”
disk.EnableUUID = “TRUE”
3.在共享设备上裸设备划分
启动虚拟机,使用fdisk -l命令可以查看磁盘情况。
root用户输入fdisk /dev/sdb 命令进行分区操作:
依次输入n -> p -> 1 -> 回车 -> +200M -> 回车,完成第一块磁盘划分
依次输入n -> p -> 2 -> 回车 -> +200M -> 回车,完成第二块磁盘划分
依次输入n -> p -> 3 -> 回车 -> +4096M -> 回车,完成第三块磁盘划分
依次输入n -> p -> 4 -> 回车 -> 回车 -> 回车,完成第四块磁盘划分
最后输入w保存
以上操作在一台机器完成即可。
创建完成后,刷新磁盘并查看磁盘情况。
4.绑定裸设备
编辑两节点下的/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”
KERNEL==“raw[1-4]”, OWNER=“dmdba”, GROUP=“dinstall”, MODE=“660”
分别执行下列指令完成裸设备绑定。
partprobe /dev/sdb
udevadm control --reload-rules
udevadm trigger --type=devices --action=change
三. 搭建服务器
- 在各节点上创建 /dm8/config,并在DSC1节点新建 dmdcr_cfg.ini 配置文件:
mkdir /dm8/config
touch dmdcr\_cfg.ini
修改配置文件的内容:
DCR_N_GRP = 3 #磁盘内多少个组
DCR_VTD_PATH = /dev/raw/raw2 #表决磁盘路径
DCR_OGUID = 63635 #消息标识
[GRP] #组1 CSS
DCR_GRP_TYPE = CSS #组类型
DCR_GRP_NAME = GRP_CSS #组名
DCR_GRP_N_EP = 2 #组内节点个数N, 最大值16
DCR_GRP_DSKCHK_CNT = 60 #磁盘心跳时间默认60s
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.61.129 #节点ip
DCR_EP_PORT = 9341 #节点监听端口号
[GRP_CSS]
DCR_EP_NAME = CSS2
DCR_EP_HOST = 192.168.61.130 #节点ip
DCR_EP_PORT = 9341 #节点监听端口号
[GRP] #组2 ASM
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = GRP_ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93360 #共享内存标识
DCR_EP_SHM_SIZE = 10 #共享内存大小,单位m 10-1024
DCR_EP_HOST = 192.168. 61.129
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/raw #ASM扫扫描磁盘路径
[GRP_ASM]
DCR_EP_NAME = ASM2
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168. 61.130
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP] #组3 DB
DCR_GRP_TYPE = DB
DCR_GRP_NAME = DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 0
DCR_CHECK_PORT = 9741
DCR_EP_PORT = 5237 ##实例端口,和 dm.ini 的 PORT_NUM 一致
[GRP_DSC]
DCR_EP_NAME = DSC2
DCR_EP_SEQNO = 1
DCR_CHECK_PORT = 9741
DCR_EP_PORT = 5237
- 初始化磁盘组
在DSC1机器上使用DMASMCMD工具初始化,cd到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 '/dm8/config/dmdcr\_cfg.ini'identified by 'abcd'
init votedisk '/dev/raw/raw2' from '/dm8/config/dmdcr\_cfg.ini'
- 准备DMASM的MAL配置文件
在 /dm8/config 目录下创建 dmasvrmal.ini 配置文件,并添加以下内容。使用 DMASM 的所有节点都要配置,内容一致。
[MAL_INST1]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.61.129
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM2
MAL_HOST = 192.168.61.130
MAL_PORT = 7236
- 配置dmdcr.ini 文件
DSC0:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/dm8/config/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 0
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD =/dm8/config/dmasmsvr
dcr_ini=/dm8/config/dmdcr.ini#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /dm8/config/dmserver path=/dm8/config/dsc1
/dm.ini dcr_ini=/dm8/config/dmdcr.ini
DSC1:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/dm8/config/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 1
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD =/dm8/bin/dmasmsvr dcr_ini=/dm8/config/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /dm8/bin/dmserver path=/dm8/config/dsc2/dm.ini dcr_ini=/dm8/config/dmdcr.ini
- 启动DMCSS、DMASM服务
在DSC1和DSC2机器上先后启动dmcss、dmasm程序,指令如下:
DSC1:
./dmcss DCR\_INI=/dm8/config/dmdcr.ini
./dmasmsvr DCR\_INI=/dm8/config/dmdcr.ini
DSC2
./dmcss dcr\_ini=/dm8/config/dmdcr.ini
./dmasmsvr DCR\_INI=/dm8/config/dmdcr.ini
- 创建DMASM磁盘组
在DSC1上使用dmasmtool工具创建DMASM磁盘组:
- 配置dminit.ini
在DSC1节点的 /dm8/config 目录下创建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 磁盘路径,目前不支持 asm,只能是裸设备
dcr_seqno = 0
auto_overwrite = 1
[DSC0] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /dm8/config/dsc1
port_num = 5237
mal_host = 192.168.61.129
mal_port = 9236
log_path = +DMLOG/log/DSC1_log01.log
log_path = +DMLOG/log/DSC1_log02.log
[DSC2]
config_path = /dm8/config/dsc2
port_num = 5237
mal_host = 192.168.61.130
mal_port = 9236
log_path = +DMLOG/log/DSC2_log01.log
log_path = +DMLOG/log/DSC2_log02.log
- 初始化实例
在DSC1的机器上,到/dm8/bin目录下输入以下命令,初始化数据库:
./dminit control=/dm8/config/dminit.ini
- 将实例文件发送到DSC2机器上
将DSC1上的dsc2文件复制到DSC2上的相应目录:
scp -r dsc2 192.168.61.130:/dm8/config/
- 注册服务
配置成功后需要注册为系统服务,方便启动和关闭集群,以及实现开机自动启动。2 个节点都需要注册,使用 root 用户执行,到数据库安装目录的 script/root 目录。
./dm\_service\_installer.sh -t dmcss -p css1 -dcr\_ini /home/dmdba/config/dmdcr.ini
关闭前台启动的 css,以服务方式启动 css。
systemctl start DmCSSServicecss1
systemctl start DmCSSServicecss2
- 启动数据库
在两个节点的机器上启动数据库服务。
DSC1
./dmasmsvr /dm8/config/dsc1/dm.ini dcr\_ini=/dm8/config/dmdcr.ini
DSC2
./dmserver /dm8/config/dsc2/dm.ini dcr\_ini=/dm8/config/dmdcr.ini
四. 配置监视器
在任意节点的机器上创建监视器配置文件,命令如下:
vi /dm8/config/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.61.129:9341
CSSM_CSS_IP = 192.168.61.130:9341
CSSM_LOG_PATH =/home/dmdba/log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 1024 #每个日志文件最大 1024 MB
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
启动监视器:
到数据库软件安装目录bin下执行以下命令:
./dmcssm ini\_path=/dm8/config/dmcssm.ini
输入show命令,查看css、asm和数据库的状态
五. 服务启停
1.关闭数据库:监视器中执行 ep stop dsc
2.关闭 asm:监视器中执行 ep stop asm
3.关闭 css:各节点关闭各自的 css 服务
systemctl stop DmCSSServicecss1/DmCSSServicecss2
启动顺序:
dmcss→ dmasmsvr→ dmserver
关闭顺序:
dmserver → dmasmsvr → dmcss
六. 验证
DSC1和DSC2信息验证
分别使用 disql 工具输入以下命令,查看两端的信息是否一致:
select \* from v$dsc\_ep\_info;
数据同步验证
在DSC1机器中查询t1表,查询失败;创建t1表,并插入数据。
在DSC1提交之前,DSC2中对t1表进行查询,结果如下:
DSC1节点将数据提交,并在DSC2中查询。
七. 归档配置
共享存储集群归档需要配置本地归档和远程归档。
在DSC1和DSC2节点上进行以下配置。
DSC1:
alter database mount;
alter database archivelog;
alter database add archivelog ‘DEST=/home/dmdba/dmarch, TYPE=LOCAL,
FILE_SIZE=1024, SPACE_LIMIT=102400’;alter database add archivelog ‘DEST=dsc2, TYPE=REMOTE,
FILE_SIZE=1024, SPACE_LIMIT=102400,
INCOMING_PATH=/home/dmdba/remote_arch’;alter database open;
DSC2:
alter database mount;
alter database archivelog;
alter database add archivelog ‘DEST=/home/dmdba/dmarch, TYPE=LOCAL,
FILE_SIZE=1024, SPACE_LIMIT=102400’;alter database add archivelog ‘DEST=dsc1, TYPE=REMOTE,
FILE_SIZE=1024, SPACE_LIMIT=102400,
INCOMING_PATH=/home/dmdba/remote_arch’;alter database open;