达梦DSC共享远程归档+备份还原

说明:在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'

注意:如果报如下错误

 达梦DSC共享远程归档+备份还原

用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

注意:在第二个节点上启动的时候报如下错误

 达梦DSC共享远程归档+备份还原

用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的状态

 达梦DSC共享远程归档+备份还原

注意:如果想通过监视器关闭DMDSC集群的话,只能关闭ASM和DB的,不能关闭CSS的。

16、故障自动重连

配置 DMDSC 集群,一般要求配置连接服务名,以实现故障自动重连。

vi /etc/dm_svc.conf

添加如下信息:

 达梦DSC共享远程归档+备份还原

disql SYSDBA/SYSDBA@dmdsc_svc  用服务名方式连接。

注意:服务名是配置在客户端,我是在130上测试连接的,所以修改的是130上的dm_svc.conf。

三、备份还原

前提:已经开了归档。

注意:备份还原尽量用dmdba操作,我一开始用root用户还原,报下图的错误,切换成dmdba操作就好了。

 达梦DSC共享远程归档+备份还原

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的时候报了个错,如下图

 达梦DSC共享远程归档+备份还原

解决方式如下图

 达梦DSC共享远程归档+备份还原

 

 

 

更多资讯请上达梦技术社区了解: https://eco.dameng.com

上一篇:Labview使用modbus tcp


下一篇:2021-09-05