环境准备
硬件:两台相同配置机器,2G 内存,100G 本地磁盘,2 块网卡,另有一块共享磁盘
100G。
操作系统:RedHat Linux 64 位。
网 络 配 置 : eth0 网 卡 为 10.0.2.x 内 网 网 段 , 两 台 机 器 分 别 为
10.0.2.101/10.0.2.102;eth1 为 192.168.56.x 外网网段,两台机器分别为
192.168.56.101/192.168.56.102。内网网段用于 MAL 通讯。
DM 各种工具位于目录:/opt/dmdbms/bin。
配置文件位于目录:/home/data。
真实的生产环境中,建议至少配置两块共享磁盘,分别用来存放联机日志文
件和数据文件。
11.2 使用裸设备搭建 2 节点 DMDSC
1. 在共享磁盘上裸设备划分
1) 输入 fdisk /dev/sdb
2) 依次输入 n p 1 回车 +100M 回车,完成第一块磁盘划分
3) 依次输入 n p 2 回车 +100M 回车,完成第二块磁盘划分
4) 依次输入 n p 3 回车 +2048M 回车,完成第三块磁盘划分
5) 依次输入 n p 4 回车回车回车,完成第四块磁盘划分
6) 编辑/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="root", GROUP="root", MODE="660"
执行以下命令,使 udev 生效:
Copy
udevadm trigger --type=devices --action=change |
执行以下命令,检查是否配置成功:
Copy
ll /dev/raw/raw* |
注意如果查看不到配置的裸设备,请重启服务器再验证。
配置 DCR 初始化配置文件
创建配置文件存放目录,2 个节点都要执行,使用 dmdba 用户,执行以下命令:
Copy
mkdir -p /home/dmdba/config |
新建 dmdcr_cfg.ini 文件
,节点 1 使用 dmdba 用户,执行以下命令:
Copy
vim /home/dmdba/config/dmdcr_cfg.ini |
添加以下内容:
Copy
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 = 10.0.0.11 DCR_EP_PORT = 9341 [CSS] DCR_EP_NAME = CSS2 DCR_EP_HOST = 10.0.0.12 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 = 10.0.0.11 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 = 10.0.0.12 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 |
创建 ASM 磁盘
使用 dmdba 用户,到 DM 数据库软件安装目录的 bin 目录执行以下命令(只需在一个节点执行)。
Copy
./dmasmcmd |
进入 ASM 提示符后执行以下命令:
Copy
create dcrdisk '/dev/raw/raw1' 'dcr' |
Copy
create votedisk '/dev/raw/raw2' 'vote' |
Copy
create asmdisk '/dev/raw/raw3' 'LOG0' |
Copy
create asmdisk '/dev/raw/raw4' 'DATA0' |
使用编辑好的 dmdcr_cfg.ini
配置文件初始化 dcrdisk
和 votedisk
,并在 ASM 提示符执行以下命令:
Copy
init dcrdisk '/dev/raw/raw1' from '/home/dmdba/config/dmdcr_cfg.ini' identified by '123456' |
Copy
init votedisk '/dev/raw/raw2' from '/home/dmdba/config/dmdcr_cfg.ini' |
注意DMASMCMD工具中执行命令结尾不要加分号。
配置ASM的MAL系统配置文件
2 个节点都需要配置,且文件内容相同,执行以下命令:
Copy
vi /home/dmdba/config/dmasvrmal.ini |
添加以下内容:
Copy
[MAL_INST1] MAL_INST_NAME = ASM1 MAL_HOST = 10.0.0.11 MAL_PORT = 7236 [MAL_INST2] MAL_INST_NAME = ASM2 MAL_HOST = 10.0.0.12 MAL_PORT = 7236 |
配置 DCR 启动配置文件
Copy
vi /home/dmdba/config/dmdcr.ini |
节点 1 添加以下内容:
Copy
DMDCR_PATH = /dev/raw/raw1 DMDCR_MAL_PATH =/home/dmdba/config/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径 DMDCR_SEQNO = 0 #ASM 重启参数,命令行方式启动 DMDCR_ASM_RESTART_INTERVAL =10 DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/config/dmdcr.ini #DB 重启参数,命令行方式启动 DMDCR_DB_RESTART_INTERVAL = 30 DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/config/dsc1/dm.ini dcr_ini=/home/dmdba/config/dmdcr.ini |
节点 2 添加以下内容:
Copy
DMDCR_PATH = /dev/raw/raw1 DMDCR_MAL_PATH =/home/dmdba/config/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径 DMDCR_SEQNO = 1 #ASM 重启参数,命令行方式启动 DMDCR_ASM_RESTART_INTERVAL =10 DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/config/dmdcr.ini #DB 重启参数,命令行方式启动 DMDCR_DB_RESTART_INTERVAL = 30 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
启动集群
启动 DMCSS 服务
2 个节点启动 dmcss,dmdba 用户到数据库安装目录 bin 下执行以下命令:
Copy
./dmcss dcr_ini=/home/dmdba/config/dmdcr.ini |
提示先启动的节点是控制节点,本次实验配置了 css 自动启动 asm 和 db,等待 css 启动 asm 和 db 即可。
css 启动 asm 成功,(出现 asm is ready
即表明启动成功)。
创建 ASM 磁盘组
asm 启动成功后,节点 1 使用 dmdba 用户启动 dmasmtool 工具。
Copy
./dmasmtool dcr_ini=/home/dmdba/config/dmdcr.ini |
在 ASM 提示符下创建 asm 磁盘组,创建 REDO 日志磁盘组,执行以下命令:
Copy
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3' |
创建数据文件磁盘组,执行以下命令:
Copy
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4' |
asm 磁盘组创建成功,执行以下命令:
初始化共享存储集群数据库实例
配置 dminit 控制文件,节点 1 使用 dmdba 用户执行以下命令:
vi /home/dmdba/config/dminit.ini |
添加以下内容:
Copy
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 = 1024 dcr_path = /dev/raw/raw1 #dcr 磁盘路径,目前不支持 asm,只能是裸设备 dcr_seqno = 0 auto_overwrite = 1 [DSC1] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应 config_path = /home/dmdba/config/dsc1 port_num = 5236 mal_host = 10.0.0.11 mal_port = 9236 log_path = +DMLOG/log/DSC1_log01.log log_path = +DMLOG/log/DSC1_log02.log [DSC2] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应 config_path = /home/dmdba/config/dsc2 port_num = 5236 mal_host = 10.0.0.12 mal_port = 9236 log_path = +DMLOG/log/DSC2_log01.log log_path = +DMLOG/log/DSC2_log02.log |
初始化实例,节点 1 使用 dmdba 用户执行以下命令:
Copy
./dminit control=/home/dmdba/config/dminit.ini |
实例初始化成功,如下图所示:
初始化完成后会在 init 控制文件配置的目录下生成 2 个实例的配置文件:
将 dsc2 目录复制到节点 2 上对应的目录下。
Copy
scp -r dsc2 192.168.56.12:/home/dmdba/config/ |
观察 css 窗口日志,db 会被自动启动。出现 system is ready ep real open
,说明数据库实例启动成功。
注册服务
以上启动方式为前台启动,仅用于验证集群配置过程。配置成功后需要注册为系统服务,方便启动和关闭集群,以及实现开机自动启动。
2 个节点都需要注册,使用 root 用户执行,到数据库安装目录的 script/root 目录。
节点 1 执行以下命令:
Copy
./dm_service_installer.sh -t dmcss -p css1 -dcr_ini /home/dmdba/config/dmdcr.ini |
节点 2 执行以下命令:
Copy
./dm_service_installer.sh -t dmcss -p css2 -dcr_ini /home/dmdba/config/dmdcr.ini |
关闭前台启动的 css,以服务方式启动 css。
节点 1 执行以下命令:
Copy
systemctl start DmCSSServicecss1 |
节点 2 执行以下命令:
Copy
systemctl start DmCSSServicecss2 |
验证集群状态
配置监视器查看
任意节点新建监视器配置文件,执行以下命令:
Copy
vi /home/dmdba/config/dmcssm.ini |
添加以下内容:
Copy
#和 dmdcr_cfg.ini 中的 DCR_OGUID 保持一致 CSSM_OGUID = 63635 #配置所有 CSS 的连接信息, #和 dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致 CSSM_CSS_IP = 10.0.0.11:9341 CSSM_CSS_IP = 10.0.0.12:9341 CSSM_LOG_PATH =/home/dmdba/dmdbms/log #监视器日志文件存放路径 CSSM_LOG_FILE_SIZE = 1024 #每个日志文件最大 1024 MB CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间 |
启动监视器,dmdba 用户执行,到数据库软件安装目录 bin 下执行以下命令:
Copy
./dmcssm ini_path=/home/dmdba/config/dmcssm.ini |
输入 show 命令,查看 css、asm 和 db 的状态。
以 db 为例,inst_status
字段为 OPEN,vtd_status
字段为 WORKING,active
字段为 TRUE 说明 db 服务正常。
客户端验证
任意节点配置 dm_svc.conf 文件,执行以下命令:
Copy
vi /etc/dm_svc.conf |
添加以下内容:
Copy
dmdsc=(192.168.56.11:5236,192.168.56.12:5236) |
使用 disql 工具登录集群(数据库安装目录的 bin 下):
Copy
./disql SYSDBA/SYSDBA@dmdsc |
查询视图 v$dsc_ep_info
,查看集群状态,执行以下命令:
Copy
select * from v$dsc_ep_info; |
验证故障自动重连
以上 disql 连接不断开的情况下(连接的是节点 1 实例),关闭节点 1 服务器,再次查询。
故障节点重新加入
启动节点 1 服务器后,再次查询。
https://eco.dameng.com