ITPub博客

首页 > 数据库 > 国内数据库 > DM8 实时主备环境搭建

DM8 实时主备环境搭建

原创 国内数据库 作者:LEVEL7 时间:2020-08-20 23:10:14 1 删除 编辑

DM8  实时主备环境搭建

1.     环境说明

本示例中组名为GRP1,配置为实时主备,主库命名为MEVI1,备库命名为MEVI2。

配置环境说明:

机器名

IP 地址

实例名

操作系统

DW1

192.168.18.211 (外部服务)

192.168.10.211 (内部通信)

MEVI1

CentOS Linux release 7.8.2003

DW2

192.168.18.212 (外部服务)

192.168.10.212 (内部通信)

MEVI2

CentOS Linux release 7.8.2003

端口规划:

实例名

PORT_NUM

MAL_INST_DW_PORT

MAL_HOST

MAL_PORT

MAL_DW_PORT

MEVI1

5236

5237

192.168.10.211

5238

5239

MEVI2

5236

5237

192.168.10.212

5238

5239

1)     PORT_NUM

服务器监听通讯端口号,服务器配置此参数,有效值范围(1024~65534),发起连接端的端口在(1024~65535)之间随机分配。此参数配置应与dmmal.ini中的MAL_INST_PORT对应

2)     MAL_INST_DW_PORT

节点实例监听守护进程的端口,同一个库上的各实例的守护进程使用MAL_HOST+MAL_INST_DW_PORT和各实例创建TCP连接,实例服务器配置此参数有效值范围(1024~65534),发起连接端的端口在(1024~65535)之间随机分配

3)     MAL_HOST

MAL IP 地址,使用MAL_HOST+MAL_PORT创建MAL链路

4)     MAL_PORT

MAL 监听端口用于数据守护、DSC、MPP等环境中各节点实例之间MAL链路配置监听端端口配置此参数,范围(1024~65534)发起连接端的端口在(1024~65535)之间随机分配

5)     MAL_DW_PORT

MAL_INST_NAME 实例守护进程的监听端口,其他守护进程或监视器使用MAL_HOST+MAL_DW_PORT创建与该实例守护进程的TCP连接,监听端配置此参数有效值范围1024~65534),发起连接端的端口在(1024~65535)之间随机分配

2.     数据准备

1)     创建主库

dminit PATH=/dmdata PAGE_SIZE=16 DB_NAME=MEVI INSTANCE_NAME=MEVI1

使用dmserver 启动数据库,在DM 数据库第一次必须正常启动,完成初始化的动作:

dmserver /dmdata/MEVI/dm.ini

2)     主库启动归档

SQL> alter database mount;

SQL> alter database add archivelog 'type=local,dest=/dmarch,file_size=128,space_limit=0';

SQL> alter database archivelog;

SQL> alter database open;

3)     创建备库

dminit PATH=/dmdata PAGE_SIZE=16 DB_NAME=MEVI INSTANCE_NAME=MEVI2

使用dmserver 启动数据库,在DM 数据库第一次必须正常启动,完成初始化的动作:

dmserver /dmdata/MEVI/dm.ini

4)     备库启动归档

SQL> alter database mount;

SQL> alter database add archivelog 'type=local,dest=/dmarch,file_size=128,space_limit=0';

SQL> alter database archivelog;

SQL> alter database open;

5)     备份主库

使用DMRMAN 脱机备份

RMAN> backup database '/dmdata/MEVI/dm.ini' backupset '/dmbak/200820';

6)     恢复备库

将主库的备份复制到备库

scp -r 192.168.18.211:/dmbak/200820 /dmbak

使用DMRMAN 恢复备库

RMAN> restore database '/dmdata/MEVI/dm.ini' from backupset '/dmbak/200820';

RMAN> recover database '/dmdata/MEVI/dm.ini' update db_magic;

7)     注册服务并启动实例

设置服务为非自动启动

设置服务器启动模式为mount

注册主库服务

./dm_service_installer.sh -t dmserver -p MEVI1 -dm_ini /dmdata/MEVI/dm.ini -auto false -m mount

注册备库服务

./dm_service_installer.sh -t dmserver -p MEVI2 -dm_ini /dmdata/MEVI/dm.ini -auto false -m mount

3.     配置主库

1)     配置dm.ini

在DW1机器上配置主库的实例名为MEVI1,dm.ini参数修改如下:

INSTANCE_NAME = MEVI1

PORT_NUM = 5236  # 数据库实例监听端口

DW_INACTIVE_INTERVAL = 60  # 接收守护进程消息超时时间

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

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

MAL_INI = 1  # 打开MAL系统

ARCH_INI = 1  # 打开归档配置

RLOG_SEND_APPLY_MON = 64  # 统计最近64次的日志发送信息

2)     配置dmmal.ini

配置MAL系统,各主备库的dmmal.ini配置必须完全一致,MAL_HOST使用内部网络IP,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MAL_DW_PORT是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

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

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

[MAL_INST1]

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

MAL_HOST = 192.168.10.211  #MAL 系统监听TCP连接的IP地址

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

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

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

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

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

[MAL_INST2]

MAL_INST_NAME = MEVI2

MAL_HOST = 192.168.10.212

MAL_PORT = 5238

MAL_INST_HOST = 192.168.18.212

MAL_INST_PORT = 5236

MAL_DW_PORT = 5239

MAL_INST_DW_PORT = 5237

3)     配置dmarch.ini

修改dmarch.ini,配置本地归档和实时归档。

除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。

当前实例MEVI1是主库,需要向MEVI2(实时备库)同步数据,因此实时归档的ARCH_DEST配置为MEVI2。

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME  # 实时归档类型

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

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL  # 本地归档类型

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

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

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

4)     配置dmwatcher.ini

修改dmwatcher.ini 配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP1]

DW_TYPE = GLOBAL  # 全局守护类型

DW_MODE = AUTO  # 自动切换模式

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

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

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

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

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

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

INST_STARTUP_CMD = /dm8/bin/dmserver  # 命令行方式启动

RLOG_SEND_THRESHOLD = 0  # 指定主库发送日志到备库的时间阀值,默认关闭

RLOG_APPLY_THRESHOLD = 0  # 指定备库重演日志的时间阀值,默认关闭

5)     启动主库

以Mount方式启动主库

DmServiceMEVI1 start

一定要以Mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成Redo日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动Open数据库。

6)     设置OGUID

启动命令行工具DIsql,登录主库设置OGUID值。

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

SQL> sp_set_oguid(666666);

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

系统通过OGUID值确定一个守护进程组,由用户保证OGUID值的唯一性,并确保数据守护系统中,数据库、守护进程和监视器配置相同的OGUID值。

7)     修改数据库模式

启动命令行工具DIsql,登录主库修改数据库为Primary模式

SQL> alter database primary;

4.     配置备库

1)     配置dm.ini

在DW2机器上配置备库的实例名为MEVI2,dm.ini参数修改如下:

INSTANCE_NAME = MEVI2

PORT_NUM = 5236  # 数据库实例监听端口

DW_INACTIVE_INTERVAL = 60  # 接收守护进程消息超时时间

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

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

MAL_INI = 1  # 打开MAL系统

ARCH_INI = 1  # 打开归档配置

RLOG_SEND_APPLY_MON = 64  # 统计最近64次的日志发送信息

2)     配置dmmal.ini

配置MAL系统,各主备库的dmmal.ini配置必须完全一致,MAL_HOST使用内部网络IP,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MAL_DW_PORT是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

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

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

[MAL_INST1]

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

MAL_HOST = 192.168.10.211  #MAL 系统监听TCP连接的IP地址

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

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

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

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

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

[MAL_INST2]

MAL_INST_NAME = MEVI2

MAL_HOST = 192.168.10.212

MAL_PORT = 5238

MAL_INST_HOST = 192.168.18.212

MAL_INST_PORT = 5236

MAL_DW_PORT = 5239

MAL_INST_DW_PORT = 5237

3)     配置dmarch.ini

修改dmarch.ini,配置本地归档和实时归档。

除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。

当前实例MEVI2是备库,守护系统配置完成后,可能在各种故障处理中,MEVI2切换为新的主库,正常情况下,MEVI1会切换为新的备库,需要向MEVI1同步数据,因此实时归档的ARCH_DEST配置为MEVI1。

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME  # 实时归档类型

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

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL  # 本地归档类型

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

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

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

4)     配置dmwatcher.ini

修改dmwatcher.ini 配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP1]

DW_TYPE = GLOBAL  # 全局守护类型

DW_MODE = AUTO  # 自动切换模式

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

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

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

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

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

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

INST_STARTUP_CMD = /dm8/bin/dmserver  # 命令行方式启动

RLOG_SEND_THRESHOLD = 0  # 指定主库发送日志到备库的时间阀值,默认关闭

RLOG_APPLY_THRESHOLD = 0  # 指定备库重演日志的时间阀值,默认关闭

5)     启动备库

以Mount方式启动备库

DmServiceMEVI2 start

一定要以Mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成Redo日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动Open数据库。

6)     设置OGUID

启动命令行工具DIsql,登录主库设置OGUID值。

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

SQL> sp_set_oguid(666666);

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

系统通过OGUID值确定一个守护进程组,由用户保证OGUID值的唯一性,并确保数据守护系统中,数据库、守护进程和监视器配置相同的OGUID值。

7)     修改数据库模式

启动命令行工具DIsql,登录主库修改数据库为Standby模式

SQL> alter database standby;

5.     配置监视器

由于主库和实时备库的守护进程配置为自动切换模式,因此这里选择配置确认监视器。和普通监视器相比,确认监视器除了相同的命令支持外,在主库发生故障时,能够自动通知实时备库接管为新的主库,具有自动故障处理的功能。

故障自动切换模式下,必须配置确认监视器,且确认监视器最多只能配置一个。

修改dmmonitor.ini配置确认监视器,其中MON_DW_IP中的IP和PORT和dmmal.ini中的MAL_HOST和MAL_DW_PORT配置项保持一致。

MON_DW_CONFIRM = 1  # 确认监视器模式

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

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

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

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

[GRP1]

MON_INST_OGUID = 666666  # 组GRP1的唯一OGUID值

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

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

MON_DW_IP = 192.168.10.211:5239

MON_DW_IP = 192.168.10.212:5239

6.     启动守护进程

注册主库守护进程服务并启动

./dm_service_installer.sh -t dmwatcher -p MEVI1 -watcher_ini /dmdata/MEVI/dmwatcher.ini

DmWatcherServiceMEVI1 start

注册备库守护进程服务并启动

./dm_service_installer.sh -t dmwatcher -p MEVI2 -watcher_ini /dmdata/MEVI/dmwatcher.ini

DmWatcherServiceMEVI2 start

7.     启动监视器

dmmonitor dmmonitor.ini

至此一主一备的实时数据守护系统搭建完毕

8.     主备同步测试

主库:

[dmdba@dw1 MEVI]$ disql SYSDBA/SYSDBA

notBefore.

notAfter error.

notAfter error.

 

Server[LOCALHOST:5236]:mode is primary, state is open

login used time      :8.180(ms)

last login ip        : ::1

last login time      : 2020-08-20 22:32:23

login failed times   : 0

Whether password is expired : Not expired

 

disql V8

SQL> create table mevi as select * from sysobjects;

executed successfully

used time: 17.786(ms). Execute id is 5.

备库:

[dmdba@dw2 ~]$ disql SYSDBA/SYSDBA

notBefore.

notAfter error.

notAfter error.

 

Server[LOCALHOST:5236]:mode is standby, state is open

login used time      :10.030(ms)

last login ip        : ::1

last login time      : 2020-08-20 22:34:07

login failed times   : 0

Whether password is expired : Not expired

 

disql V8

SQL> select count(*) from mevi;

 

LINEID     COUNT(*)           

---------- --------------------

1          1327

 

used time: 3.303(ms). Execute id is 5.

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31516603/viewspace-2713456/,如需转载,请注明出处,否则将追究法律责任。

下一篇: DM8 闪回查询
请登录后发表评论 登录
全部评论
Oracle/DM DBA

注册时间:2018-01-10

  • 博文量
    20
  • 访问量
    11484