Dsc搭建
一:介绍
DM共享存储数据库集群的英文全称 DM Data Shared Cluster,简称 DMDSC。
DM 共享存储数据库集群,允许多个数据库实例同时访问、操作同一数据库,具有高可
用、高性能、负载均衡等特性。DMDSC 支持故障自动切换和故障自动重加入,某一个数据
库实例故障后,不会导致数据库服务无法提供。
二:准备环境
硬件:两台配置相同的机器、2G内存,20G本地磁盘,
操作系统:Kylin-Server-V10-SP3-General-Release-2303-X86_64
数据库版本:Kylin-Server-V10-SP3-General-Release-2303-X86_64
网卡:虚拟机,每台服务器使用一个网卡
DSC01:192.168.23.200
DSC02:192.168.23.201
三:创建共享磁盘
在虚拟机安装的目录下找到vmware-vdiskmanager.exe,使用cmd创建共享磁盘,语句如下:
vmware-vdiskmanager.exe -c -s 15000Mb -a lsilogic -t 2 "D:\share2\sharediskw.vmdk"
注:15000M指共享磁盘大小;D:\share2指共享磁盘存放路径
1.两台机器都要添加硬盘
到两台虚拟机下的.vmx查看是否末尾有以下参数,没有的手动加入
disk.locking="FALSE"
scsi0:1.SharedBus="Virtual"
scsi1:1.SharedBus="Virtual"
2.开机
输入fdisk /dev/sdb进入划分命令
节点1操作
依次输入 n –>p->回车 ->回车-> +1G-> 回车,完成第一块磁盘划分
依次输入 n –>p->回车 ->回车-> +2G-> 回车,完成第二块磁盘划分
依次输入 n –>p->回车 ->回车-> +3G -> 回车,完成第三块磁盘划分
依次输入n –>p->4 ->回车->回车->回车,完成第四块磁盘划分
w 保存退出
确保都一样
3.接下来添加语句
vim /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"
执行以下命令,使udev生效
udevadm trigger --type=devices --action=change
两边服务器都要查看,需要看到以下画面,没有的话,重启服务器
四:关闭防火墙
[root@localhost opt]# systemctl stop firewalld
[root@localhost opt]# systemctl disable firewalld.service
vim /etc/selinux/config 修改SELINUX=disable
五:安装数据库准备工作
1.创建用户与组
[root@susu ~]# groupadd dinstall
[root@susu ~]# useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
使用 vim 编辑器打开 /etc/security/limits.conf 文件 ,在下面添加
dmdba soft nice 0
dmdba hard nice 0
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
创建/dm,并且授权给用户dmdba,安装DM8
[root@susu ~]# mkdir /dm
[root@susu ~]# chown dmdba:dinstall -R /dm/
[root@susu ~]# chmod 755 -R /dm/
在用户dmdba上安装数据库(不初始化实例)。存放于/dm,步骤不演示。
六:配置 DCR 初始化配置文件
存放路径 /dm/data
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 = CSS1
DCR_EP_HOST = 192.168.23.200
DCR_EP_PORT = 9341
[GRP_CSS]
DCR_EP_NAME = CSS2
DCR_EP_HOST = 192.168.23.201
DCR_EP_PORT = 9341
[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 = ASM1
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 20
DCR_EP_HOST = 192.168.23.200
DCR_EP_PORT = 9349
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP_ASM]
DCR_EP_NAME = ASM2
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 20
DCR_EP_HOST = 192.168.23.201
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 = 5237
DCR_CHECK_PORT = 9741
[GRP_DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5237
DCR_CHECK_PORT = 9742
拷贝过去
七:创建 ASM 磁盘
在 bin 目录下,打开 ./dmasmcmd
ASM>create dcrdisk '/dev/raw/raw1' 'dcr'
[TRACE]The ASM initialize dcrdisk /dev/raw/raw1 to name DMASMdcr
Used time: 7.181(ms).
ASM>create votedisk '/dev/raw/raw2' 'vote'
[TRACE]The ASM initialize votedisk /dev/raw/raw2 to name DMASMvote
Used time: 2.161(ms).
ASM>create asmdisk '/dev/raw/raw3' 'LOG0'
[TRACE]The ASM initialize asmdisk /dev/raw/raw3 to name DMASMLOG0
Used time: 1.700(ms).
ASM>create asmdisk '/dev/raw/raw4' 'DATA0'
[TRACE]The ASM initialize asmdisk /dev/raw/raw4 to name DMASMDATA0
Used time: 2.280(ms).
编辑好 dmdcr_cfg.ini 配置文件,才能进行 初始化 dcrdisk 和 votedisk,在 ASM 提示符执行以下命令:(DMASMCMD工具中执行命令结尾不要加分号)
两服务器一定要检查,共享磁盘的情况,是否如下
八:配置ASM的MAL系统配置文件
2 个节点都需要配置,且文件内容相同,执行以下命令
vim dmasvrmal.ini
[MAL_INST1]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.23.200
MAL_PORT = 7238
[MAL_INST2]
MAL_INST_NAME = ASM2
MAL_HOST = 192.168.23.201
MAL_PORT = 7238
九:配置 DCR 启动配置文件
2 个节点都需要配置,且文件内容相同,执行以下命令
节点1
vim /dm/data/dmdcr.ini
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/dm/data/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 0
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 10
DMDCR_ASM_STARTUP_CMD = /dm/bin/dmasmsvr dcr_ini=/dm/data/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 30
DMDCR_DB_STARTUP_CMD = /dm/bin/dmserver path=/dm/data/dsc1/dm.ini dcr_ini=/dm/data/dmdcr.ini
DMDCR_AUTO_OPEN_CHECK = 60
节点2
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/dm/data/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 1
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 10
DMDCR_ASM_STARTUP_CMD = /dm/bin/dmasmsvr dcr_ini=/dm/data/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 30
DMDCR_DB_STARTUP_CMD = /dm/bin/dmserver path=/dm/data/dsc2/dm.ini dcr_ini=/dm/data/dmdcr.ini
DMDCR_AUTO_OPEN_CHECK = 60
十:启动集群
2 个节点启动 dmcss,dmdba 用户到数据库安装目录 bin 下执行以下命令(配置 DCR 启动配置文件设置了自动拉起服务,所以在启动CSS服务时,会启动ASM服务)
./dmcss dcr_ini=/dm/data/dmdcr.ini
十一:创建建 ASM 磁盘组
ASM 启动成功后,节点 1 使用 dmdba 用户在bin目录启动 dmasmtool 工具(如果ASM没启动成功,则无法开启)
./dmasmtool dcr_ini=/dm/data/dmdcr.ini
在 ASM 提示符下创建 asm 磁盘组,创建 REDO 日志磁盘组,执行以下命令
ASM>create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
Used time: 16.306(ms).
创建数据文件磁盘组,执行以下命令:
ASM>create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
Used time: 16.576(ms).
十二:初始化共享存储集群数据库实例
配置 dminit 控制文件,节点 1 使用 dmdba 用户编辑文件
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 = /dm/data/dsc1
port_num = 5237
mal_host = 192.168.23.200
mal_port = 9236
log_path = +DMLOG/log/DSC1_log01.log
log_path = +DMLOG/log/DSC1_log02.log
[DSC1] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /dm/data/dsc2
port_num = 5237
mal_host = 192.168.23.201
mal_port = 9236
log_path = +DMLOG/log/DSC2_log01.log
log_path = +DMLOG/log/DSC2_log02.log
初始化实例,节点 1 使用 dmdba在bin执行以下命令:
./dminit control=/dm/data/dminit.ini
出现以下画面,即为成功初始化实例。
初始化完成后会在 dminit.ini控制文件配置的目录下生成 2 个实例的配置文件(配置的是/dm/data)
在初始化实例时,出现以下这个画面,不用担心是没有dm.key,再尝试一下,或者检查dminit.ini i是否有inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应。
登录/dm/data,将 dsc2 目录复制到节点 2 上对应的目录下
scp -r dsc2 [email protected]:/dm/data/
十三:配置监控器
任意节点新建监视器配置文件(不建议在两节点服务器上),执行以下命令:
#和 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.200:9341
CSSM_CSS_IP = 192.168.23.201:9341
CSSM_LOG_PATH =/dm/data/log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 1024 #每个日志文件最大 1024 MB
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
启动监视器,dmdba 用户执行,到数据库软件安装目录 bin 下执行以下命令
./dmcssm ini_path=/dm/data/dmcssm.ini
show一下确保都是open
十四:注册服务
以上启动方式为前台启动,仅用于验证集群配置过程。配置成功后需要注册为系统服务,方便启动和关闭集群,以及实现开机自动启动。
2 个节点都需要注册,使用 root 用户执行,到数据库安装目录的 script/root 目录。
节点1执行命令
./dm_service_installer.sh -t dmcss -p css1 -dcr_ini /dm/data/dmdcr.ini
节点2执行命令
./dm_service_installer.sh -t dmcss -p css2 -dcr_ini/dm/data /dmdcr.ini
关闭前台启动的 css,以服务方式启动 css。
节点1执行命令
systemctl start DmCSSServicecss1
节点2执行命令
systemctl start DmCSSServicecss2
十五:关闭自动拉起
十六:关闭顺序
DSC--->ASM--->CSS
DSC+实时备库
一:环境配置
1.
创建dmdba用户,主组群为dinstall
创建主组群:groupadd dinstall
创建用户:useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
设置密码:passwd dmdba2.
vi /etc/security/limits.conf添加上dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft stack 65536
dmdba hard stack 65536cat /etc/security/limits.conf|grep dmdba
备注:/etc/systemd/system.conf的DefaultLimitNOFILE参数修改为65535
cat /etc/systemd/system.conf|grep DefaultLimitNOFILE
设置limits.conf的权限755
chmod -R 755 /etc/systemd/system.conf3.
关闭swap交换区(内存若大于128G,需关闭)
swapoff -a
将/etc/fstab中的swap关闭掉
cat /etc/fstab |grep swap4.
检查是否配置时钟同步(外网此步骤忽略或更换时间源)暂时不用
chronyc sources -v
vi /etc/chrony.conf
server xx.xx.47.245 iburst
driftfile /var/lib/chrony/drift
makestep 10 3重启chronyd服务
systemctl restart chronyd.service
设置开机启动
systemctl enable chronyd.service5.
date检查时间,暂时不用
上传nmon工具,设置每天0、6、12、18点开启采集,间隔5秒采集一次,一次采集4320次,日志文件保留5天。
0 0,6,12,18 * * * /home/dmdba/nmon -f -t -s 5 -c 4320 -m /dm_nmon_output
0 0 * * * find /dm_nmon_output -type f -mtime +5 -exec rm -f {} \;6.
关闭操作系统防火墙及selinux
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service
vi /etc/selinux/config
将SELINUX=enable改为SELINUX=disabled
cat /etc/selinux/config|grep SELINUX
然后执行setenforce 0
2.划分磁盘
dmcorefile | 根据实际划分 |
---|---|
dmarch | 根据实际划分 |
dmsqllog | 根据实际划分 |
dmdbms | 根据实际划分 |
dmbak | 根据实际划分 |
dm_nmon_output | 根据实际划分 |
dmdata | 根据实际划分 |
以下命令仅供参考,根据实际情况挂载!!
划分物理卷
pvcreate /dev/sdb
创建卷组
vgcreate dm_vg /dev/sdb
创建逻辑卷
lvcreate -L +2T -n dm_lv_dmcorefile dm_vg
lvcreate -L +3T -n dm_lv_dmarch dm_vg
lvcreate -L +2T -n dm_lv_dmsqllog dm_vg
lvcreate -L +500G -n dm_lv_dmdbms dm_vg
lvcreate -L +7T -n dm_lv_dmbak dm_vg
lvcreate -L +500G -n dm_lv_nmon_output dm_vg
lvcreate -l +100%FREE -n dm_lv_dmdata dm_vg
格式化逻辑卷
mkfs.xfs /dev/mapper/dm_vg-dm_lv_dmcorefile
mkfs.xfs /dev/mapper/dm_vg-dm_lv_dmarch
mkfs.xfs /dev/mapper/dm_vg-dm_lv_dmsqllog
mkfs.xfs /dev/mapper/dm_vg-dm_lv_dmdbms
mkfs.xfs /dev/mapper/dm_vg-dm_lv_dmbak
mkfs.xfs /dev/mapper/dm_vg-dm_lv_nmon_output
mkfs.xfs /dev/mapper/dm_vg-dm_lv_dmdata
创建目录
mkdir /dmcorefile /dmarch /dmsqllog /dmdbms /dmbak /dm_nmon_output /dmdata
挂载目录
mount /dev/mapper/dm_vg-dm_lv_dmcorefile /dmcorefile
mount /dev/mapper/dm_vg-dm_lv_dmarch /dmarch
mount /dev/mapper/dm_vg-dm_lv_dmsqllog /dmsqllog
mount /dev/mapper/dm_vg-dm_lv_dmdbms /dmdbms
mount /dev/mapper/dm_vg-dm_lv_dmbak /dmbak
mount /dev/mapper/dm_vg-dm_lv_nmon_output /dm_nmon_output
mount /dev/mapper/dm_vg-dm_lv_dmdata /dmdata
目录授权(创建dmdba用户后执行)
chmod -R 755 /dmcorefile /dmarch /dmsqllog /dmdbms /dmbak /dm_nmon_output /dmdata
chown -R dmdba:dinstall /dmcorefile /dmarch /dmsqllog /dmdbms /dmbak /dm_nmon_output /dmdata
设置分区在系统重启后自动挂载
vi /etc/fstab,添加以下:
/dev/mapper/dm_vg-dm_lv_dmcorefile /dmcorefile xfs defaults 0 0
/dev/mapper/dm_vg-dm_lv_dmarch /dmarch xfs defaults 0 0
/dev/mapper/dm_vg-dm_lv_dmsqllog /dmsqllog xfs defaults 0 0
/dev/mapper/dm_vg-dm_lv_dmdbms /dmdbms xfs defaults 0 0
/dev/mapper/dm_vg-dm_lv_dmbak /dmbak xfs defaults 0 0
/dev/mapper/dm_vg-dm_lv_nmon_output /dm_nmon_output xfs defaults 0 0
/dev/mapper/dm_vg-dm_lv_dmdata /dmdata xfs defaults 0 0
3.初始化备库
cd /dmdbms/bin
./dminit path=/dmdata/ PORT_NUM=5237
编辑DmService,正常启停一次
4.备份主库数据
数据库集群联机全备并拷贝至容灾服务器,检验备份有效性。
$ ./dmrman DCR_INI=/dm/dmdbms/dmdcr.ini
对数据库全备发起sql全备
BACKUP DATABASE BACKUPSET '/dmbak/db_full_日期' COMPRESSED LEVEL 3 PARALLEL 8;
备份校验
check backupset '/dmbak/db_full_日期'
备份成功后拷贝至容灾服务器
scp -P 10022 -r db_full_日期 dmdba@容灾ip:/dmbak/
5. 记录并关闭DMHS(没有则忽略)
ps -ef|grep dmhs --截图记录现有DMHS进程信息
cd /dmhs/bin
./DmhsService stop
二:开始操作
1.备库还原
启动ap服务
./DmAPService start
./dmrman
restore database '/dmdata/DMDB/dm.ini' from backupset '/data/dmbak/db_full_日期';
此步骤先restore还原,后续使用归档recover恢复
2.配置dm.ini
cp dm.ini dm.ini_bak_日期
DSC节点1:
INSTANCE_NAME = DSC0 #不用改动
PORT_NUM = 5237 #数据库实例监听端口
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
验证参数:
cat dm.ini|grep -E "INSTANCE_NAME|PORT_NUM|ALTER _MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI"|grep -v _PORT_NUM
cp dm.ini dm.ini_bak_日期
DSC节点2:
INSTANCE_NAME = DSC1 #不用改动
PORT_NUM = 5237 #数据库实例监听端口
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
验证参数:
cat dm.ini|grep -E "INSTANCE_NAME|PORT_NUM|ALTER _MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI"|grep -v _PORT_NUM
cp dm.ini dm.ini_bak_日期
将主库的dm.ini配置文件复制到备机的dm.ini中
备库:
INSTANCE_NAME = ZCDB_DW01 #注意自己实例名
PORT_NUM = 5237 #数据库实例监听端口
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
验证参数:
cat dm.ini|grep -E "INSTANCE_NAME|PORT_NUM|ALTER _MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI"|grep -v _PORT_NUM
3.配置dmarch.ini
cp dmarch.ini dmarch.ini_bak_日期
DSC节点1:
ARCH_LOCAL_SHARE = 1 #DMDSC 集群本地归档是否共享给远程节点作为远程归档。0 表示不共享,1 表示共享,默认值为 0。
ARCH_LOCAL_SHARE_CHECK=0 #是否进行 LOCAL 归档和 REMOTE 归档路径校验,默认值等于 ARCH_LOCAL_SHARE,1表示会校验。
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/LOCAL_ARCH_DSC0
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 1024
#本地多放一个
[ARCHIVE_LOCAL2]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm/gui
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 1024
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = +DMDATA/LOCAL_ARCH_DSC1 #注意dsc集群的asm组名字
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 1024
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = ZCDB_DW01 #实时归档目标实例名
cp dmarch.ini dmarch.ini_bak_日期
DSC节点2:
ARCH_LOCAL_SHARE = 1 #DMDSC 集群本地归档是否共享给远程节点作为远程归档。0 表示不共享,1 表示共享,默认值为 0。
ARCH_LOCAL_SHARE_CHECK=0 #是否进行 LOCAL 归档和 REMOTE 归档路径校验,默认值等于 ARCH_LOCAL_SHARE,1表示会校验。
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/LOCAL_ARCH_DSC1
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 1024
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = ZCDB_DSC0
ARCH_INCOMING_PATH = +DMDATA/LOCAL_ARCH_DSC0 #注意dsc集群的asm组名字
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 1024
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DW01 #实时归档目标实例名
备库:
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DSC0 #实时归档目标实例名,以DSC主库实际情况为准
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DSC1 #实时归档目标实例名,以DSC主库实际情况为准
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 512 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 1048 #单位Mb,0表示无限制,范围 1024~2147483647M
4.配置dmmal.ini
cp dmmal.ini dmmal.ini_bak_日期
3个节点dmmal内容相同:
MAL_CHECK_INTERVAL =87 #线程检测间隔
MAL_CONN_FAIL_INTERVAL=180 #检测线程认定链路断开的时间
MAL_SYS_BUF_SIZE =600 #MAL系统总内存大小限制
MAL_BUF_SIZE =300 #单个MAL缓存大小限制
MAL_VPOOL_SIZE =500 #MAL系统使用的内存初始化大小
MAL_COMPRESS_LEVEL =0 #MAL消息压缩等级,0代表不进行消息压缩
[MAL_INST0]
MAL_INST_NAME = DSC0
MAL_HOST = *.*.*.* #内网
MAL_PORT = 31246
MAL_INST_HOST = *.*.*.* #外网
MAL_INST_PORT = 5237
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 5276
MAL_LINK_MAGIC =1
[MAL_INST1]
MAL_INST_NAME = DSC1
MAL_HOST = *.*.*.*
MAL_PORT = 31246
MAL_INST_HOST = *.*.*.*
MAL_INST_PORT = 5237
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 5276
MAL_LINK_MAGIC =1
[MAL_INST2]
MAL_INST_NAME = ZCDB_DW01
MAL_HOST = *.*.*.*
MAL_PORT = 31246
MAL_INST_HOST = *.*.*.*
MAL_INST_PORT = 5237
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 5276
5.配置dmwatcher.ini
DSC节点1:
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #故障手动切换模式
DW_ERROR_TIME = 120 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 120 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /dm/data/dsc1/dm.ini #路径以实际为准
DCR_INI= /dm/data/dmdcr.ini #路径以实际为准
INST_STARTUP_CMD = /dm/bin/DmService1 #路径以实际为准
INST_AUTO_RESTART = 0 #关闭实例的自动启动功能
RLOG_SEND_THRESHOLD =0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
DSC节点2:
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #故障手动切换模式
DW_ERROR_TIME = 120 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 120 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /dm/data/dsc2/dm.ini #路径以实际为准
DCR_INI= /dm/data/dmdcr.ini #路径以实际为准
INST_STARTUP_CMD = /dm/bin/DmService2 #路径以实际为准
INST_AUTO_RESTART = 0 #关闭实例的自动启动功能
RLOG_SEND_THRESHOLD =0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
备库:标红的为注意或是补充的内容
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #手动切换模式
DW_ERROR_TIME = 120 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 120 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /dm/data/SS/dm.ini #dm.ini 配置文件路径
INST_STARTUP_CMD = /dm/bin/DmServiceSS #命令行方式启动
INST_AUTO_RESTART = 0 #关闭实例的自动启动功能
RLOG_SEND_THRESHOLD =0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
6.配置监控器
vi $DM_HOME/bin/dmmonitor.ini
3个节点dmmonitor.ini内容相同:
MON_DW_CONFIRM = 0 #确认监视器模式
MON_LOG_PATH = /dm/data/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60 s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32 MB
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP_RW 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP对应dmmal.ini中的MAL_HOST,PORT对应 dmmal.ini中的MAL_DW_PORT
MON_DW_IP = *.*.*.*:52141/*.*.*.*:52141
MON_DW_IP = *.*.*.*:52141
7.备库归档还原
2节点主库确认无活跃会话后关闭数据库
【关库前执行SELECT CHECKPOINT(100);并确认数据库会话没有更新操作】
cd $DM_HOME/bin
./dmcssm
ep stop GRP_DSC
归档还原备库,归档需要包含开始备份时间点之后的所有归档
scp -P 10022 -r arch dmdba@容灾ip:/dmdata_backup/arch
--备库校验归档
./dmrachk arch_path=/dmdata_backup/arch
--备库使用归档还原备库
./dmrman
recover database '/dmdata/DMDB/dm.ini' with archivedir '/dmdata_backup/arch/';
recover database '/dmdata/DMDB/dm.ini' update db_magic;
8.mount方式启动数据库
启动完成后修改
节点1操作就好
修改OGUID和修改DSC主库数据库模式为Primary:
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
ALTER DATABASE primary;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
修改OGUID和修改备库数据库模式为Standby:
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
ALTER DATABASE standby;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
9.启动守护进程
DSC节点1:
cp /dmdbms/bin/service_template/DmWatcherService /dmdbms/bin/DmWatcherServiceZCDB_DSC0
vi /dmdbms/bin/DmWatcherServiceZCDB_DSC0
修改DM_HOME和INI_PATH的值
chmod 755 /dmdbms/bin/DmWatcherServiceZCDB_DSC0
DSC节点2:
cp /dmdbms/bin/service_template/DmWatcherService /dmdbms/bin/DmWatcherServiceZCDB_DSC1
vi /dmdbms/bin/DmWatcherServiceZCDB_DSC1
修改DM_HOME和INI_PATH的值
chmod 755 /dmdbms/bin/DmWatcherServiceZCDB_DSC1
备库:
cd /dmdbms/bin
cp /dmdbms/bin/service_template/DmWatcherService /dmdbms/bin/DmWatcherServiceZCDB_DW01
vi /dmdbms/bin/DmWatcherServiceZCDB_DW01
修改DM_HOME和INI_PATH的值
chmod 755 /dmdbms/bin/DmWatcherServiceZCDB_DW01
启动数据守护服务:
DSC0
/dmdbms/bin/DmWatcherServiceZCDB_DSC0 start
DSC1
/dmdbms/bin/DmWatcherServiceZCDB_DSC1 start
DW01
/dmdbms/bin/DmWatcherServiceZCDB_DW01 start
10.验证数据库
$ su - dmdba
$ /dmdbms/bin
$ ./dmmonitor dmmonitor.ini
show
守护进程状态 WSTATUS 为 OPEN,实例状态 ISTATUS 为 OPEN,归档类型 RTYPE 为 REALTIME,归档状态 RSTAT 为VALID。