一、准备工作
1.1 配置第二张网卡和磁盘
- 记录下第二张网卡的起始结束IP地址
- 注意如果出现下列问题,查看托管状态并开启
1.2 目录规划
用途 | 目录 |
---|---|
数据库软件安装目录 | /home/dmdba/dmdbms |
本地归档日志存放 | /home/dmdba/dmarch |
远程归档日志存放目录 | /home/dmdba/remote_arch |
备份文件存放目录 | /home/dmdba/dmbak |
1.3 端口规划
端口 | 用途 |
---|---|
5236 | 数据库实例dmrw |
9741 | DCR 检查数据库实例监听端口 |
9341 | CSS进程TCP连接端口 |
9351 | ASM进程TCP连接的端口 |
7236 | ASM 的 MAL 系统 TCP 连接的端口 |
9236 | 数据库实例的 MAL 系统 TCP 连接的端口 |
1.4 磁盘分区绑定
分区
fdisk /dev/sdb
n → p → 1 → “回车” → +1G # dcr
n → p → 2 → “回车” → +1G # vote
n → p → 3 → “回车” → +10G # log0
n → p → 4 → “回车” → "回车" # data0
w # 保存
查看磁盘分区
绑定
sdb1-sdb4是需要配置的共享磁盘,两个节点都需要配置
1. 新建udev规则文件
vi /etc/udev/rules.d/90-raw.rules
2. 添加内容
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"
3. 执行命令使udev生效
udevadm trigger --type=devices --action=change
4. 执行命令检查是否配置成功(如果查看不到配置的裸设备,请重启服务器再验证)
ll /dev/raw/raw*
1.5 添加配置文件
1.5.1 配置 DCR 初始化配置文件(DSC1 & DSC2)
使用dmdba用户:
两节点都执行,创建配置文件存放目录:
mkdir -p /home/dmdba/config
节点一新建dmdcr_cfg.ini 文件
vim /home/dmdba/config/dmdcr_cfg.ini
添加以下内容:
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/raw/raw2
DCR_OGUID = 63635
[GRP]
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = CSS
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 172.16.1.171
DCR_EP_PORT = 9341
[CSS]
DCR_EP_NAME = CSS2
DCR_EP_HOST = 172.16.1.172
DCR_EP_PORT = 9341
[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 172.16.1.171
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/raw
[ASM]
DCR_EP_NAME = ASM2
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 172.16.1.172
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
[DSC]
DCR_EP_NAME = DSC2
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
1.5.2 创建 ASM 磁盘(DSC1)
节点1 dmdba用户执行
./dmasmcmd
进入ASM提示符后执行以下命令:
create dcrdisk '/dev/raw/raw1' 'dcr'
create votedisk '/dev/raw/raw2' 'vote'
create asmdisk '/dev/raw/raw3' 'LOG0'
create asmdisk '/dev/raw/raw4' 'DATA0'
初始化磁盘
使用编辑好的 dmdcr_cfg.ini 配置文件初始化 dcrdisk 和 votedisk,并在 ASM 提示符执行以下命令:
init dcrdisk '/dev/raw/raw1' from '/home/dmdba/config/dmdcr_cfg.ini' identified by '123456'
init votedisk '/dev/raw/raw2' from '/home/dmdba/config/dmdcr_cfg.ini'
1.5.3 配置ASM的MAL系统配置文件(DSC1 & DSC2)
2 个节点都需要配置,且文件内容相同,执行以下命令:
vi /home/dmdba/config/dmasvrmal.ini
添加以下内容:
[MAL_INST1]
MAL_INST_NAME = ASM1
MAL_HOST = 172.16.1.171
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM2
MAL_HOST = 172.16.1.172
MAL_PORT = 7236
1.5.4 配置 DCR 启动配置文件(DSC1 & DSC2)
节点一和节点二各需要创建dmdcr.ini文件,两者内容差别主要在于DMDCR_SEQNO和PATH中的实例名。
本文将ASM和DB的重启参数均设置为0,为手动拉起ASM和DB服务,主要是为了防止拉起过程出现故障导致不断重启
vi /home/dmdba/config/dmdcr.ini
//节点1:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/home/dmdba/config/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 0
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/config/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/config/dsc1/dm.ini dcr_ini=/home/dmdba/config/dmdcr.ini
//节点2:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/home/dmdba/config/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 1
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/config/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/config/dsc2/dm.ini dcr_ini=/home/dmdba/config/dmdcr.ini
两个节点的 DMDCR_SEQNO 参数不能相同要唯一,DMDCR_DB_STARTUP_CMD 中启动脚本路径和配置文件路径要配置准确。
如果不配置 css 自动启动 asm 和 db 则需要配置 DMDCR_ASM_RESTART_INTERVAL 和DMDCR_DB_RESTART_INTERVAL 为 0。
二、启动 DMDSC 集群
2.1 启动 DMCSS 服务(DSC1 & DSC2)
./dmcss dcr_ini=/home/dmdba/config/dmdcr.ini
先启动的节点是控制节点,本文没有配置 css 自动启动 asm 和 db,所以需要手动拉起。(DCR启动配置文件中的DMDCR_ASM_RESTART_INTERVAL和DMDCR_DB_RESTART_INTERVAL的值均为0。)如需自动启动,可修改其参数值。
2.2 启动 ASM 服务(DSC1 & DSC2)
./dmasmsvr dcr_ini=/home/dmdba/config/dmdcr.ini
或者配置自动启动,等待css启动asm成功。
出现 ASM is ready 即为启动成功。
此处如果没有出现ASM is ready,应该仔细检查上一章中的配置文件有没有问题
2.3 创建 ASM 磁盘组(DSC1)
asm 启动成功后,节点 1 使用 dmdba 用户启动 dmasmtool 工具。
在 ASM 提示符下创建 asm 磁盘组,创建 REDO 日志磁盘组和数据文件磁盘组。
./dmasmtool dcr_ini=/home/dmdba/config/dmdcr.ini
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
exit # 退出
2.4 初始化共享存储集群数据库实例(DSC1)
节点 1 使用 dmdba 用户执行以下命令:
./dminit control=/home/dmdba/config/dminit.ini
初始化完成后会显示 create dm database success.
并在 init 控制文件配置的目录下生成 2 个实例的配置文件:
复制相应配置文件(DSC1 → DSC2)
将 dsc2 目录复制到节点 2 上对应的目录下。
scp -r dsc2 192.168.152.156:/home/dmdba/config/
观察 css 窗口日志,db 会被自动启动。出现 system is ready ep real open
,说明数据库实例启动成功。
注册服务(DSC1 & DSC2)
以上启动方式为前台启动,仅用于验证集群配置过程。配置成功后需要注册为系统服务,方便启动和关闭集群,以及实现开机自动启动。
2 个节点都需要注册,使用 root 用户执行,到数据库安装目录的 script/root 目录。
节点 1 执行以下命令:
./dm_service_installer.sh -t dmcss -p css1 -dcr_ini /home/dmdba/config/dmdcr.ini
节点 2 执行以下命令:
./dm_service_installer.sh -t dmcss -p css2 -dcr_ini /home/dmdba/config/dmdcr.ini
关闭前台启动的 css,以服务方式启动 css。
节点 1 执行以下命令:
systemctl start DmCSSServicecss1
节点 2 执行以下命令:
systemctl start DmCSSServicecss2
2.5 启动数据库实例(DSC1 & DSC2)
2 个节点启动 DB,dmdba 用户到数据库安装目录 bin 下执行以下命令:
./dmserver path=/home/dmdba/config/dsc1/dm.ini dcr_ini=/home/dmdba/config/dmdcr.ini
./dmserver path=/home/dmdba/config/dsc2/dm.ini dcr_ini=/home/dmdba/config/dmdcr.ini
三、验证集群状态
3.1 配置监视器查看(DSC1)
创建监视器配置文件
任意节点新建监视器配置文件,执行以下命令:
vi /home/dmdba/config/dmcssm.ini
添加以下内容:(注意IP)
#和 dmdcr_cfg.ini 中的 DCR_OGUID 保持一致
CSSM_OGUID = 63635
#配置所有 CSS 的连接信息,
#和 dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致
CSSM_CSS_IP = 172.16.1.171:9341
CSSM_CSS_IP = 172.16.1.172:9341
CSSM_LOG_PATH =/home/dmdba/dmdbms/log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 1024 #每个日志文件最大 1024 MB
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
启动监视器
dmdba 用户执行,到数据库软件安装目录 bin 下执行以下命令:
./dmcssm ini_path=/home/dmdba/config/dmcssm.ini
输入show:
以 db 为例,inst_status 字段为 OPEN,vtd_status 字段为 WORKING,active 字段为 TRUE 说明 db 服务正常
3.2 数据库共享验证(DSC1 & DSC2)
-
查询表test,两节点均没有
-
DSC1 创建 test 表并插入数据
-
DSC2查询数据
-
DSC1执行commit
-
DSC2再次查询
3.3 客户端验证 (DSC1 / DSC2)
1.任意节点配置 dm_svc.conf 文件,执行以下命令:
vi /etc/dm_svc.conf
dmdsc=(192.168.32.155:5236,192.168.32.156:5236)
- 登录集群并查询视图v$dsc_ep_info
3.4 故障自动重连验证(DSC1)
连接节点 1 实例,保持disql连接不断开,刚关闭节点1服务器时出现的查询信息
恢复后:
3.5 归档配置
生产环境必须开启归档日志,且必须限制归档日志保留量。
共享存储集群归档需要配置本地归档和远程归档(保证每个节点都有所有归档日志)
实例 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;
四、关闭 DMDSC 集群
关闭顺序:dmserver → dmasmsvr → dmcss
- 关闭数据库:监视器中执行 ep stop dsc
- 关闭 ASM:监视器中执行 ep stop asm
- 关闭 CSS:各节点关闭各自的 css 服务