说明:在DMDSC集群中,各个节点在配置本地归档之外,还需要再配置一个远程归档,比如节点1,除了要存储自己的本地归档外,其他机器还会发送redo日志到节点1生成远程归档。
之前写过一篇把归档信息存储在节点上的博客。
博客地址:https://www.cnblogs.com/wuran222/p/15076429.html
今天试一下共享本地归档的远程归档,就是不再发送redo日志到其他机器上生成远程归档日志文件,而是存储在共享盘上。
比如有两台服务器A和B,以前的做法是A服务器上存储自己的归档,还需要把B服务器的归档存储到A服务器上,同样B服务器也需要存储自己的归档和A服务器的归档,因为备份还原需要用。现在可以做到,A节点和B节点的归档信息都存储在共享盘上。
一、环境准备
CentOS3(192.168.202.130)
CentOS4(192.168.202.131)
注意:环境准备这块,因为之前在另一篇博客上也写了,所以现在省略了很多,需要的可以参考下面这篇博客:
博客地址:https://www.cnblogs.com/wuran222/p/15076429.html
1、新建两台虚拟机
2、在CentOS3创建新硬盘
3、在CentOS4添加之前创建的硬盘
4、修改vmx文件
打开CentOS4的vmx配置文件,加入如下信息:
disk.locking="FALSE"
scsi0:1.SharedBus="Virtual"
5、查看硬盘有没有加入
二、安装达梦数据库管理系统
1、创建用户组、用户和安装目录
[root@dameng home]# groupadd dinstall
[root@dameng home]# useradd -g dinstall dmdba
[root@dameng home]# passwd dmdba
PWD : dameng123
创建达梦数据库管理系统安装目录
mkdir dmdbms
chown -R dmdba:dinstall dmdbms
chmod -R 755 dmdbms
注意:dmdbms目录如果不是空的会报错。
2、安装
注意:最好不要用root安装。
上传iso文件或者DMInstall.bin,我是直接上传的DMInstall.bin,放在/home下
chown -R dmdba:dinstall /home/DMInstall.bin
chmod -R 755 /home/DMInstall.bin
切换dmdba登录
[dmdba@dameng home]# ./DMInstall.bin -i
请选择安装语言(C/c:中文 E/e:英文) [C/c]:c
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n
是否设置时区? (Y/y:是 N/n:否) [Y/y]:y
请选择设置时区 [21]:21
请选择安装类型的数字序号 [1 典型安装]:1
请选择安装目录 [/opt/dmdbms]:/home/dmdba/dmdbms
3、在共享磁盘上划分裸设备
1)开始划分
两个节点都执行以下语句完成裸设备绑定
partprobe /dev/sdb 重读分区表
systemctl restart systemd-udev-trigger.service
说明:n是“new”新建分区的意思,p回车新建主分区,此时选择分区号(1-4间)。
Firstcylinder(1-20805,default1):这里是设置分区起始的柱面。
Lastcylinderor+sizeor+sizeMor+sizeK(1-20805,default20805):此处是设置分区结束柱面,+3G表示从起始柱面开始向后3G结束,也是是设置分区大小为3G。
2)编辑/etc/udev/rules.d/60-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"
ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"
说明:Linux平台通过udev的方式将块设备转换为字符设备,并固定设备的权限和所有者。
KERNEL 设备名称。RUN+="raw /dev/raw/rawX %M %m" X是系统使用的raw设备号码。
4、准备dmdcr_cfg.ini配置文件
放在 /home/dmdba/dmdbms/config 目录下,两个节点均需要, 后续 DMASMCMD工具执行 init 语句会使用到(初始化 DCR 磁盘)。
#集群环境包括3个group,分别是css组、asm组、dsc组
DCR_N_GRP = 3
# Voting Disk路径。
DCR_VTD_PATH = /dev/raw/raw2
#消息标识,dmcssm登录dmcss消息校验用。和dmcssm.ini 中的 CSSM_OGUID 保持一致。
DCR_OGUID = 63635
#[GRP]表示新建一个 Group
[GRP]
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = GRP_CSS
DCR_GRP_N_EP = 2
#故障检测时间
DCR_GRP_DSKCHK_CNT = 60
#[]里的是组名,与 DCR_GRP_NAME 对应
[GRP_CSS]
DCR_EP_NAME = CSS0
#节点 IP(实例所在机器的 IP 地址)
DCR_EP_HOST = 192.168.202.130
DCR_EP_PORT = 9341
#[]里的是组名,与 DCR_GRP_NAME 对应
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.202.131
DCR_EP_PORT = 9343
#[GRP]表示新建一个 Group
[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = GRP_ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
#[]里的是组名,与 DCR_GRP_NAME 对应
[GRP_ASM]
DCR_EP_NAME = ASM0
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.202.130
DCR_EP_PORT = 9349
DCR_EP_ASM_LOAD_PATH = /dev/raw
#[]里的是组名,与 DCR_GRP_NAME 对应
[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.202.131
DCR_EP_PORT = 9351
# ASM 磁盘扫描路径
DCR_EP_ASM_LOAD_PATH = /dev/raw
#[GRP]表示新建一个 Group
[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
#[]里的是组名,与 DCR_GRP_NAME 对应
[GRP_DSC]
#节点名,DB 的节点名必须和 dm.ini 里的 INSTANCE_NAME 保持一致
DCR_EP_NAME = DSC0
#组内序列号
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
#[]里的是组名,与 DCR_GRP_NAME 对应
[GRP_DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9742
注意:DCR_EP_HOST为内网ip,我虚拟机没有设置内外网,所以都是一样的。
5、使用 DMASMCMD 工具初始化磁盘组
1)在其中一个节点上启动dmasmcmd工具
cd /home/dmdba/dmdbms/bin
./dmasmcmd
2)依次输入以下命令(只需在一台机器执行即可)
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/config/dmdcr_cfg.ini' identified by 'abcd'
ASM>init votedisk '/dev/raw/raw2' from '/home/dmdba/dmdbms/config/dmdcr_cfg.ini'
注意:如果报如下错误
用root执行如下语句即可
partprobe /dev/sdb 重读分区表
systemctl restart systemd-udev-trigger.service
6、配置dmasvrmal.ini文件(两个节点都一样)
存放目录 home/dmdba/dmdbms/config
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.202.130
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.202.131
MAL_PORT = 7237
注意:MAL_HOST是内网ip。
7、准备 dmdcr.ini 配置文件
8、启动DMCSS、DMASM服务
在两台虚拟机分别前台启动,方便查看启动信息。
cd /home/dmdba/dmdbms/bin
./dmcss DCR_INI=/home/dmdba/dmdbms/config/dmdcr.ini
./dmasmsvr DCR_INI=/home/dmdba/dmdbms/config/dmdcr.ini
注意:在第二个节点上启动的时候报如下错误
用root执行如下语句即可
partprobe /dev/sdb 重读分区表
systemctl restart systemd-udev-trigger.service
9、使用 dmasmtool 工具创建 DMASM 磁盘组
选择一个节点,启动 dmasmtool 工具。
cd /home/dmdba/dmdbms/bin
./dmasmtool DCR_INI=/home/dmdba/dmdbms/config/dmdcr.ini
输入下列语句创建 DMASM 磁盘组:
#创建日志磁盘组
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
#创建数据磁盘组
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
10、准备 dminit.ini 配置文件(一个节点即可)
存放目录 home/dmdba/dmdbms/config
我是放在130这个节点上。
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/config/dsc0_config
port_num = 5236
mal_host = 192.168.202.130
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/config/dsc1_config
port_num = 5237
mal_host = 192.168.202.131
mal_port = 9341
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
11、使用 dminit 初始化 DB 环境
在130上启动dminit工具初始化数据库。
./dminit control=/home/dmdba/dmdbms/config/dminit.ini
dminit执行完成后,会在config_path目录(/home/dmdba/dmdbms/config/rac0_config和rac1_config)下生成配置文件dm.ini和dmmal.ini。
注:初始化数据库完成之后,将130节点上生成的rac1_config文件拷贝到131的/home/dmdba/dmdbms/config目录下,然后将130上/home/dmdba/dmdbms/config目录下的rac1_config文件夹删掉。
[dmdba@dameng3 config]$ scp -r dsc1_config dmdba@192.168.202.131:/home/dmdba/dmdbms/config/
12、配置远程归档
先将两个节点上的dm.ini中的ARCH_INI设置为1,然后配置dmarch.ini文件
1)节点130:
存放目录 /home/dmdba/dmdbms/config/dsc0_config
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
2)节点131:
存放目录 /home/dmdba/dmdbms/config/dsc1_config
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
13、启动数据库服务
1)启动130节点的
./dmserver /home/dmdba/dmdbms/config/dsc0_config/dm.ini dcr_ini=/home/dmdba/dmdbms/config/dmdcr.ini
2)启动131节点的
./dmserver /home/dmdba/dmdbms/config/dsc1_config/dm.ini dcr_ini=/home/dmdba/dmdbms/config/dmdcr.ini
14、注册服务
1)注册命令
root用户
cd /home/dmdba/dmdbms/script/root
节点1:
./dm_service_installer.sh -t dmcss -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -p CSS1
./dm_service_installer.sh -t dmasmsvr -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -p ASM1 -y DmCSSServiceCSS1
./dm_service_installer.sh -t dmserver -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -dm_ini /home/dmdba/dmdbms/config/dsc0_config/dm.ini -p DB1 -y DmASMSvrServiceASM1
节点2:
./dm_service_installer.sh -t dmcss -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -p CSS2
./dm_service_installer.sh -t dmasmsvr -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -p ASM2 -y DmCSSServiceCSS2
./dm_service_installer.sh -t dmserver -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -dm_ini /home/dmdba/dmdbms/config/dsc1_config/dm.ini -p DB2 -y DmASMSvrServiceASM2
2)启动命令
节点1:
systemctl start DmCSSServiceCSS1
systemctl start DmASMSvrServiceASM1
systemctl start DmServiceDB1
节点2:
systemctl start DmCSSServiceCSS2
systemctl start DmASMSvrServiceASM2
systemctl start DmServiceDB2
注意:启动的时候,先启动节点1的CSS,再启动节点2的CSS。启动好后再启动节点1的ASM,再启动节点2的ASM。最后启动节点1的DB和节点2的DB。
关闭的时候,先关闭节点1的DB,再关闭节点2的DB。关闭后再关闭节点1的ASM和节点2的ASM,最后关闭节点1的CSS和节点2的CSS。
如果启动的时候是用./DmServiceDB1 start 那么关闭的时候需要用./DmServiceDB1 stop 不然可能会关不掉。
15、配置监视器
监视器放在第三方机器上,为 windows 操作系统,dmcssm.ini 配置文件路径为 D:\DCA\cssm。
1)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.202.130:9341
CSSM_CSS_IP = 192.168.202.131:9343
CSSM_LOG_PATH = E:\DCA\cssm\log
#监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 32
#每个日志文件最大 32M
CSSM_LOG_SPACE_LIMIT = 0
#不限定日志文件总占用空间
2)启动监视器
进入E:\dmdbms\bin目录
dmcssm.exe INI_PATH=E:\DCA\cssm\dmcssm.ini
启动好后 ,输入show,查看CSS、ASM和DB的状态
注意:如果想通过监视器关闭DMDSC集群的话,只能关闭ASM和DB的,不能关闭CSS的。
16、故障自动重连
配置 DMDSC 集群,一般要求配置连接服务名,以实现故障自动重连。
vi /etc/dm_svc.conf
添加如下信息:
disql SYSDBA/SYSDBA@dmdsc_svc 用服务名方式连接。
注意:服务名是配置在客户端,我是在130上测试连接的,所以修改的是130上的dm_svc.conf。
三、备份还原
前提:已经开了归档。
注意:备份还原尽量用dmdba操作,我一开始用root用户还原,报下图的错误,切换成dmdba操作就好了。
1、备份
在130上备份:
BACKUP DATABASE BACKUPSET '/home/dmdba/dmdbms/BAK/db_full_bak_for_dsc';
注意:备份其中任意一个节点即可备份整个DMDSC环境。
2、还原
./dmrman dcr_ini=/home/dmdba/dmdbms/config/dmdcr.ini
restore DATABASE '/home/dmdba/dmdbms/config/dsc0_config/dm.ini' FROM BACKUPSET '/home/dmdba/dmdbms/BAK/db_full_bak_for_dsc';
recover DATABASE '/home/dmdba/dmdbms/config/dsc0_config/dm.ini' FROM BACKUPSET '/home/dmdba/dmdbms/BAK/db_full_bak_for_dsc';
recover DATABASE '/home/dmdba/dmdbms/config/dsc0_config/dm.ini' update db_magic;
注意:在recover的时候报了个错,如下图
解决方式如下图
更多资讯请上达梦技术社区了解: https://eco.dameng.com