Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 数据库管理 » 维护数据库 » SQL Anywhere 高可用性 » 数据库镜像简介

 

选择数据库镜像模式

为镜像提供了以下三种运行模式:

同步模式是缺省设置。这些模式控制着何时以及如何在镜像服务器上记录事务,请使用 -xp 服务器选项对其进行设置。

为数据库镜像系统选择同步模式时,必须确定在发生故障转移时是恢复速度更重要还是数据状态更重要。

可能通过查询 MirrorMode 数据库属性的值来检查数据库镜像模式:

SELECT DB_PROPERTY( 'MirrorMode' );
同步模式

在同步模式下,可保证将已提交事务全部记录在镜像服务器上。如果主服务器发生故障,则在镜像服务器接管后不会丢失任何已提交事务。在此模式下,提交事务后,主服务器会将事务日志页发送到镜像服务器。镜像服务器在将这些日志页写入其事务日志副本后确认该传输。主服务器在收到此确认后才会回复应用程序。

使用同步模式可实现事务安全,因为运行服务器处于同步状态,发送到镜像服务器的更改必须在得到确认后,主服务器才能继续。

异步模式

在异步模式下,不能保证已提交事务全部记录在镜像服务器上。在此模式下,提交事务后,主服务器会将事务日志页发送到镜像服务器。但它不等待来自镜像服务器的确认就将 COMMIT 已完成回复给应用程序。如果主服务器发生故障,镜像服务器接管后可能会丢失一些已提交事务。

异步满页模式

在异步满页(或页面)模式下,COMMIT 时不发送日志页;而是在页面填满时发送日志页。这样可减少两个数据库服务器之间的通信量,从而提高主服务器的性能。如果在 pagetimeout 参数指定的秒数内没有将当前日志页发送到镜像服务器,那么即使该页还没有填满也要发送它。pagetimeout 的缺省值为 5 秒。此模式用于限制在主服务器出现故障后镜像服务器取得数据库所有权的情况下在多长时间内已提交事件有可能丢失。异步满页模式隐含着异步操作,所以主服务器不等待来自镜像服务器的确认。

出于上述原因,与同步模式相比,异步和异步满页模式速度更快但可靠性却更低。在异步或异步满页模式下,从主服务器到镜像服务器的故障转移不会自动进行,因为镜像服务器中可能没有主服务器上所应用的全部已提交事务。因此,如果使用异步或异步满页模式,则在缺省情况下,主服务器发生故障时镜像服务器不能取得数据库的所有权。如果想要在这种情况下进行自动故障转移(尽管很可能会丢失事务),请使用 -xp 服务器选项将 autofailover 选项设置为 yes。否则,当重新启动发生故障的服务器时,它会检测是否丢失了事务。如果丢失了事务,则将一条消息写入数据库服务器消息日志,然后关闭数据库。然后必须使用备份替换当前数据库和事务日志,镜像才能继续进行。

有关在异步或异步满页模式下,在服务器出现故障后恢复服务器的信息,请参见从主服务器故障恢复

注意

建议您在使用异步或异步满页模式时,将 -xp autofailover 选项设置为 yes。这样,如果主服务器出现故障,镜像服务器会自动作为主服务器进行接管。

synchronize_mirror_on_commit 选项用于控制在异步或异步满页模式下运行时保证何时将数据库更改发送到镜像服务器。此选项设置为 On 时,每个 COMMIT 都会导致将事务日志中记录的所有更改发送到镜像服务器,并致使镜像服务器在收到更改后向主服务器发送确认。可以使用 SET TEMPORARY OPTION 为特定事务设置此选项。通过在登录过程中检查 APPINFO 字符串为特定应用程序设置此选项也很有用。

SQL Anywhere 支持当数据库镜像系统中发生故障转移时所触发的那些系统事件,而不管您使用的是哪种模式。您可将这些事件用于诸如发生故障转移时向管理员发出通知之类的任务。请参见数据库镜像系统事件

另请参见

同步状态
状态信息文件