以下的文章主要是介绍三点之间的对等(peer-to-peer)Q 复制配置,我们大家都知道对等 (peer-to-peer) Q 复制是 DB2 Q 复制中一种。利用这种对等 Q 复制可以将任何一台服务器上发生的数据变化通过 MQ 传输到其它相关联的服务器上,并复制到这些服务器上。

从而实现多台数据库服务器之间的数据同步。 本文将通过一个例子说明如何搭建对等 Q 复制的基本配置环境,实现三个点之间的对等 Q 复制。

简介

对等 Q 复制主要适用于在两台或者多台数据库之间同步数据,它具有如下主要特性:

可以对两台或者两台以上的数据库服务器的表进行复制。

在对等配置中的任何一台数据库服务器上的变化可以复制到其它所有相关的数据库服务器中。

所有的服务器是对等关系,没有“主”服务器的概念,如果发生冲突,最近时间戳更新的数据是有效数据。

越来越多的用户开始采用 DB2 Q 复制作为 DB2 的一种高可用,高扩展性的解决方案,搭建“双活” 甚至“三活”的数据库系统。

图 1. 三台服务器之间的对等 Q 复制架构图

本文将通过一个例子来说明如何在三个数据库之间搭建对等 DB2 Q 复制环境。

本文档主要分为三个大部分:

***个部分是操作系统、数据库、 MQ 的基本配置 ;

第二个部分是通过复制中心建立对等 Q 复制环境;

第三部分是对等 Q 复制的配置校验和复制测试。

操作系统、数据库、 MQ 的基本配置

配置前准备工作

在搭建 Q 复制环境之前,需要进行如下准备工作:

1. 安装 DB2 数据库软件。

2. 在操作系统中创建如表 1 所示的 db2 instance 、mqm 用户及组。

表 1. 用户及组设置

描述 Peer A Peer B Peer C

    InstanceIDdb2inst1db2inst2db2inst3 InstanceGroupdb2grp1,mqmdb2grp2,mqmdb2grp3,mqm FenceIDdb2fenc1db2fenc2db2fenc3 FenceGroupdb2fgrp1,mqmdb2fgrp2,mqmdb2fgrp3,mqm MQIDmqmmqmmqm MQGroupmqmmqmmqm REPIDqrepladmqrepladmqrepladm

3. 安装 MQ 软件。

4. 创建 DB2 实例和数据库。

注:本文使用的软件版本是DB2 v9.1.0.6和WebSphere MQ 6.0.2.3。本文测试环境是在同一台Linux服务器上创建三个DB2实例和数据库来模拟三点之间的复制。

数据库设置

在上述准备工作完成以后,实例和数据库信息如表 2 所示。

表 2. 数据库信息

描述 Peer A Peer B Peer C

    Instancedb2inst1db2inst2db2inst3 Port500005000150002 IP127.0.0.1127.0.0.1127.0.0.1 IndirectDatabaseTP1TP2TP3 RemoteDatabaseTP2,TP3TP1,TP3TP1,TP2

注 : 在使用复制功能之前,所有数据库都应该将日志模式设置为archive logging模式(归档日志模式)。

创建完 DB2 实例和数据库以后,需要在本地进行编目远程数据库后才可以对其进行访问操作。

例如:在 db2inst1 用户下,输入清单 1 所示的命令来实现对远程 TP2,TP3 数据库的编目:

清单 1. 编目 DB2 数据库

    db2catalogtcpipnodedb2inst2remote127.0.0.1server50001db2catalogdatabasetp2atnodedb2inst2db2catalogtcpipnodedb2inst3remote127.0.0.1server50002db2catalogdatabasetp3atnodedb2inst3db2terminate

用清单 2 所示的方法测试 db2inst1 实例是否能正常连接 db2inst2 、db2inst3 实例上的 TP2 、TP3 数据库。

清单 2. 连接远程数据库

    db2connecttotp2userdb2inst2using***db2connecttotp3userdb2inst3using***db2terminate

同样的方法在 db2inst2 和 db2inst3 上编目相应的节点和数据库信息。使每个实例都能访问其他两个实例上的数据库。

为了方便复制操作,通常会在各个数据库上创建相同的模式和复制表。

用清单 3 所示的方法在 TP1、TP2、TP3 上给 qrepladm 用户授权并创建 DB2 QREPLADM.S_TAB 表

清单 3. 授权及建表

    db2grantDBADMonDATABASEtoUSERqrepladmdb2"createtableQREPLADM.S_TAB(idintegernotnullPRIMARYKEY,contentvarchar(20))"

MQ 对象设置

本文附件提供一些脚本用于创建相关的 MQ 对象,用户可以修改或者直接使用它们来创建必要的 MQ 对象。QM1.mqs、QM2.mqs、QM3.mqs 文件分别用于创建 QM1、QM2、QM3 相关的消息对象。上述三个脚本中分别定义了 QM1、QM2、QM3 三个队列管理器中的队列、通道等对象。

在 Peer A 上,定义名叫 DB2 QM1 的 MQ manager。如果 QM1 已经存在,按照清单 4 所示的命令删除旧的 QM1:

清单 4. 停止并删除队列管理器

    endmqmQM1dltmqmQM1

然后按照清单 5 所示的方法来创建 QM1

【编辑推荐】

    DB2 数据类型如何才能轻松接触?DB2性能调优中存在哪些问题,如何破解?对DB2取得当前时间的正确解析DB2归档日志的管理方案从哪几点入手?实现DB2备份数据库的操作方案漫谈