注册
DM达梦数据库主备容灾集群
培训园地/ 文章详情 /

DM达梦数据库主备容灾集群

A这货不是DBA 2023/05/09 874 0 0

# 1.达梦DM数据库主备集群建设

说明:
主库,需部署软件+建立数据库实例
备库,仅需软件,无需新建实例
monitor机,需要DM软件

## 2.主备数据库规划

1683434477025.png
端口说明:
参数 说明
PORT_NUM 数据库实例监听端口
MAL_INST_HOST 实例的对外服务IP地址
MAL_INST_PORT 实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_INST_DW_PORT 实例监听守护进程TCP连接的端口
MAL_DW_PORT 实例对应的守护进程监听TCP连接的端口
MAL_HOST MAL系统监听TCP连接的IP地址
MAL_PORT MAL系统监听TCP连接的端口

3.1主库设置开启归档

SQL> host mkdir –p /dm8/arch

alter DATABASE MOUNT;
ALTER DATABASE ADD ARCHIVELOG 'DEST = /dm8/arch, TYPE = local,FILE_SIZE = 256, SPACE_LIMIT = 0';
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
select name, status$,arch_mode from v$database;
select arch_name,arch_type,arch_dest from v$dm_arch_ini;

主库关闭实例:
#systemctl stop DmServiceDMSVR01.service

3.2修改实例的 dm.ini 文件参数

$su - dmdba
cd /dm8/data/DM01
sed -i '/INSTANCE_NAME/d' /dm8/data/DM01/dm.ini
sed -i '/database server will listen/d' /dm8/data/DM01/dm.ini
sed -i '/DW_PORT/d' /dm8/data/DM01/dm.ini
sed -i '/DW_ERROR_TIME/d' /dm8/data/DM01/dm.ini
sed -i '/ALTER_MODE_STATUS/d' /dm8/data/DM01/dm.ini
sed -i '/ENABLE_OFFLINE_TS/d' /dm8/data/DM01/dm.ini
sed -i '/MAL_INI/d' /dm8/data/DM01/dm.ini
sed -i '/ARCH_INI/d' /dm8/data/DM01/dm.ini
sed -i '/HA_INST_CHECK_FLAG/d' /dm8/data/DM01/dm.ini

vi /dm8/data/DM01/dm.ini
INSTANCE_NAME = DMSVR01 #主库实例
PORT_NUM = 5236 #数据库实例监听端口
DW_PORT = 45101 #守护环境下,监听守护进程连接端口,为上面规划表中的 MAL_INST_DW_PORT 值
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
DW_ERROR_TIME = 60 #接收守护进程消息超时时间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
HA_INST_CHECK_FLAG = 1 #检测是否多个实例进程同时启动

--检查验证
cat dm.ini |grep -E "INSTANCE_NAME|database server will listen|DW_PORT|DW_ERROR_TIME|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI|HA_INST_CHECK_FLAG "

3.3配置MAL系统配置文件 dmmal.ini

在实例目录下新建文件 dmmal.ini,执行以下命令:

$su - dmdba

cd /dm8/data/DM01
vi dmmal.ini

MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间

[MAL_INST1]
MAL_INST_NAME = DMSVR01 # 实 例 名 , 和 dm.ini 中 的INSTANCE_NAME 一致
MAL_HOST = 10.19.192.142 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 55101 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 10.19.192.142 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的PORT_NUM 一致
MAL_INST_DW_PORT = 45101 #实例监听守护进程 TCP 连接的端口
MAL_DW_PORT = 65101 #实例对应的守护进程监听 TCP 连接的端口

[MAL_INST2]
MAL_INST_NAME = DMSVR02 # 实 例 名 , 和 dm.ini 中 的INSTANCE_NAME 一致
MAL_HOST = 10.19.192.144 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 55121 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 10.19.192.144 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的PORT_NUM 一致
MAL_INST_DW_PORT = 45121 #实例监听守护进程 TCP 连接的端口
MAL_DW_PORT = 65121 #实例对应的守护进程监听 TCP 连接的端口
3.4配置归档配置文件 dmarch.ini
在实例目录下修改 dmarch.ini,执行以下命令:

$su - dmdba
cd /dm8/data/DM01
vi dmarch.ini

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 256 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 # 单 位 Mb , 0 表 示 无 限 制 , 范 围1024~4294967294M

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMSVR02 #实时归档目标实例名

3.5配置守护进程配置文件 dmwatcher.ini

在实例目录下新增 dmwatcher.ini,执行以下命令:

$su - dmdba
cd /dm8/data/DM01
vi dmwatcher.ini

[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #自动切换模式,手工MANUAL
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID值
INST_INI = /dm8/data/DM01/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

3.6主库脱机备份

确认主库DMAP服务已启动。
$ps -ef |grep dmap
dmdba 85243 1 0 13:02 ? 00:00:00 /dm8/bin/dmap

--若未启动则先启动DMAP
su – dmdba
cd $DM_HOME/bin
./DmAPService start

关闭数据库后,使用dmrman工具脱机备份主库
注:如果是新初始化的实例需要先启动一次再去备份。

$systemctl stop DmServiceDMSVR01.service

su – dmdba
cd $DM_HOME/bin
./dmrman
backup database '/dm8/data/DM01/dm.ini' full to DMSVR01_full01 backupset '/dm8/backup/DMSVR01_full01';

4.备库配置

4.1备库脱机还原

拷贝主库备份到备库合适目录,执行以下命令:
$scp -r /dm8/backup/DMSVR01_full01 10.19.192.144:/dm8/backup
关闭数据库后,使用dmrman工具脱机还原备库
$su – dmdba
cd $DM_HOME/bin
./dmrman
restore database to '/dm8/data/DM01' from backupset '/dm8/backup/DMSVR01_full01';
recover database '/dm8/data/DM01/dm.ini' from backupset '/dm8/backup/DMSVR01_full01';
recover database '/dm8/data/DM01/dm.ini' update db_magic;

4.2 备库修改实例的 dm.ini 文件参数

$su - dmdba
sed -i '/INSTANCE_NAME/d' /dm8/data/DM01/dm.ini
sed -i '/database server will listen/d' /dm8/data/DM01/dm.ini
sed -i '/DW_PORT/d' /dm8/data/DM01/dm.ini
sed -i '/DW_ERROR_TIME/d' /dm8/data/DM01/dm.ini
sed -i '/ALTER_MODE_STATUS/d' /dm8/data/DM01/dm.ini
sed -i '/ENABLE_OFFLINE_TS/d' /dm8/data/DM01/dm.ini
sed -i '/MAL_INI/d' /dm8/data/DM01/dm.ini
sed -i '/ARCH_INI/d' /dm8/data/DM01/dm.ini
sed -i '/HA_INST_CHECK_FLAG/d' /dm8/data/DM01/dm.ini

cd /dm8/data/DM01
vi dm.ini
--部分参数已存在,需要挨个搜索去更改

INSTANCE_NAME = DMSVR02 #主库实例
PORT_NUM = 5236 #数据库实例监听端口
DW_PORT = 45121 #守护环境下,监听守护进程连接端口,为上面规划表中的 MAL_INST_DW_PORT 值
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
DW_ERROR_TIME = 60 #接收守护进程消息超时时间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
HA_INST_CHECK_FLAG = 1 #检测是否多个实例进程同时启动

--检查验证
cat dm.ini |grep -E "INSTANCE_NAME|database server will listen|DW_PORT|DW_ERROR_TIME|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI|HA_INST_CHECK_FLAG|RLOG_SEND_APPLY_MON"
INSTANCE_NAME = DMSVR02 #Instance name
PORT_NUM = 5236 #Port number on which the database server will listen
RLOG_SEND_APPLY_MON = 64 #Monitor recently send or apply rlog_buf info
DW_PORT = 45121 #Instance tcp port for watch2
ALTER_MODE_STATUS = 0 #Whether to permit database user to alter database mode and status by SQLs, 1: yes, 0: no
ENABLE_OFFLINE_TS = 2 #Whether tablespace can be offline
DW_ERROR_TIME = 60 #接收守护进程消息超时时间
MAL_INI = 1 #dmmal.ini
ARCH_INI = 1 #dmarch.ini
HA_INST_CHECK_FLAG = 1 #检测是否多个实例进程同时启动

4.3备库配置MAL系统配置文件 dmmal.ini

在实例目录下新建文件 dmmal.ini,执行以下命令:
这个参数文件,主备库一样

$su - dmdba
cd /dm8/data/DM01
vi dmmal.ini

MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间

[MAL_INST1]
MAL_INST_NAME = DMSVR01 # 实 例 名 , 和 dm.ini 中 的INSTANCE_NAME 一致
MAL_HOST = 10.19.192.142 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 55101 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 10.19.192.142 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的PORT_NUM 一致
MAL_INST_DW_PORT = 45101 #实例监听守护进程 TCP 连接的端口
MAL_DW_PORT = 65101 #实例对应的守护进程监听 TCP 连接的端口

[MAL_INST2]
MAL_INST_NAME = DMSVR02 # 实 例 名 , 和 dm.ini 中 的INSTANCE_NAME 一致
MAL_HOST = 10.19.192.144 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 55121 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 10.19.192.144 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的PORT_NUM 一致
MAL_INST_DW_PORT = 45121 #实例监听守护进程 TCP 连接的端口
MAL_DW_PORT = 65121 #实例对应的守护进程监听 TCP 连接的端口
4.4备库配置归档配置文件 dmarch.ini
在实例目录下修改 dmarch.ini,执行以下命令:

$su - dmdba
cd /dm8/data/DM01
vi dmarch.ini

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 256 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 # 单 位 Mb , 0 表 示 无 限 制 , 范 围1024~4294967294M

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMSVR01 #实时归档目标实例名

4.5备库配置守护进程配置文件 dmwatcher.ini

在实例目录下新增 dmwatcher.ini,执行以下命令:

$su - dmdba
vi dmwatcher.ini

[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #自动切换模式,手工MANUAL
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID值
INST_INI = /dm8/data/DM01/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

**#5主库初始化

5.1主库注册服务**

su – root
cd /dm8/script/root/
./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/data/DM01/dmwatcher.ini -p DMSVR01

--以mount状态启动实例
su - dmdba
cd /dm8/bin
nohup ./dmserver /dm8/data/DM01/dm.ini mount &

5.2配置OGUID,修改主库模式

$SQL>su - dmdba
disql SYSDBA/DM01SYSDBA@10.19.192.142:5236
select status$ from v$database;
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);
exit;

## 5.3启动守护进程

#$su - dmdba
cd /dm8/bin
./DmWatcherServiceDMSVR01 start

6备库初始化
6.1备库注册服务

#cd /dm8/script/root/
./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DM01/dm.ini -p DMSVR02
./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/data/DM01/dmwatcher.ini -p DMSVR02

--以mount状态启动实例
su - dmdba

cd /dm8/bin
nohup ./dmserver /dm8/data/DM01/dm.ini mount &

6.2配置OGUID,修改备库模式

另开一个窗口

$SQL>su - dmdba
disql SYSDBA/DM01SYSDBA@10.19.192.144:5236
select status$ from v$database;
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);
exit;

6.3启动守护进程

$su - dmdba
cd /dm8/bin
./DmWatcherServiceDMSVR01 start

7配置monitor
monitor主机需要安装DM数据库软件,不需要初始化实例。

7.1配置dmmonitor.ini监控文件

$su - dmdba
mkdir /dm8/monitor
vi /dm8/monitor/dmmonitor.ini

MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm8/monitor/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间

[GRP1]
MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 10.19.192.142:65101
MON_DW_IP = 10.19.192.144:65121

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服