DM8数据守护与读写分离搭建

一、 环境准备

1、 集群规划
在这里插入图片描述
2、 端口规划
在这里插入图片描述
3、 环境配置
(1) 关闭并禁止防火墙自启动

systemctl stop firewalled.service
systemctl disabled firewalled.service

(2) 修改文件限制

vim /etc/security/limits.conf
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc 65535
dmdba hard nproc 65535
dmdba soft stack 8192
dmdba hard stack 8192

(3) 修改主机名

vim /etc/sysconfig/network         //修改network文件
NETWORKING=yes
HOSTNAME=dmserver01
vim /etc/hostname               //修改hostname文件
dmserver01

(4) 创建数据库安装用户组

groupadd dminstall
useradd -g dminstall -d /home/dmdba -s /bin/bash dmdba 

(5) 测试IP地址连通性
使用ping命令,测试192段、10段IP地址的联通性,确保不会因为网络问题影响到部署。
4、 数据库安装
参看数据库安装文档,在此不再展开赘述。

二、 环境搭建

1、 数据准备
(1)在dmserver01、02、03上初始化数据库实例。

./dminit PATH=/home/dmdba/data PAGE_SIZE=16 CASE_SENSITIVE=Y EXTENT_SIZE=64 UNICODE_FLAG=1 PAGE_CHECK=0 SYSDBA_PWD=SYSDBA123 SYSAUDITOR_PWD=SYSAUDITOR123

在这里插入图片描述
(2)通过脱机备份还原的方式将主库数据同步到备库
●正常关闭主库
●进行脱机备份

./dmrman CTLSTMT="BACKUP DATABASE '/home/dmdba/data/DAMENG/dm.ini' FULL TO BACKUP_FILE BACKUPSET '/home/dmdba/data/BACKUP_FILE'"

在这里插入图片描述
注:主库初始化以后,需要启动一次实例,停止以后再进行备份;
在使用dmrman工具进行备份之前,必须先启动DmAPService;
在开始备份之前,需要开启归档或配置归档文件;
●将备份在主库/home/dmdba/data/BACKUP_FILE下的文件拷贝到备库。

scp -r BACKUP_FILE/ dmdba@192.168.152.131:/home/dmdba/data

●执行脱机还原操作

./dmrman CTLSTMT="RESTORE DATABASE '/home/dmdba/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba/BACKUP_FILE'"

./dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba/BACKUP_FILE'"

./dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/data/DAMENG/dm.ini' UPDATE DB_MAGIC"

2、 配置主库GRP1_RWW_01
(1) 修改dm.ini文件
根据规划的实例名,实例端口等内容,修改dm.ini文件,具体如下:

INSTANCE_NAME = GRP1_RWW_01      #实例名
PORT_NUM = 52010                   #实例端口号
DW_INACTIVE_INTERVAL = 60 
ALTER_MODE_STATUS = 0         #不允许手动修改数据库模式
ENABLE_OFFLINE_TS = 2          #不允许备库OFFLINE表空间
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 60

(2) 创建dmmal.ini文件
配置 MAL系统,各主备库的 dmmal.ini 配置必须完全一致。
在这里插入图片描述
(3) 修改dmarch.ini文件
在这里插入图片描述
(4) 创建dmwatcher.ini文件
在这里插入图片描述
(5) 使用mount方式启动数据库实例

./dmserver /home/dmdba/data/DAMENG/dm.ini mount

在这里插入图片描述
(6) 设置实例OGUID

./disql SYSDBA/SYSDBA123@127.0.0.1:52010
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
SP_SET_OGUID(45678);
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);

(7) 修改数据库模式

./disql SYSDBA/SYSDBA123@127.0.0.1:52010
alter database primary

3、 配置备库GRP1_RWW_02
(1) 将主库GRP1_RWW_01的以下三个文件传输到GRP_RWW_02上/home/dmdba/data/DAMENG路径下。
dmmal.ini、dmarch.ini、dmwatcher.ini
(2) 修改dm.ini文件。

INSTANCE_NAME = GRP1_RWW_02      #实例名
PORT_NUM = 52011                   #实例端口号
DW_INACTIVE_INTERVAL = 60 
ALTER_MODE_STATUS = 0         #不允许手动修改数据库模式
ENABLE_OFFLINE_TS = 2          #不允许备库OFFLINE表空间
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 60

(3) 修改dmarch.ini文件(因为故障处理中,02可能会被切换为新主库)
在这里插入图片描述
(4) 使用mount方式启动数据库

./dmserver /home/dmdba/data/DAMENG/dm.ini mount

在这里插入图片描述
(5) 设置实例OGUID

./disql SYSDBA/SYSDBA123@127.0.0.1:52011
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
SP_SET_OGUID(45678);
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);

(6) 修改数据库模式

./disql SYSDBA/SYSDBA123@127.0.0.1:52011
alter database standby

4、 配置备库GRP1_RWW_03
(1)将主库GRP1_RWW_01的以下三个文件传输到GRP_RWW_03上/home/dmdba/data/DAMENG路径下。
dmmal.ini、dmarch.ini、dmwatcher.ini
(2)修改dm.ini文件

INSTANCE_NAME = GRP1_RWW_03      #实例名
PORT_NUM = 52012                   #实例端口号
DW_INACTIVE_INTERVAL = 60 
ALTER_MODE_STATUS = 0         #不允许手动修改数据库模式
ENABLE_OFFLINE_TS = 2          #不允许备库OFFLINE表空间
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 60

(3)修改dmarch.ini文件(因为故障处理中,03可能会被切换为新主库)
在这里插入图片描述
(4)使用mount方式启动数据库

./dmserver /home/dmdba/data/DAMENG/dm.ini mount

在这里插入图片描述
(6) 设置OGUID

./disql SYSDBA/SYSDBA123@127.0.0.1:52012
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
SP_SET_OGUID(45678);
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);

(7) 修改数据库模式

./disql SYSDBA/SYSDBA123@127.0.0.1:52012
alter database standby

5、 配置确认监视器(dmserver04服务器)
(1) 创建dmmonitor.ini文件

MON_DW_CONFIRM = 1
MON_LOG_PATH = /home/dmdba/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
   MON_INST_OGUID= 45678   #全局守护ID
   MON_DW_IP = 10.0.1.100:55010  #MAL_HOST:MAL_DW_PORT
   MON_DW_IP = 10.0.1.101:55011
   MON_DW_IP = 10.0.1.102:55012

(2) 启动守护进程
在GRP1_RWW_01、GRP1_RWW_02、GRP1_RWW_03三个数据库上启动数据库的守护进程,执行:

./dmwatcher /home/dmdba/data/DAMENG/dmwatcher.ini

(3) 启动确认监视器
当主备库的守护进程均启动完成后,便可启动确认监视器,执行:

./dmmonitor /home/dmdba/data/dmmonitor.ini

监视器启动后,执行show命令,可以查看到主备库的信息,如下:
在这里插入图片描述

三、 验证

1、 一主两备的情况下,验证主库可读可写,备库仅可读不可写。
(1) 主库可读可写验证(使用select和insert进行验证)
在这里插入图片描述

可以看到,主库读写均正常。
(2) 备库可读不可写验证(使用select和insert进行验证)
在这里插入图片描述
可以看到,备库当前仅可以读,不可写,主库执行的内容正常同步。
综上验证,可以看到,读写分离部署完成以后,主库可以读可以写入数据,备库只能读数据不能写入数据。

2、 模拟主库故障,实例停止,检查主备是否能自动完成切换。
(1) 故障模拟前的主备状态如下(通过监视器查看)
在这里插入图片描述
(2) 将主库数据库实例停止(模拟主库故障)
手动停止主库实例,查看监视器内对新主库的选取过程。
在这里插入图片描述在这里插入图片描述在这里插入图片描述
可以看到,手动将主库停止以后,监视器会自动重新选取02作为新的主库,承接业务数据的写入,整个切换过程较快。
在本次部署中,对故障的模拟仅是手动停止主库,当02作为主库以后,守护进程会重新拉起了原来的主库01,不过此时01只能作为备库加入集群中。
至此,DM8数据守护与读写分离的搭建便完成。

PS:在模拟故障前,需要先将守护进程dmwatcher停止,再停止数据库实例。如果不停止守护进程,则即使停了实例,切换也不会自动进行,因为如果守护进程在,发现数据库实例停止后,守护进程会自动拉起实例,也就无法模拟实例故障了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值