一、两节点DMDSC(DMASM)
- 环境准备
本地创建两台虚拟机如下
机器 | 初始状态 | 操作系统 | 双网卡配置(内网网卡) |
192.168.43.133 | 装有DM软件无实例 | Centos 7 | 10.0.2.101 |
192.168.43.134 | 装有DM软件无实例 | Centos 7 | 10.0.2.102 |
2.挂载共享存储
VM虚拟机上添加创建磁盘DMASM.vmdk,选择192.168.43.133在开机之前添加磁盘
高级设置勾选独立和永久模式选项
192.168.43.134机器上添加已创建出来的虚拟磁盘即可.
在两台虚拟机实际目录中找到对应的XXXX.vmx文件添加disk.locking=”FALSE“参数以避免后启动的虚拟机启动失败。
3.在共享磁盘上裸设备划分
I.运行fdisk /dev/sdb 命令进行磁盘分区(单节点上执行)
II.编辑UDEV规则 /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" |
III.重新加载udev规则
Centos 7运行以下命令加载UDEV规则 /sbin/udevadm trigger --type=devices --action=change /sbin/udevadm control --reload-rules blockdev --getsize64 /dev/raw/raw1 #命令可查裸设备大小 |
4.配置dmdcr_cfg.ini(单节点)
创建目录/home/dmdba/dmdbms/DSC用于存放DSC集群配置文件
mkdir -p /home/dmdba/dmdbms/DSC
I.配置dmdcr_cfg.ini并使用DMASMCMD工具初始化创建磁盘组(节点一执行即可)
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 = 10.0.2.101 DCR_EP_PORT = 9341 [GRP_CSS] DCR_EP_NAME = CSS1 DCR_EP_HOST = 10.0.2.102 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 = 10.0.2.101 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 = 10.0.2.102 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 |
/home/dmdba/dmdbms/bin ./dmasmcmd ASM>create dcrdisk '/dev/raw/raw1' 'dcr' ASM>create votedisk '/dev/raw/raw2' 'vote' ASM>create asmdisk '/dev/raw/raw3' 'LOG0' ASM>create asmdisk'/dev/raw/raw4' 'DATA0' ASM>init dcrdisk '/dev/raw/raw1' from '/home/dmdba/dmdbms/DSC/dmdcr_cfg.ini' identified by 'abcd' ASM>init votedisk '/dev/raw/raw2' from '/home/dmdba/dmdbms/DSC/dmdcr_cfg.ini' |
5.配置dmasvrmal.ini (所有节点配置)
[MAL_INST1] MAL_INST_NAME = ASM0 MAL_HOST = 10.0.2.101 MAL_PORT = 7236 [MAL_INST2] MAL_INST_NAME = ASM1 MAL_HOST = 10.0.2.102 MAL_PORT = 7237 |
6.配置dmdcr.ini(所有节点配置)
DMDCR_PATH = /dev/raw/raw1 DMDCR_MAL_PATH =/home/dmdba/dmdbms/DSC/dmasvrmal.ini #dmasmsvr使用的MAL配置文件路径 DMDCR_SEQNO = 0 #0表示序号 #ASM重启参数,命令行方式启动 DMDCR_ASM_RESTART_INTERVAL = 0 DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/dmdbms/DSC/dmdcr.ini #DB重启参数,命令行方式启动 DMDCR_DB_RESTART_INTERVAL = 0 DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/dmdbms/DSC0/dm.ini dcr_ini=/home/dmdba/dmdbms/DSC/dmdcr.ini |
注意红色的地方根据节点具体实际情况修改调整
7.启动DMCSS、DMASM服务程序(所有节点执行)
./dmcss DCR_INI=/home/dmdba/dmdbms/DSC/dmdcr.ini
./dmasmsvr DCR_INI=/home/dmdba/dmdbms/DSC/dmdcr.ini
8.使用dmasmtool工具创建DMASM磁盘组(单节点)
./dmasmtool DCR_INI=/home/dmdba/dmdbms/DSC/dmdcr.ini
#创建日志磁盘组 create diskgroup 'DMLOG' asmdisk'/dev/raw/raw3' #创建数据磁盘组 create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4' |
9.配置dminit.ini并使用dminit初始化DB环境(单节点执行)
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/dmdba/dmdbms/DSC/DSC0 port_num = 5236 mal_host = 10.0.2.101 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/dmdba/dmdbms/DSC/DSC1 port_num = 5237 mal_host = 10.0.2.102 mal_port = 9341 log_path = +DMLOG/log/dsc1_log01.log log_path = +DMLOG/log/dsc1_log02.log |
./dminit control=/home/dmdba/dmdbms/DSC/dminit.ini
10.启动数据库服务器
将10.0.2.101机器/home/dmdba/dmdbms/DSC/dsc1目录拷贝到10.0.2.102机器相同目录下,再分别启动dmserver即可完成DMDSC集群搭建
两个节点手动启dmserver
./dmserver /home/dmdba/dmdbms/DSC/DSC0/dm.ini dcr_ini=/home/dmdba/dmdbms/DSC/dmdcr.ini ./dmserver /home/dmdba/dmdbms/DSC/DSC1/dm.ini dcr_ini=/home/dmdba/dmdbms/DSC/dmdcr.ini |
至此,DMDSC两节点集群搭建完毕,状态显示如下:
二、配置服务名(dm_svc.conf)
连接服务名配置dm_svc.conf由于是在客户端起作用的,因此新建一台虚拟机(192.168.43.135)作为客户端进行配置
vi /etc/dm_svc.conf
dmdsc_svc=(192.168.43.133:5236,192.168.43.134:5237) SWITCH_TIME=(10000) SWITCH_INTERVAL=(1000) |
配置后重启机器生效,连接情况如下
三、验证所有节点数据可查
I.连接DSC0节点并做如下操作
./disql SYSDBA/SYSDBA@192.168.43.133:5236 SQL>create tablespace TS_DMOA datafile '+DMDATA/TS_DMOA.dbf' size 64; SQL>create user DMOA identified by dameng_oa default tablespace TS_DMOA; create table DMOA.users ( userid INT not null, //非空 主键 username VARCHAR(18) not null, //非空 用户名 phone INT not null, //非空 电话 address VARCHAR(256) not null, //非空 地址 primary key(userid) ); SQL> insert into DMOA.users values (1,'xiaoshu',18999999,'sashdadshakjdsdas'); SQL> select * from DMOA.users; |
II .连接DSC1节点进行测试是否能查到上面插入的数据
./disql DMOA/dameng_oa@192.168.43.134:5237 SQL> select * from users; |
结果如下:
四、体验故障自动重连
按照如下步骤进行试验
- 通过服务名连接./disql SYSDBA/SYSDBA@dmdsc_svc
- 确认连接哪个DB实例SQL> select name from v$instance;
- 关闭DSC0实例,或者将节点0所在的这台主机关机
- 等待几秒后,再次执行SQL> select name from v$instance; 提示所在实例为DSC1可以看到会话已经切换到DSC1
试验结果如下图:
五、动态添加第三节点DSC2
- 环境准备
机器 | 初始状态 | 操作系统 | 双网卡配置(内网网卡) |
192.168.43.133 | 装有DM软件无实例 | Centos 7 | 10.0.2.101 |
192.168.43.134 | 装有DM软件无实例 | Centos 7 | 10.0.2.102 |
192.168.43.135 | 装有DM软件无实例 | Centos 7 | 10.0.2.103 |
2. 导出dmdcr_cfg_bak.ini
在10.0.2.101机器上使用DMASMCMD工具export出备份dmdcr_cfg_bak.in
./dmasmcmd ASM> export dcrdisk '/dev/raw/raw1' to '/home/dmdba/dmdbms/DSC/dmdcr_cfg_bak.ini' |
3. 为新增节点准备日志文件
使用DIsql登录任意一个节点执行添加日志文件操作:至少两个日志文件,路径必须是ASM文件格式,大小可以参考其他两个活动节点
./disql SYSDBA/SYSDBA@192.168.43.133:5236 SQL>alter database add node logfile '+DMLOG/log/DSC2_log01.log' size 256, '+DMLOG/log/DSC2_log02.log' size 256; |
使用dmctlcvt工具将dm.ctl转换为文本文件dmctl.txt,查看dmctl.txt,新增节点的日志文件信息已经添加进dm.ctl
./dmctlcvt TYPE=1 SRC=+DMDATA/data/dsc/dm.ctl DEST=/home/dmdba/dmdbms/DSC/dmctl.txt DCR_INI=/home/dmdba/dmdbms/DSC/dmdcr.ini |
使用dmasmtool工具登录ASM文件系统,也可以看到新增的节点日志文件
./dmasmtool DCR_INI=/home/dmdba/dmdbms/DSC/dmdcr.ini ASM>ls +DMLOG/log |
4. 为新增节点准备config_path
将10.0.2.101机器/home/dmdba/dmdbms/DSC/DSC0 目录拷贝到10.0.2.103机器相同目录下,修改名字为/home/dmdba/dmdbms/DSC/DSC2。修改DSC2文件夹下的配置文件:
1)修改dm.ini
CONFIG_PATH= /home/dmdba/dmdbms/DSC/DSC2 instance_name= DSC2 |
2)如果打开了归档参数,修改dmarch.ini
5.新增节点配置dmdcr.ini
DMDCR_PATH = /dev/raw/raw1 DMDCR_MAL_PATH =/home/dmdba/dmdbms/DSC/dmasvrmal.ini #dmasmsvr使用的MAL配置文件路径 DMDCR_SEQNO = 2 #ASM重启参数,命令行方式启动 DMDCR_ASM_RESTART_INTERVAL = 0 DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/dmdbms/DSC/dmdcr.ini #DB重启参数,命令行方式启动 DMDCR_DB_RESTART_INTERVAL = 0 DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/dmdbms/DSC/DSC2/dm.ini dcr_ini=/home/dmdba/dmdbms/DSC/dmdcr.ini |
6.修改所有节点dmasvrmal.ini
新增如下参数
[MAL_INST3] MAL_INST_NAME= ASM2 MAL_HOST= 10.0.2.103 MAL_PORT= 7238 |
7.修改所有节点dmmal.ini
新增如下参数
[mal_inst2] mal_inst_name= DSC2 mal_host= 10.0.2.103 mal_port= 9342 |
8.修改dmdcr_cfg_bak.ini
DCR_EP_PORT = 9343 [GRP_CSS] DCR_EP_NAME = CSS2 DCR_EP_HOST = 10.0.2.103 DCR_EP_PORT = 9344 [GRP_ASM] DCR_EP_NAME = ASM0 DCR_EP_SHM_KEY = 93360 DCR_EP_SHM_SIZE = 20 DCR_EP_HOST = 10.0.2.101 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 = 10.0.2.102 DCR_EP_PORT = 9351 DCR_EP_ASM_LOAD_PATH = /dev/raw [GRP_ASM] DCR_EP_NAME = ASM2 DCR_EP_SHM_KEY = 93362 DCR_EP_SHM_SIZE = 20 DCR_EP_HOST = 10.0.2.103 DCR_EP_PORT = 9352 DCR_EP_ASM_LOAD_PATH = /dev/raw [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 [GRP_DSC] DCR_EP_NAME = DSC2 DCR_EP_SEQNO = 2 DCR_EP_PORT = 5238 DCR_CHECK_PORT = 9743 |
9.使用DMASMCMD工具将新增节点信息
./dmasmcmd extend dcrdisk '/dev/raw/raw1' from '/home/dmdba/dmdbms/DSC/dmdcr_cfg_bak.ini' |
屏幕输出如下
10. 在dmcssm控制台执行扩展节点命令
extend node
11.启动第三节点dmcss、dmasmsvr、dmserver服务
./dmcss DCR_INI=/home/dmdba/dmdbms/DSC/dmdcr.ini ./dmasmsvr DCR_INI=/home/dmdba/dmdbms/DSC/dmdcr.ini ./dmserver /home/dmdba/dmdbms/DSC/DSC2/dm.ini dcr_ini=/home/dmdba/dmdbms/DSC/dmdcr.ini |
在dmcssm控制台可以查看集群状态信息如下
更多资讯请上达梦技术社区了解: https://eco.dameng.com