Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103168244
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: DB2/Informix

2008-05-31 17:54:10

ER:服务器

本节讨论以下主题:



使用命令行界面是定义 ER 环境的最快方法。至少需要运行两个命令。第一个命令定义初始服务器。在此之后,可以定义任意数量的服务器,但是必须使用 -S--sync 选项将新服务器与已经定义的服务器之一连接起来。如果没有使用 sync 选项,服务器就无法从 ER 的视角相互了解。

下面是可用的服务器定义选项和一个运行命令的示例:



                    
$ cdr define server
missing server name
usage: cdr define server {options} servername
 -c server --connect=server  connect to server
 -i min    --idle=min        idle timeout
 -s space  --send=space      dbspace where send queue created (obsolete)
 -r space  --recv=space      dbspace where recv queue created (obsolete)
 -A dir    --ats=dir         directory for Aborted Transaction Spool
 -R dir    --ris=dir         directory for Row Information Spool
 -I        --init            initialize server
 -S server --sync=server     synchronize catalog (use with -I)
 -N        --nonroot         non root server
 -L        --leaf            leaf server
 
$ cdr define server -A /informix/ats-ris/boy -R /informix/ats-ris/boy -I g_80s 
        

通过以下检查,确定设置已经成功:

  1. 两个服务器上都创建了 syscdr 数据库
  2. onstat -g ath 显示以 ‘CDR’ 开头的复制线程
  3. onstat -g nif 显示另一个复制服务器站点 id 项
  4. cdr list server 显示活跃的连接
  5. onstat -g cat 显示两个服务器都处于 ‘Active’ 状态
  6. online.log 显示与清单 13 相似的消息:


                                        
    12:50:57  Building 'syscdr' database ...
    12:51:00  'syscdr' database built successfully.
    12:51:01  CDR queuer initialization complete
    12:51:01  CDR NIF listening on asf://server_g_1
    				







拓扑主要是网络路由问题,与复制本身关系不大。ER 支持多节点环境和多种拓扑。如果路由要求副本跳过几个节点到达目标,那么被跳过的节点不需要了解副本、数据库或复制的表。

ER 节点常常是全连接的根节点,就像图 1 所示的情况:



全连接的节点

但是,业务需求可能要求采用其他拓扑。例如,常常采用集中星型(hub-spoke)拓扑,在这种拓扑中有一个大型中心节点(集线器)和一些小型节点。在这种情况下,集线器节点是惟一了解所有其他节点的节点,而 spoke 节点定义为叶节点。另外,ER 环境中的任何节点都可以是 HDR 对。



集中星型拓扑

非根节点有父节点,还可以有子节点。叶节点有父节点,但是不能有子节点。叶节点也不包含完整的 syscdr 数据库。它们只了解它们参与复制的副本的情况。



根节点、非根节点和叶节点

请记住,复制环境中的任何节点都可以复制到环境中的任何其他节点。

图 4 给出一个层次化树型拓扑:



层次化树型拓扑

图 5 给出一个树型拓扑的森林:



树型拓扑的森林

表 5 描述可用的服务器节点类型及其性质:



节点类型 有无父节点? 有无子节点? 有无完整的元数据? 命令选项
根节点 n/a
非根节点 -N
叶节点 -L






本节讨论如何管理 Enterprise Replication 服务器,包括列出、修改、停止、重新启动、暂停、继续运行、连接、断开连接和删除服务器。

可以通过运行 cdr list server 查看本地服务器已知的每个服务器的细节。这个命令还输出服务器组的队列的大小。



状态 描述 状况 描述
Active 服务器是活跃的,正在进行复制。 Connected 服务器连接已经建立。
Deleted 服务器已经删除,不再捕捉或发送数据,队列被清空。 Connecting 服务器正在尝试连接。
Quiescent 服务器处于定义过程中。 Disconnect 服务器连接显式地中断。
Suspended 暂停向这个服务器发送复制数据。 Dropped 服务器连接由于网络错误而中断,服务器不可访问。
Error 发生一个错误(检查日志,如果需要的话,联系客户支持人员)。
Local 这个服务器是本地服务器,而不是远程服务器。
Timeout 连接由于空闲超时而中断。

清单 14 演示运行这个命令的不同方式:



                      
$ cdr list server -x
usage: cdr list server [-c server] servername
 -c server --connect=server  connect to server

$ cdr list server
SERVER                 ID STATE    STATUS     QUEUE  CONNECTION CHANGED
-----------------------------------------------------------------------
g_00s                2000 Active   Dropped         0 Jun  5 10:35:29
g_80s                  80 Active   Local           0                
g_90s                  90 Suspend  Dropped         0 Jun  5 10:35:39

$ cdr list server g_80s
NAME                 ID     ATTRIBUTES
---------------------------------------
g_80s                  80 atsdir=/informix/ats-ris/boy risdir=/informix/ats-ris/boy

$ cdr list server -c g_90s g_90s
NAME                 ID     ATTRIBUTES
---------------------------------------
g_90s                  90 atsdir=/informix/ats-ris/uf risdir=/informix/ats-ris/uf
        

可以使用 cdr modify server 命令修改三个服务器属性:

  • 空闲超时
  • Aborted Transaction Spooling(ATS)文件的目录位置
  • Row Information Spooling(RIS)文件的目录位置


                            
usage: cdr modify server [-i min] [-A dir] [-R dir] [-m p | r] [-l on|off] server
 -c server --connect=server  connect to server
 -i min    --idle=min        idle timeout
 -A dir    --ats=dir         directory for Aborted Transaction Spool
 -R dir    --ris=dir         directory for Row Information Spool
 -m mode   --mode=mode       set server mode (primary or readonly)
        

还有几个与 ER 相关的服务器配置参数,可以动态地修改这些参数。更多信息请参考 IBM Informix Dynamic Server Enterprise Replication Guide

可以使用 cdr stop 命令临时停止 ER 线程,而不停止服务器。在使用 cdr stop 时,ER 停止读取逻辑日志和寻找要复制的数据。在 ER 停止时,要确保当时没有数据库活动发生(否则,这个站点就会与其他服务器不同步)。这个站点上的 ER 线程会一直停止,直到运行 cdr start 命令为止。

警告:在停止 ER 时,向这个站点进行复制的其他 ER 服务器会把未完成的事务在它们的发送队列中积累起来,直到这个站点恢复运行(或删除)。



                            
$ cdr stop -x
usage: cdr stop [-c server]
        

要想重新启动已经停止的 ER 服务器,应该使用 cdr start。在重新启动服务器时,ER 线程启动并从重放位置(原来停止的位置)继续计算逻辑日志。如果重放的位置指向的逻辑日志不再存在,那么重新启动失败,在服务器上 ER 不处于活跃状态。



                            
$ cdr start -x
usage: cdr start [-c server]
 -c server --connect=server  connect to server
        

cdr stop 命令会完全关闭所有 ER 线程;与其相反,可以使用 cdr suspend server 命令暂停向服务器复制数据。当 ER 暂停时,源服务器将复制的数据放到发送队列中,并暂停向目标服务器发送数据。源服务器会继续发送其他消息,比如确认和控制消息。



                            
usage: cdr suspend server [-c server] servername
 -c server --connect=server  connect to server
        

要想在暂停的服务器上继续运行 ER,应该使用 cdr resume server。在服务器继续运行之后,发送队列中的数据。



                            
$ cdr resume server -x
usage: cdr resume server [-c server] servername
 -c server --connect=server  connect to server
        

connect 命令尝试重新连接一个用 cdr disconnect server 命令中断了连接的数据库服务器。



                            
$ cdr connect server -x
usage: cdr connect server [-c server] servername
 -c server --connect=server  connect to server
        

disconnect 命令中断两个服务器(servername--connect 选项中指定的服务器)之间的连接。如果没有使用 --connect 选项,那么这个命令中断 servername 和默认服务器(由 INFORMIXSERVER 环境变量指定)之间的连接。



                            
$ cdr disconnect server -x      
usage: cdr disconnect server [-c server] servername
 -c server --connect=server  connect to server
        

要想删除 ER 服务器,应该使用 cdr delete server。奇怪之处在于,必须运行 cdr delete server 两次。例如,要想从三节点的 ER 环境中删除服务器组 g_80s,那么需要运行以下命令:



                            
cdr delete server g_80s 
cdr delete server --connect=g_90s g_80s
        

第一个命令从 ER 环境中删除本地服务器组(g_80s),第二个命令连接复制环境中的另一个服务器并从那个服务器上删除 g_80s。然后,这个修改会复制到复制环境中的所有其他服务器。



                            
$ cdr delete server -x
usage: cdr delete server servername
 -c server --connect=server  connect to server
 -f    --force  force the server to be deleted, even in an error condition
        







现在来练习设置 ER 服务器。这个练习帮助您回顾 cdr 命令并设置本教程中用来测试的两个服务器。

练习:使用已经定义的两个测试引擎和 cdr 命令,设置两个相互连接的 ER 服务器,并在每个服务器上查看对方。







练习:应该执行以下步骤:

  1. 添加一个 SBSPACE,并在 onconfig 文件参数 CDR_QDATA_SBSPACE 中设置它的名称。
  2. 定义两个 ER 服务器:
    • 在第一个服务器上:cdr define server -A /informix/ats-ris/boy -R /informix/ats-ris/boy -I g_80s
    • 在第二个服务器上:cdr define server -A /informix/ats-ris/uf -R /informix/ats-ris/uf -I g_90s -S g_80s
  3. 检查服务器是否能够看到对方:
    • 检查 syscdr 数据库是否存在
    • 在消息日志中,检查与启动 ER 和创建 syscdr 数据库相关的消息
    • 运行 onstat -g nif,应该会看到另一个服务器。在每个节点上运行这个命令
    • 运行 cdr list server。应该会在列表中看到定义的两个服务器。在每个节点上运行这个命令
阅读(1670) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~