informix数据库高可用集群技术及应用实现Word格式.docx
《informix数据库高可用集群技术及应用实现Word格式.docx》由会员分享,可在线阅读,更多相关《informix数据库高可用集群技术及应用实现Word格式.docx(25页珍藏版)》请在冰豆网上搜索。
使用同步更新时,如果发生故障,那么在主数据库服务器上提交的事务在HDR辅助数据库服务器上不会仍未提交或部分提交。
如果您将DRINTERVAL设置为除-1以外的任何值,那么数据复制将针对HDR辅助服务器异步发生。
主数据库服务器在将逻辑日志缓冲区内容复制到HDR缓冲区之后会清仓逻辑日志缓冲区。
(与上述操作无关)当发生以下条件之一时,主数据库服务器在整个网络上发送HDR缓冲区的内容:
HDR缓冲区变满。
自上次将记录发送至辅助数据库服务器以后,DRINTERVAL配置参数在主数据库服务器上指定的时间间隔已过去。
该更新方法可以提供比同步更新更好的性能。
但是,可能会丢失事务。
HDR处理数据复制的线程
主数据库服务器启动专门的线程来支持数据复制。
如图2所示,主数据库服务器上名为drprsend的线程将整个网络上主服务器缓冲区的内容发送至辅助数据库服务器上名为drsecrcv的线程。
辅助数据库服务器上名为drsecapply的线程将接收缓冲区的内容复制到恢复缓冲区。
logrecvr线程对恢复缓冲区的内容执行逻辑恢复,将逻辑日志记录应用到辅助数据库服务器管理的数据库空间。
OFF_RECVRY_THREADS配置参数指定使用的logrecvr线程数。
数据库服务器启动的其余线程是drprping和drsecping线程,它们负责发送和接收指示两个数据库服务器是否连接的消息。
图2.HDR数据复制线程示例图
HDR主、备机之间采用半双工通信协议,因此对网络延迟非常敏感,通常要求网络要非常稳定,同时距离支持有限,通常在同一个大楼里面。
HDR配置实现
HDR对硬件和操作系统要求:
运行主数据库服务器和辅助数据库服务器的计算机必须相同(相同的供应商和体系结构)。
运行主数据库服务器和辅助数据库服务器的计算机上的操作系统必须相同。
运行主数据库服务器和辅助数据库服务器的硬件必须支持网络能力。
分配给主数据库服务器和辅助数据库服务器的数据库空间的磁盘空间量必须相等。
磁盘空间类型是不相关的;
您可以在两个数据库服务器上使用任何原始或格式化的空间组合。
HDR对数据库和数据要求:
数据库必须将事务日志记录打开。
数据必须驻留在数据库空间或Sb空间中。
HDR对配置参数的要求:
以下ONCONFIG参数在每个数据库服务器上都必须具有相同值:
ROOTNAME
ROOTOFFSET
ROOTPATH
ROOTSIZE
MIRROROFFSET
MIRRORPATH
PHYSDBS
PHYSFILE
LTAPEBLK
LTAPESIZE
TAPEBLK
TAPESIZE
LOGFILES
LOGSIZE
DYNAMIC_LOGS
数据库服务器记录逻辑日志文件的添加。
在主服务器上动态添加的逻辑日志文件将在辅助服务器上自动复制。
尽管辅助服务器上的DYNAMIC_LOGS值不起作用,请保持主服务器上DYNAMIC_LOGS与值的同步,以免它们切换角色。
HDR配置参数在复制对中的两个数据库服务器上必须设置为相同的值:
∙DRAUTO
∙DRINTERVAL
∙DRTIMEOUT
HDR相关配置参数说明:
∙DRAUTO:
用来控制主服务器和HDR备用服务器在出现故障时的行为。
其取值范围如下:
o0表示OFF=不要在HDR环境中自动切换服务器类型。
o1表示RETAIN_TYPE=在HDR故障期间自动从辅助切换到标准。
在重新启动HDR时切换回辅助。
o2表示REVERSE_TYPE=在HDR故障时自动从辅助切换到标准。
在重新启动HDR时切换到主要(并将原来的主要切换为辅助)。
∙DRIDXAUTO:
指定如果HDR辅助服务器检测到了毁坏的索引,主服务器是否要自动启动索引复制。
o0-禁用自动索引修复
o1-启用自动索引修复
∙DRINTERVAL:
指定高可用性数据复制缓冲区的清仓之间的最大时间间隔(秒)。
o>
=0-异步更新
o-1-同步更新
∙DRLOSTFOUND:
指定dr.lostfound.timestamp文件的路径名。
该文件包含当主数据库服务器遇到故障时在主数据库服务器上提交但未在辅助数据库服务器上提交的事务。
如果在主数据库服务器和辅助数据库服务器之间同步发生更新(即,如果DRINTERVAL设置为-1),那么此参数不适用。
∙DRTIMEOUT:
出现网络超时的时间,以秒为单位。
DRAUTO使用该参数检测故障转移。
>
=0秒,缺省为30秒
向集群中添加HDR备用服务器
向集群添加一个HDR备用服务器的具体步骤:
步骤1:
准备SQLHOSTS文件
在主服务器更新SQLHOSTS文件,同时在HDR备用服务器中更新:
productiononsoctcpserver_1prod_tcp
sds1onsoctcpserver_1sds1_tcp
hdr1onsoctcpserver_1hdr1_tcp
rss1onsoctcpserver_1rss1_tcp
clr1onsoctcpserver_1clr1_tcp
步骤2:
配置ONCONFIG文件
保证HDR备用服务器上的DRAUTO、DRINTERVAL、DRTIMEOUT、与根dbspace相关的设置、与物理日志、逻辑日志相关的ONCONFIG配置参数同主服务器上保持一致。
步骤3:
备份主服务器
在主服务器中,使用0级备份:
ontape-s-L0
步骤4:
将HDR备份服务器注册到主服务器
在主服务器中,运行:
onmode-dprimaryhdr
步骤5:
准备HDR备用服务器的磁盘
HDR备用服务器使用的存储必须匹配主服务器的存储(例如,必须匹配dbspace的数量、块的数量、块大小、路径名和偏移量)。
步骤6:
恢复HDR备用服务器上的备份
在HDR服务器上,执行0级备份的物理恢复:
ontape-p
Threequestionswillbeasked.Answerasshownbelow:
Continuerestore?
(y/n)y
Doyouwanttobackupthelogs?
(y/n)n
Restorealevel1archive(y/n)n
步骤7:
使HDR备用服务器进入online模式
完成恢复后,HDR备用服务器将进入recovery模式。
运行以下命令:
onmode-dsecondaryproduction
HDR状态监控
onstat–命令
每次执行onstat时显示的头信息均有字段指示数据库服务器正在作为主数据库服务器还是辅助数据库服务器运行。
以下示例为作为复制对中的主数据库服务器并且处于联机方式的数据库服务器显示头信息:
IBMInformixDynamicServerVersion11.50.UC1
--On-Line(Prim)--Up00:
00:
59--105120Kbytes
以下示例显示作为复制对中的HDR辅助数据库服务器并且处于读写方式的数据库服务器:
--Updatable(Sec)--Up00:
以下示例显示不包含在HDR中的数据库服务器的标题。
该数据库服务器的类型为标准类型。
--On-Line--Up00:
onstat-gdri命令
要获得完整的HDR监视信息,请执行onstat-gdri选项。
显示以下字段:
∙数据库服务器类型(主类型、辅助类型或标准类型)
∙HDR状态(打开或关闭)
∙成对的数据库服务器
∙最后一个HDR检查点
∙HDR配置参数的值
oncheck–pr命令
如果您的数据库服务器正在运行HDR,那么保留页面PAGE_1ARCH和PAGE_2ARCH将保存HDR用于同步主数据库服务器和辅助数据库服务器的检查点信息。
下图中给出相关的oncheck-pr输出示例。
运行HDR的数据库服务器的oncheck-prPAGE_1ARCH输出:
ValidatingInformixDatabaseServerreservedpages
-PAGE_1ARCH&
PAGE_2ARCHUsingarchivepagePAGE_1ARCH.
ArchiveLevel0RealTimeArchiveBegan01/11/9516:
54:
07TimeStamp
ArchiveBegan11913LogicalLogUniqueId3LogicalLogPositionb018DR
CkptLogicalLogId3
DRCkptLogicalLogPos80018DRLastLogicalLogId3DRLastLogicalLogPage128
使用SMI表sysdri
查询sysmaster数据库中的sysdri表,同样可以获得完整的HDR监视信息。
sysdri表包含以下各列。
列
描述
type
HDR服务器类型
state
HDR服务器状态
name
数据库服务器名称
intvl
HDR缓冲区清空时间间隔
timeout
网络超时
lostfound
HDRlost+found路径名
HDR故障恢复
HDR的失败是失去了复制对中数据库服务器之间的连接。
任一以下情况均可能导致数据复制失败:
∙一个数据库服务器的站点上发生灾难性故障(如火灾或大地震)
∙连接两个数据库服务器的联网电缆被破坏
∙一个数据库服务器上的处理中延迟过长
∙辅助数据库服务器上发生磁盘故障(未通过镜像块解决)
HDR故障的检测
数据库服务器将以下任何一种情况解释为HDR失败:
∙超过了指定的超时值。
在正常的HDR操作期间,数据库服务器期待来自对中另一数据库服务器的通信确认。
对中的每个数据库服务器都具有一个ONCONFIG参数DRTIMEOUT,该参数指定秒数。
如果来自对中另一数据库服务器的确认没有在DRTIMEOUT指定的秒数返回,那么数据库服务器会假设发生了HDR失败。
∙主-辅助对中的另一数据库服务器未响应网络上的定期消息传递(pinging)尝试。
无论主数据库服务器是否向辅助数据库服务器发送任何记录,两个数据库服务器均会互相ping。
如果主要-辅助对的一个数据库服务器没有响应四个连续的ping尝试,那么另一个数据库服务器会假设发生了HDR失败。
当数据库服务器检测到HDR失败时,它将写一个消息到其消息日志(例如,DR:
receiveerror)并关闭数据复制。
如果发生了HDR失败,那么两个数据库服务器之间的HDR连接将断开,并且辅助数据库服务器将保持只读方式。
如果辅助数据库服务器在high-availabilitydata-replication失败后保持联机状态,并且DRAUTO配置参数设置为1(RETAIN_TYPE),那么该数据库服务器的类型将自动更改为标准。
如果DRAUTO设置为0(off),那么辅助数据库服务器将顶事尝试重新建立与主数据库服务器的通信。
如果DRAUTO设置为2(REVERSE_TYPE),那么当旧的主服务器发生故障时(而非旧的主服务器重新启动时),在连接结束时,辅助数据库服务器将立即成为主数据库服务器。
RSS技术
从Informix11开始,Informix数据库提供了RSS、SDS、CLR技术,它扩展了以前HDR只支持主、备两台机器,系统可以支持多台RSS、SDS备机,进一步提高了高可用性。
Informix11提出了一种新的通信方式SMX(ServerMultiplexer)用来建立节点之间的网络连接。
SMX采用全双工的通信协议,支持异步通信方式,在低速网络上提供更好的通信连接,简化了节点之间的通信管理,支持加密传输,同一个SMX连接可以支持多个内部功能传输。
图3.SMX通信示意图
RSS自动启动SMX通信方式。
RSS工作的基本原理
为支持RS辅助服务器,主服务器要进行检查以查看是否连接了RS辅助服务器,如果连接,那么将页面复制到用于将该页面发送到RS辅助服务器的日志高速缓存。
图4.RSS数据复制线程示意图
RSS_Send线程将日志页面传输到RS辅助服务器。
很有可能需要发送的下一页不在日志高速缓存中。
在该情况下,RSS_Send线程将直接从磁盘读取日志页。
RSS_Send线程与SMX交互,以使用全双工方式发送数据。
有了全双工通信,线程在发送下一个缓冲区之前不等待来自RS辅助服务器的确认。
在主服务器需要来自RS辅助服务器的确认之前最多可发送32个缓冲区传输。
如果达到32个缓冲区的限制,那么发送线程将等待RSS_Recv线程接收来自RS辅助服务器的确认。
在RS辅助服务器上,RSS_Recv与SMX交互,以接收来自主服务器的日志页。
RSS在很多方面都与HDR相似。
将日志发送到RSS的方式与主服务器将日志发送到HDR辅助服务器的方式很相似。
但是,RSS采用SMX异步通信框架,因此其对主服务器的影响达到最小。
出于该原因,主服务器和RSS辅助服务器之间事务落实或检查点均不是同步进行的。
换句话说,不保证在主服务器上落实的任何事务也在同一时间在RSS辅助服务器上得到落实。
因为RSS辅助服务器是异步进行更新的,所以RSS辅助服务器不能直接提升为主服务器。
相反,它可以提升为HDR辅助服务器,然后可提升为主服务器。
另外,HDR辅助服务器可降级为RS辅助服务器。
尽管RS辅助服务器与HDR辅助服务器类似,但有某些操作是HDR辅助服务器可执行但RS辅助服务器却不支持,例如:
∙RS辅助服务器不支持SYNC方式
∙RS辅助服务器不支持DRAUTO
∙RS辅助服务器不具有同步检查点
∙RS辅助服务器不能直接转换为主服务器
RSS备用服务器的主要作用是提供灾难恢复解决方案。
如同在HDR中一样,主服务器不断将其所有的逻辑日志记录发送给RS备用服务器,不过RS使用的异步方式。
与HDR不同,通信使用全双工协议。
因此RS对网络延迟不是很敏感,并且可以更容易驻留在一个较远的地理位置。
同时,如果节点间通信线路比较差的情况下,页经常采用RS备用服务器方式。
RS备用服务器的一个特点是主服务器并不和RS备用服务器同步检查点,这一点和SD和HDR服务器不同。
因此不能立即替代主服务器;
必须首先切换为一个HDR服务器。
RSS配置实现
硬件和软件需求
RS辅助服务器维护物理数据库的完整副本。
出于此原因,以下内容必须与主服务器相同:
∙运行数据库服务器的计算机硬件
∙分配给数据库空间的磁盘空间量
∙创建数据库空间时使用的物理设备中的偏移量
索引页日志记录(LOG_INDEX_BUILDS)
在创建索引时,索引页日志记录将各页写入到逻辑日志,以使高可用性环境中各服务器之间的索引创建同步。
要使用RS辅助服务器,必须启用索引页日志记录。
索引页日志记录将完整索引写入到日志文件,然后将该日志文件异步地传输到辅助服务器。
辅助服务器可以是RS辅助服务器,也可以是HDR辅助服务器。
然后,日志文件事务被读入到辅助服务器上的数据库,减少辅助服务器在恢复期间重新构建索引的需求。
对于RS辅助服务器,主服务器不等待来自辅助服务器的确认,这允许对主服务器上索引的立即访问。
索引页日志记录是使用onconfig参数LOG_INDEX_BUILDS进行控制的。
如果LOG_INDEX_BUILDS设置为1(已启用),那么在主服务器上构建索引然后将索引发送到辅助服务器。
向集群中添加RS备用服务器
向集群添加一个RSS备用服务器的具体步骤:
集群中的所有服务器必须具有针对其他服务器的SQLHOSTS条目。
hdr1onsoctcpserver_1
hdr1_tcp
在主服务器上,启用索引页面日志记录
onmode-wfLOG_INDEX_BUILDS=1
在主服务器上,注册新的RS备用服务器
onmode-daddRSSrss1
对主服务器采取0级备份
在RS备用服务器中,恢复备份
使RS备用服务器进入online模式
onmode-dRSSmyprim
RSS状态监控
每次执行onstat时显示的头信息均有字段指示数据库服务器正在作为主数据库服务器还是辅助数据库服务器运行。
以下示例显示作为复制对中的RSS辅助数据库服务器并且处于读写方式的数据库服务器:
--Updatable(RSS)--Up00:
59--105120Kbytes
onstat-grss命令