HADR配置参数详解

HADR_LOCAL_HOST:HADR本机IP地址。

HADR_LOCAL_SVC:HADR本机端口号。

HADR_REMOTE_HOST:HADR远端IP地址。

HADR_REMOTE_SVC:HADR远端端口号。

HADR_REMOTE_INST:HADR远端实例名。

HADR_SYNCMODE:

SYNC:主服务器上的事务只在相关日志写入主服务器和备用服务器上的磁盘后才提交。

NEARSYNC:主服务器上的事务只在相关日志写入主服务器上的磁盘且被备用服务器上的内存接收后才提交。

ASYNC:主服务器上的事务只在相关日志写入本地磁盘并发送到备用服务器后才提交。

SUPERASYNC:主数据库上数据库日志的产生与发送完全分离,二者没有任何依赖,这样 HADR 对于主数据库业务的影响降到了最低

一般而言,HADR 同步模式的选择取决于网络速度。对于 WAN,ASYNC 、模式是推荐选项,因为传输延迟对 ASYNC模式下的 HADR 性能没有影响。

对于 LAN,最常用的选项是 SYNC 和 NEARSYNC 模式。一种例外情况可能是:备用数据库只用于灾难恢复且业务需求能够容忍故障转移时的数据损失,或者工作负载太高,即使是 LAN 也不能处理。这时,您也许只能使用 ASYNC 模式。在 SYNC 和 NEARSYNC 之间进行选择时,要权衡 SYNC 模式可能带来的系统性能成本(源自通信开销)和 NEARSYNC 模式针对 “双失败” 提供的安全性

SYNC 模式

SYNC 模式提供最好的数据保护。事务提交需要两份磁盘数据副本。这种模式的成本在于将数据写入备用数据库并将 ACK 消息发回主数据库所需的额外时间。

在 SYNC 模式中,日志只有在写入主磁盘后才发送到备用数据库。日志写入和复制事件按顺序进行。日志写入的总时间为:PRIMARY_LOG_WRITE + LOG_SEND + STANDBY_LOG_WRITE + ACK_MESSAGE。这种模式中的复制通信开销比其他两种模式都高很多。

NEARSYNC 模式

NEARSYNC 模式几乎与 SYNC 模式一样出色,且其通信开销大量降低。在 NEARSYNC 模式中,发送日志到备用数据库和将日志写入主磁盘同时进行,备用服务器的内存接收到日志后立即发送一条确认(ACK)消息。在高速网络上,日志复制对主日志写入产生的开销很小甚至没有。

在 NEARSYNC 模式中,如果主服务器失败且备用服务器在将接收到的日志写入磁盘之前也失败,则数据将丢失。这是一种非常少见的 “双失败”场景。因此,NEARSYNC 是很多应用程序的首选,因为它以非常低的性能损失提供近乎同步的保护。

ASYNC 模式

在 ASYNC 模式中,发送日志到备用数据库和将日志写入主磁盘同时进行,这与 NEARSYNC 模式完全相同。由于 ASYNC 无需等待来自备用服务器的 ACK 消息,因此主系统流量是日志写入速度和日志发送速度二者之间的最小者。ASYNC 模式非常适用于 WAN 应用程序。网络传输延迟不会影响这种模式的性能,但如果主数据库失败,则正在传输的日志丢失(没有复制到备用数据库)的几率更大。

SUPERASYNC超级异步模式

从 DB2 LUW V9.7.5 和 V9.5.8 开始,HADR 引入了一种新的同步模式,即超同步模式。在该同步模式下,主数据库上数据库日志的产生与发送完全分离,二者没有任何依赖,这样 HADR 对于主数据库业务的影响降到了最低;同时,由于日志的产生与发送分离,可能导致主数据库和备机数据库之间的差距较大,此时如果主机发生故障,会有较多的数 据丢失;并且非强制接管(NON-FORCE TAKEOVER)可能需要更多时间。

HADR_SPOOL_LIMIT;此参数确定允许在HADR备用数据库上假脱机到磁盘的最大日志数据量。日志假脱机使HADR主数据库上的事务得以进行,而不必等待HADR备用数据库上的日志重播。如果主数据库发送的日志数据在日志重放中落后,则将其写入或假脱机到备用数据库的磁盘上。备用数据库稍后可以从磁盘读取日志数据。这使系统可以更好地容忍主数据库上的事务量激增,或备用数据库上的日志重播速度慢(由于特定类型的日志记录的重播)。要禁用假脱机,将HADR_SPOOL_LIMIT设置为0。禁用假脱机时,备用数据库可以位于主数据库之后,直至达到日志接收缓冲区的大小。当缓冲区已满时,由于主数据库无法将更多日志数据发送到备用系统,因此主数据库上的新事务可能会被阻止。值-1表示无限假脱机(与可用磁盘空间支持的数量一样多)。如果为HADR_SPOOL_LIMIT使用了较高的值,则应考虑如果主数据库的日志位置与备用数据库上的日志重播之间有较大的差距,这可能导致更长的接管时间,因为备用数据库无法承担新的备用数据库,直到假脱机日志的重放完成。

HADR_TIMEOUT:此参数指定HADR进程在考虑通信尝试失败之前等待的时间(以秒为单位),默认为120S。

HADR_PEER_WINDOW:将HADR_PEER_WINDOW设置为非零时间值时,如果主数据库失去与备用数据库的连接,则在配置的时间内,HADR主备数据库对将继续表现为仍处于对等状态。这有助于确保数据的一致性。

blocknonlogged:在线生效参数,默认情况下,BLOCKNONLOGGED设置为NO,允许非日志记录的操作。但是在HADR数据库环境中,如果在主数据库上执行任何未记录日志的操作,则必须重新初始化备用数据库。如果BLOCKNONLOGGED设置为YES,CREATE TABLE和ALTER TABLE语句不支持NOT LOGGED INITIALLY参数、NOT LOGGED参数。LOAD不再支持NONRECOVERABLE选项和COPY NO选项。

indexrec:在线生效参数,有五种模式:SYSTEM; RESTART; RESTART_NO_REDO; ACCESS;ACCESS_NO_REDO

SYSTEM:使用数据库管理器配置文件中指定的系统设置来确定何时重建无效索引,以及在前滚或HADR日志重播期间是否要重做任何索引构建日志记录。

RESTART:INDEXREC的默认值。当显式或隐式发出RESTART DATABASE命令时,将重建无效的索引。在前滚或HADR日志重播期间,将重做所有完全记录的索引构建。启动HADR并进行HADR接管后,将在接管结束时重建所有无效索引。如果在应用程序连接到数据库时数据库异常终止,并且启用了AUTORESTART参数,则当应用程序连接到数据库时,隐式发出RESTART DATABASE命令。如果数据库正常终止,则必须在与数据库建立任何连接之前发出RESTART DATABASE命令,否则不会重新创建索引。如果未发出命令,则下次访问基础表时将重建无效索引。

RESTART_NO_REDO:当显式或隐式发出RESTART DATABASE命令时,将重建无效的索引。在前滚或HADR日志重放期间,不会重做任何完全记录的索引构建,而是在前滚完成或发生HADR接管时重建这些索引。接管将导致在新主数据库上的基础表上重建索引,这将导致日志记录被写入然后发送到新的备用数据库,使得索引在备用数据库上无效。如果在应用程序连接到数据库时数据库异常终止并且启用了AUTORESTART参数,则在应用程序连接到数据库时隐式发出RESTART DATABASE命令。如果数据库正常终止,则必须在与数据库建立任何连接之前发出RESTART DATABASE命令,否则索引重新创建不会发生。如果未发出命令,则下次访问基础表时将重建无效索引。发生致命磁盘问题时,索引可能变得无效。如果这发生在数据本身上,则数据可能会丢失。但是,如果索引发生这种情况,可以通过重新创建索引来恢复它。如果在用户连接到数据库时重建索引,则可能会发生两个问题:重新创建索引文件时,响应时间可能会意外下降。访问表并使用此特定索引的用户将在重建索引时等待。

重新创建索引后,可能会意外锁定,特别是如果导致重新创建索引的用户事务从未执行COMMIT或ROLLBACK。

ACCESS:首次访问基础表时,将重建无效的索引。在前滚或HADR日志重播期间,将重做所有完全记录的索引构建。当启动HADR并发生HADR接管时,接管后第一次访问基础表时将重建所有无效索引。

ACCESS_NO_REDO:首次访问基础表时,将重建无效的索引。在前滚或HADR日志REPLAY期间,不会重做任何完全记录的索引构建,并且这些索引将保持无效。启动HADR并进行HADR接管后,在接管后首次访问基础表时,将重建所有无效索引。对新主数据库上的基础表的访问会导致索引重建,从而导致日志记录被写入然后发送到新的备用数据库,这又导致索引在备用数据库上无效。

LOGINDEXBUILD:在线生效参数,将LOGINDEXBUILD配置参数设置为OFF时,在前滚索引创建,重新创建或重组操作时,索引对象被标记为无效。前滚操作完成并且数据库重新启动后,必须重新创建索引。索引重新创建取决于INDEXREC配置参数的值以及是否发出明确的RESTART DATABASE命令。将LOGINDEXBUILD配置参数设置为ON时,将在索引创建,重新创建和重组期间记录每个索引页面。索引对象未标记为无效,并且前滚操作完成后不必重新创建索引。

AUTORESTART:在线生效参数,默认为ON,当AUTORESTART参数设置为ON时,下一次数据库连接尝试将在必要时自动执行崩溃恢复。如果将AUTORESTART参数设置为OFF,则自动成员崩溃恢复和组崩溃恢复过程将处于非活动状态,并且如果需要,必须手动执行。崩溃恢复过程可以使用RESTART DATABASE命令启动。

DB2_STANDBY_ISO:默认值:NULL,值:UR或OFF

此变量将在活动HADR备用数据库上运行的应用程序和语句所请求的隔离级别强制为“未提交读(UR)”。当DB2_STANDBY_ISO设置为UR时,高于UR的隔离级别被强制为UR,没有返回警告。如果HADR备用数据库接替HADR主数据库,则此变量将无效。

DB2_HADR_ROS:默认值:OFF,值:OFF或ON。此变量启用HADR备机读取功能。在HADR备用数据库上启用DB2_HADR_ROS时,备用数据库将接受客户端连接并允许在其上运行只读查询。DB2_HADR_ROS是一个静态注册表变量,因此它需要重新启动DB2实例才能使更改的设置生效。

DB2_HADR_PEER_WAIT_LIMIT:默认值:0(表示无限制),值:0到最大无符号32位整数(含)。当设置DB2_HADR_PEER_WAIT_LIMIT注册表变量时,如果主数据库上的日志记录由于日志复制到备用数据库而被阻塞了指定的秒数,那么HADR主数据库将突破对等状态。当达到此限制时,主数据库将中断到备用数据库的连接。如果对等窗口被禁用,主数据库将进入断开连接状态并继续记录日志。如果启用了对等窗口,主数据库将进入断开连接的对等状态,在这种状态中日志记录将继续被阻塞。主数据库在重新连接或对等窗口过期时保留断开的对等状态。一旦主节点离开断开连接的对等节点状态,日志记录将恢复。

注:如果设置DB2_HADR_PEER_WAIT_LIMIT,请使用最小值10,以避免触发错误警报。

DB2_HADR_BUF_SIZE:此变量指定以日志页为单位的备用日志接收缓冲区大小。如果没有设置,DB2将使用主LOGBUFSZ配置参数值的两倍作为备用接收缓冲区大小。可以指定的最大大小是4 GB。

如果将HADR同步模式(HADR_SYNCMODE数据库配置参数)设置为异步,在对等状态下,慢速备用可能会导致主服务器上的SEND操作停止,从而阻塞主服务器上的事务处理。可以在备用数据库上配置比默认日志接收缓冲区更大的日志接收缓冲区,以允许它保存更多未处理的日志数据。这可能允许主服务器生成日志数据的速度快于备用服务器消耗日志数据的速度,而不会阻塞主服务器上的事务处理。

DB2_HADR_SORCVBUF:默认值:操作系统TCP套接字发送缓冲区大小,值:1024至4294967295。此变量指定操作系统(OS) TCP套接字接收HADR连接的缓冲区大小,这允许用户从其他连接明确地自定义HADR TCP/IP行为。有些操作系统会自动四舍五入或静默地限制用户指定的值。用于HADR连接的实际缓冲区大小记录在DB2DIAG日志文件中。这个变量应该与DB2_HADR_SOSNDBUF结合使用。

DB2_HADR_SOSNDBUF:默认值:操作系统TCP套接字发送缓冲区大小,值:1024至4294967295。此变量指定HADR连接的操作系统(OS)TCP套接字发送缓冲区大小,这使用户可以自定义HADR TCP / IP行为,使其不同于其他连接。某些操作系统会自动舍入或静默限制用户指定的值。用于HADR连接的实际缓冲区大小记录在DB2DIAG日志文件中。该变量应与DB2_HADR_SORCVBUF结合使用。

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lglovegq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值