1、在第一台服务器上添加一个磁盘
选择虚拟机(DSC01) > 右键“设置” > 添加“硬盘” > SCSI > 创建新虚拟磁盘 > 指定磁盘容量 > 指定磁盘文件路径及命名 > 确定。
选择新添加得硬盘 2 (SCSI) > 高级 > 设置设备号为 SCSI 1:1 ,模式为独立、永久。
2、在第二台服务器同样添加这个磁盘。
选择虚拟机(DSC02) > 右键“设置” > 添加“硬盘” > SCSI > 使用现有虚拟磁盘 > 选择现有磁盘(浏览找到刚创建的“DMDSC.vmdk”) > 完成。
选择新添加得硬盘 2 (SCSI) > 高级 > 设置设备号为 SCSI 1:1 ,模式为独立、永久。
在共享磁盘上裸设备划分(DSC01节点操作即可):
输入:
fdisk /dev/sdb
依次输入:
n → p → 1 → “回车” → +100M # dcr
n → p → 2 → “回车” → +100M # vote
n → p → 3 → “回车” → +2048M # log0
n → p → 4 → “回车” → 回车 # data0
w # 保存
查看分区:
fdisk - l
推荐采用UUID的方式进行裸设备的绑定。
绑定设备的 UUID。创建 uuid.sh 文件,使用脚本生成配置文件
##创建uuid.sh文件,写入如下内容:
vim uuid.sh
curr=$(cd "$(dirname "$0")";pwd)
rm -f $curr/88-dm-asmdevices.rules
for i in 1 2 3 4;
do
echo "KERNEL==\"sd?\",SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\",RESULT==\"`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", SYMLINK+=\"dm/asm-disk$i\",OWNER=\"dmdba\", GROUP=\"dinstall\",MODE=\"0660\"" >> $curr/88-dm-asmdevices.rules
done
##执行 uuid.sh 脚本
chmod +x uuid.sh
./uuid.sh
##脚本执行成功后,会生成绑定配置文件 88-dm-asmdevices.rules,可以根据自己的需求进行修改别名 SYMLINK,本文档修改如下:
vim 88-dm-asmdevices.rules
KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c2929c3dab7d6dcf02e57ada868c", SYMLINK+="raw/raw1",OWNER="dmdba", GROUP="dinstall",MODE="0660"
KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="3600b342449774d0d2c16d990fd6300db", SYMLINK+="raw/raw2",OWNER="dmdba", GROUP="dinstall",MODE="0660"
KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="3600b342a2b1bd08d28e0d58c5db300db", SYMLINK+="raw/raw3",OWNER="dmdba", GROUP="dinstall",MODE="0660"
KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="3600b34208f0b5c5d515dd41dfde300db", SYMLINK+="raw/raw4",OWNER="dmdba", GROUP="dinstall",MODE="0660"
配置部署文件。生成配置文件后,把 88-dm-asmdevices.rules 配置文件 cp 到 DSC 的每个节点上
cp 88-dm-asmdevices.rules /etc/udev/rules.d/88-dm-asmdevices.rules
检查生效
①重启服务器,建议使用该方法
②如果无法重启,执行下述命令
udevadm trigger --type=devices --action=change
udevadm control --reload-rules
③授权
chown dmdba:dinstall /dev/raw/raw* -R
④检查生效
blockdev --getsize64 /dev/raw/raw1 blockdev --getsize64 /dev/raw/raw2 blockdev --getsize64 /dev/raw/raw3 blockdev --getsize64 /dev/raw/raw4
编辑/etc/udev/rules.d/70-persistent-ipoib.rules文件,增加以下语句:(该配置文件两节点均需添加)
vi /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"
ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"
完成裸设备绑定:(2个节点都需要)
partprobe /dev/sdb
udevadm control --reload-rules
udevadm trigger --type=devices --action=change
重启服务:
systemctl restart systemd-udev-trigger.service
查看裸设备:
ll /dev/raw/*
查看裸设备大小:
blockdev --getsize64 /dev/raw/raw[1/2/3/4]
配置dmdcr_cfg.ini文件(双节点)
DCR_EP_HOST、DCR_EP_PORT根据自身情况进行修改。
vi /dmdata/data/dmdcr_cfg.ini
DCR_N_GRP = 3 ##集群环境有多少个 GROUP,范围:1~16
DCR_VTD_PATH = /dev/raw/raw2 ##规划为 vote 的磁盘
DCR_OGUID = 63635 ## 消息标识,一个组里面只有一个。
[GRP] #新建一个 GROUP
DCR_GRP_TYPE = CSS ##组类型(CSS/ASM/DB)
DCR_GRP_NAME = GRP_CSS ##组名
DCR_GRP_N_EP = 2 ##组内节点个数
DCR_GRP_DSKCHK_CNT = 60 ##磁盘心跳容错时间,单位:秒
[GRP_CSS]
DCR_EP_NAME = CSS0 ##CSS 节点名
DCR_EP_HOST = 192.168.23.134 ##心跳地址
DCR_EP_PORT = 9341 ##CSS 端口
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.23.135
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 ##ASM 节点名,和 dmasvrmal 的 MAL_INST_NAME 一致
DCR_EP_SHM_KEY = 93360 ##共享内存标识
DCR_EP_SHM_SIZE = 10 ##共享内存大小
DCR_EP_HOST = 192.168.23.134 ##心跳地址
DCR_EP_PORT = 9349 ##ASM 端口
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.23.135
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 ##实例名,和 dm.ini 的 INSTANCE_NAME 一致
DCR_EP_SEQNO = 0 ##组内序号,不能重复
DCR_EP_PORT = 5236 ##实例端口,和 dm.ini 的 PORT_NUM 一致
DCR_CHECK_PORT = 9741 ##DCR 检查端口
[GRP_DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9742
使用 DMASMCMD 工具初始化,1个节点初始化即可:
进入数据库安装目录 /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'
准备 DMASM 的 MAL 配置文件(命名为 dmasvrmal.ini),使用 DMASM 的“ 2个 ”节点都要配置,内容完全一样,保存到/dmdata/data 目录下:
vi /dmdata/data/dmasvrmal.ini
[MAL_INST1]
MAL_INST_NAME = ASM0 #数据库实例名,与 dm.ini 的 INSTANCE_NAME 配置项保持一致,MAL 系统中数据库实例名要保持唯一。
MAL_HOST = 192.168.23.134 #MAL IP 地址,使用 MAL_HOST + MAL_PORT 创建 MAL 链路
MAL_PORT = 7236 #MAL 监听端口,用于数据守护、DSC、MPP 等环境中各节点实例之间MAL链路配置,监听端端口配置此参数,范围1024~65534,发起连接端的端口在 1024~65535 之间随机分配。
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.23.135
MAL_PORT = 7237
配置 DCR 启动配置文件(DSC01 & DSC02)
节点一和节点二各需要创建dmdcr.ini文件。
两者内容差别主要在于DMDCR_SEQNO和PATH中的实例名。
将ASM和DB的重启参数均设置为0,为手动拉起ASM和DB服务,主要是为了防止拉起过程出现故障导致不断重启。
vi /dmdata/data/dmdcr.ini
DSC01:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/dmdata/data/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 0
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/dmdata/data/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/dmdata/data/dsc0_config/dm.ini dcr_ini=/dmdata/data/dmdcr.ini
DSC02:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/dmdata/data/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 1
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/dmdata/data/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD =/home/dmdba/dmdbms/bin/dmserver path=/dmdata/data/dsc1_config/dm.ini dcr_ini=/dmdata/data/dmdcr.ini
DSC01:
创建服务(root用户下执行):
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmcss -p DSC01 -dcr_ini /dmdata/data/dmdcr.ini
启动服务(切换dmdba用户):
su - dmdba
cd /home/dmdba/dmdbms/bin
./DmCSSServiceDSC01 start
DSC02:
创建服务(root用户下执行):
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmcss -p DSC02 -dcr_ini /dmdata/data/dmdcr.ini
启动服务(切换dmdba用户):
su - dmdba
cd /home/dmdba/dmdbms/bin
./DmCSSServiceDSC02 start
DSC01:
创建服务(root用户下执行):
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmasmsvr -p DSC01 -dcr_ini /dmdata/data/dmdcr.ini -y DmCSSServiceDSC01
启动服务(切换dmdba用户):
su - dmdba
cd /home/dmdba/dmdbms/bin
./DmASMSvrServiceDSC01 start
DSC02:
创建服务(root用户下执行):
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmasmsvr -p DSC02 -dcr_ini /dmdata/data/dmdcr.ini -y DmCSSServiceDSC02
启动服务(切换dmdba用户):
su - dmdba
cd /home/dmdba/dmdbms/bin
./DmASMSvrServiceDSC02 start
使用 dmasmtool 工具创建 DMASM 磁盘组:
./dmasmtool DCR_INI=/dmdata/data/dmdcr.ini
输入下列语句创建 DMASM 磁盘组:
#创建日志磁盘组
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
#创建数据磁盘组
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
一个节点配置 dminit.ini 配置文件,保存到/dmdata/data 目录:
vi /home/dmdba/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 = /dmdata/data/dsc0_config
port_num = 5236
mal_host = 192.168.23.134
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 = /dmdata/data/dsc1_config
port_num = 5236
mal_host = 192.168.23.135
mal_port = 9341
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
使用 dminit 初始化 DB 环境:
./dminit control=/dmdata/data/dminit.ini
启动数据库服务器:
将DSC01机器/dmdata/data/dsc1_config 目录拷贝到DSC02机器相同目录下,再分别在2个节点启动 dmserver 即可完成 DMDSC 集群搭建。
scp -r /dmdata/data/dsc1_config dmdba@192.168.23.135:/dmdata/data/
DSC01:
创建服务(root用户下执行):
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmserver -p DSC01 -dm_ini /dmdata/data/dsc0_config/dm.ini -y DmASMSvrServiceDSC01 -dcr_ini /dmdata/data/dmdcr.ini
启动服务(切换dmdba用户):
su - dmdba
cd /home/dmdba/dmdbms/bin
./DmServiceDSC01 start
DSC02:
创建服务(root用户下执行):
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmserver -p DSC02 -dm_ini /dmdata/data/dsc1_config/dm.ini -y DmASMSvrServiceDSC02 -dcr_ini /dmdata/data/dmdcr.ini
启动服务(切换dmdba用户):
su - dmdba
cd /home/dmdba/dmdbms/bin
./DmServiceDSC02 start
将两节点的/dmdata/data/dsc0_config和/dmdata/data/dsc1_config中的dm.ini归档配置ARCH_INI=1
DSC01:
vi /dmdata/data/dsc0_config/dm.ini
DSC02:
vi /dmdata/data/dsc1_config/dm.ini
双向配置共享本地归档的 REMOTE 归档:
DSC01:
vi /dmdata/data/dsc0_config/dmarch.ini
ARCH_LOCAL_SHARE = 1 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST =+DMDATA/DSC0/arch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0 [ARCH_REMOTE1] ARCH_TYPE = REMOTE ARCH_DEST = DSC1 ARCH_INCOMING_PATH =+DMDATA/DSC1/arch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0
DSC02:
vi /dmdata/data/dsc1_config/dmarch.ini
ARCH_LOCAL_SHARE = 1 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST =+DMDATA/DSC1/arch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0 [ARCH_REMOTE1] ARCH_TYPE = REMOTE ARCH_DEST = DSC0 ARCH_INCOMING_PATH =+DMDATA/DSC0/arch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0
配置 dmcssm.ini 文件:
vi /home/dmdba/dmdbms/bin/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.23.134:9341
CSSM_CSS_IP = 192.168.23.135:9343
CSSM_LOG_PATH =../log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
启动 dmcssm 监视器:
cd /home/dmdba/dmdbms/bin
./dmcssm INI_PATH=/home/dmdba/dmdbms/bin/dmcssm.ini
(DSC01)创建 T1 表
create table t1(id int,name varchar2(50));
(DSC01)向 T1 表插入数据
INSERT INTO T1 VALUES (1,'name1'),(2,'name2');
(DSC01)COMMIT提交数据
commit;
(DSC02)查询数据
select * from t1;
文章
阅读量
获赞