DM8DSC + 实时主备 搭建

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 dmdba@192.168.23.199:/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 dmdba

2.
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  65536

cat /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.conf

3.
关闭swap交换区(内存若大于128G,需关闭)
swapoff -a
将/etc/fstab中的swap关闭掉
cat /etc/fstab |grep swap

4.
检查是否配置时钟同步(外网此步骤忽略或更换时间源)暂时不用
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.service

5.
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。

11.测试同步不

  • 43
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 Docker 搭建 DM8 实时主备,可以按照以下步骤进行: 1. 安装 Docker 和 Docker Compose 首先需要安装 Docker 和 Docker Compose,可以参考 Docker 官方文档进行安装。 2. 下载 DM8 镜像文件 可以从 DM 官网下载 DM8 镜像文件,也可以使用以下命令从 Docker Hub 上下载: ``` docker pull pingcap/dm:latest ``` 3. 创建 DM8 配置文件 在本地创建一个名为 `dm-master.yaml` 的文件,用于配置 DM8 的主节点。以下是一个示例配置文件: ```yaml master-addr: 172.20.0.2:8261 name: master1 data-dir: /home/data/master1 log-file: /home/logs/master1.log log-level: "info" discovery-mode: "static" static-nodes: - 172.20.0.2:8291 - 172.20.0.3:8291 - 172.20.0.4:8291 web-port: 8281 ``` 其中,`master-addr` 表示当前节点的地址和端口号,`name` 是节点的名称,`data-dir` 是数据存储的目录,`log-file` 是日志文件的路径,`log-level` 是日志级别。 `discovery-mode` 表示节点发现的模式,这里使用静态模式,`static-nodes` 是静态模式下所有节点的地址和端口号。 `web-port` 是 DM8 的 Web 界面端口号。 在本地创建一个名为 `dm-worker.yaml` 的文件,用于配置 DM8 的工作节点。以下是一个示例配置文件: ```yaml name: worker1 data-dir: /home/data/worker1 log-file: /home/logs/worker1.log log-level: "info" server-id: 101 relay-dir: /home/relay_log meta: case-sensitive: true worker-addr: 172.20.0.2:8262 master-addr: 172.20.0.2:8261 relay-binlog-name: mysql-binlog relay-binlog-gtid: "" source-id: "mysql-replica-01" from: host: "172.20.0.5" user: "root" password: "password" routes: route-rule-1: schema-pattern: "test" target-schema: "test" target-instance: "mysql-replica-02" enable-sharding: false ``` 其中,`name` 是节点的名称,`data-dir` 是数据存储的目录,`log-file` 是日志文件的路径,`log-level` 是日志级别。 `server-id` 是工作节点的 ID,`relay-dir` 是中继日志的存储路径。 `worker-addr` 是当前节点的地址和端口号,`master-addr` 是主节点的地址和端口号。 `relay-binlog-name` 是指定中继日志的文件名,`relay-binlog-gtid` 是中继日志的 GTID。 `source-id` 是源实例的 ID,`from` 是源实例的连接信息。 `routes` 是数据路由的配置,这里只配置了一个路由规则,将 `test` 库的数据路由到名为 `mysql-replica-02` 的实例中。 4. 创建 Docker Compose 配置文件 在本地创建一个名为 `docker-compose.yaml` 的文件,用于启动 DM8 的主节点和工作节点。以下是一个示例配置文件: ```yaml version: "3.7" services: dm-master: image: pingcap/dm:latest container_name: dm-master volumes: - ./dm-master.yaml:/etc/dm-master/dm-master.yaml ports: - "8261:8261" - "8281:8281" dm-worker: image: pingcap/dm:latest container_name: dm-worker volumes: - ./dm-worker.yaml:/etc/dm-worker/dm-worker.yaml depends_on: - dm-master ports: - "8262:8262" ``` 其中,`dm-master` 是 DM8 主节点的容器,`dm-worker` 是 DM8 工作节点的容器。`volumes` 挂载了之前创建的两个 YAML 配置文件,`ports` 映射了节点的端口号。 5. 启动 Docker Compose 在命令行中执行以下命令,启动 Docker Compose: ``` docker-compose up -d ``` 6. 验证 DM8 实时主备 使用浏览器访问 `http://localhost:8281`,可以查看 DM8 的 Web 界面。在界面上可以查看主备节点的状态,以及数据同步的情况。可以在主节点上进行写入操作,验证数据同步是否正常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值