达梦实时主备集群搭建

本篇文章介绍如何用虚拟机搭建达梦实时主备(一主一备)集群。

1,操作环境简介

虚拟机软件:VMware Workstation Pro

操作系统:centos7

数据库版本:DM8

2,安装前规划

IP规划:

主机名

服务ip

心跳ip

数据库名

实例名

备注

dm1

192.168.230.41

192.168.230.41

dmdb

dw1

主库

dm2

192.168.230.42

192.168.230.42

dmdb

dw2

备库

dmmonitor

192.168.230.43

dmdb

监视器

端口规划:

实例名

实例端口

MAL 系统监听 TCP 连接的端口

实例本地的守护进程监听 TCP 连接的端口

实例监听守护进程 TCP 连接的端口

dw1

5236

7336

7436

7536

dw2

5236

7336

7436

7536

目录规划:

数据库软件安装目录

/home/dmdba/dmdbms

实例安装目录

/dmdata/

归档日志存放目录

/dmdata/dmarch/

备份文件存放目录

/dmdata/dmbak/

3,安装数据库软件

      在3台虚拟机上安装好达梦数据库软件(具体可参考前面的单机部署安装),此步骤可暂不初始化实例。

4,实时主备集群搭建

(1)在主库跟备库上初始化实例

使用dmdba用户,进入/home/dmdba/dmdbms/bin目录下执行如下命令,完成实例的初始化

./dminit path=/dmdata db_name=dmdb

(2)准备备库数据

      为了保证主库与备库的数据完全一致,搭建时,将主库进行全库备份,然后将主库的全库备份还原到备库。使用dmrman工具进行备份和还原操作。

1)在主库进行全库备份

使用dmdba用户,进入/home/dmdba/dmdbms/bin目录下,执行如下命令:

./dmrman

备份全库:

backup database '/dmdata/dmdb/dm.ini' backupset '/home/dmdba/bakfull';

2)还原备库

将备份的文件/home/dmdba/bakfull拷贝到备库服务器上。

使用dmdba用户,进入/home/dmdba/dmdbms/bin目录下,执行如下命令:

./dmrman

还原数据库:

restore database '/dmdata/dmdb/dm.ini' from backupset '/home/dmdba/bakfull';

恢复数据库:

recover database '/dmdata/dmdb/dm.ini' from backupset '/home/dmdba/bakfull';

recover database '/dmdata/dmdb/dm.ini'  update db_magic;

(3)配置dm.ini

使用dmdba用户,进入/dmdata/dmdb/目录下,修改dm.ini配置文件

vim /dmdata/dmdb/dm.ini

主库修改如下内容:

INSTANCE_NAME = dw1

ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2  #不允许备库 OFFLINE 表空间

MAL_INI = 1 #打开 MAL 系统

ARCH_INI = 1  #打开归档配置

备库修改如下内容:

INSTANCE_NAME = dw2 

ALTER_MODE_STATUS = 0  #不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2   #不允许备库 OFFLINE 表空间

MAL_INI = 1  #打开 MAL 系统

ARCH_INI = 1 #打开归档配置

(4)配置dmmal.ini

使用dmdba用户,进入/dmdata/dmdb/目录下,执行如下命令:

vim /dmdata/dmdb/dmmal.ini

主库跟备库均需添加如下内容:

MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔

MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间

[MAL_INST1]

 MAL_INST_NAME = dw1 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致

 MAL_HOST = 192.168.230.41 #MAL 系统监听 TCP 连接的 IP 地址(心跳ip)

 MAL_PORT = 7336 #MAL 系统监听 TCP 连接的端口

 MAL_INST_HOST = 192.168.230.41 #实例的对外服务 IP 地址

 MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致

 MAL_DW_PORT = 7436 #实例本地的守护进程监听 TCP 连接的端口

 MAL_INST_DW_PORT = 7536 #实例监听守护进程 TCP 连接的端口

[MAL_INST2]

 MAL_INST_NAME = dw2

 MAL_HOST = 192.168.230.42

 MAL_PORT = 7336

 MAL_INST_HOST = 192.168.230.42

 MAL_INST_PORT = 5236

MAL_DW_PORT = 7436

MAL_INST_DW_PORT = 7536

(5)配置dmarch.ini

使用dmdba用户,进入/dmdata/dmdb/目录下,执行如下命令:

vim /dmdata/dmdb/dmarch.ini

主库需添加的内容:

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME #实时归档类型

ARCH_DEST = dw2 #实时归档目标实例名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL #本地归档类型

ARCH_DEST = /dmdata/dmarch #本地归档文件存放路径

ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值

ARCH_SPACE_LIMIT = 20480 #单位 Mb,0 表示无限制,范围 1024~2147483647M

备库需添加的内容:

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME #实时归档类型

ARCH_DEST = dw1 #实时归档目标实例名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL #本地归档类型

ARCH_DEST = /dmdata/dmarch #本地归档文件路径

ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值

ARCH_SPACE_LIMIT = 20480 #单位 Mb,0 表示无限制,范围 1024~2147483647M

(6)配置dmwatcher.ini

使用dmdba用户,进入/dmdata/dmdb/目录下,执行如下命令:

vim /dmdata/dmdb/dmwatcher.ini

主库与备库均需添加如下内容:

[GRP1]

DW_TYPE = GLOBAL #全局守护类型

DW_MODE = AUTO #自动切换模式

DW_ERROR_TIME = 10 #远程守护进程故障认定时间

INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间

INST_ERROR_TIME = 10 #本地实例故障认定时间

INST_OGUID = 453331 #守护系统唯一 OGUID 值

INST_INI = /dmdata/dmdb/dm.ini #dm.ini 配置文件路径

INST_AUTO_RESTART = 1 #打开实例的自动启动功能

INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动

(7)启动主库,设置 OGUID,修改数据库模式

以 Mount 方式启动主库

使用dmdba用户,进入/home/dmdba/dmdbms/bin目录下,执行如下命令: 

./dmserver /dmdata/dmdb/dm.ini mount

重新打开一个命令窗口,使用dmdba用户,进入/home/dmdba/dmdbms/bin目录下,执行如下命令:

./disql SYSDBA/SYSDBA

使用disql工具,设置主库OGUID 值

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

SQL>sp_set_oguid(453331);

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

设置数据库为 Primary 模式

SQL>alter database primary;

(8)启动备库,设置 OGUID,修改数据库模式

以 Mount 方式启动备库

使用dmdba用户,进入/home/dmdba/dmdbms/bin目录下,执行如下命令: 

./dmserver /dmdata/dmdb/dm.ini mount

重新打开一个命令窗口,使用dmdba用户,进入/home/dmdba/dmdbms/bin目录下,执行如下命令:

./disql SYSDBA/SYSDBA

使用disql工具,设置备库OGUID 值

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

SQL>sp_set_oguid(453331);

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

设置数据库为Standby模式

SQL>alter database standby;

(9)配置确认监视器

在监视器服务器上配置确认监视器,使用dmdba用户,进入/home/dmdba/dmdbms/目录下,执行如下命令:

vim /home/dmdba/dmdbms/dmmonitor.ini

添加如下内容:

MON_DW_CONFIRM = 1 #确认监视器模式

MON_LOG_PATH = /home/dmdba/dmdbms/log #监视器日志文件存放路径

MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件

MON_LOG_FILE_SIZE = 32#每个日志文件最大 32M

MON_LOG_SPACE_LIMIT = 1024 #不限定日志文件总占用空间

[GRP1]

MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值

#以下配置为监视器到组 GRP1 的守护进程的连接信息,以“IP:PORT”的形式配置

#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT

MON_DW_IP = 192.168.230.41:7436

MON_DW_IP = 192.168.230.42:7436

(10)启动实时主备集群

1)启动守护进程(先启动主库,再启动备库)

使用dmdba用户,进入/home/dmdba/dmdbms/bin目录下,执行如下命令:

./dmwatcher /dmdata/dmdb/dmwatcher.ini

守护进程启动后,进入Startup状态,此时实例都处于Mount状态。守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将本地实例Open,并切换为Open状态。

可以通过show命令查看实例状态(从最开始的mount状态变为open状态)

注:通过exit命令退出。

2)启动确认监视器(在监视器服务器上启动)

使用dmdba用户,进入/home/dmdba/dmdbms/bin目录下,执行如下命令:

./dmmonitor /home/dmdba/dmdbms/dmmonitor.ini

注:通过exit命令退出。

(11)验证实时主备集群数据是否实时同步

打开主库disql命令行工具,创建测试表

create table test (no int,name char(20));

insert into test values (123,'123456');

commit;

在备库,打开disql命令行工具,查询test表数据。

实时主备集群搭建完成。

达梦社区:https://eco.dameng.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值