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 高可用性 » 设置数据库镜像

 

数据库镜像系统事件

数据库镜像支持以下系统事件:

  • MirrorFailover   每当数据库服务器取得镜像数据库的所有权时便会触发此事件。例如,在服务器初次启动并确定其将拥有数据库时,便会触发该事件。当先前担当镜像服务器的服务器确定主服务器已出现故障,并在与仲裁服务器协商后确定其应拥有所有权时,也会触发该事件。

  • MirrorServerDisconnect   当主服务器与镜像服务器或仲裁服务器之间失去连接时,将会触发 MirrorServerDisconnect 事件。在此事件的处理程序中,EVENT_PARAMETER( 'MirrorServerName' ) 的值是失去连接的服务器的名称。

这两个事件不会在当前正在充当镜像服务器的服务器上触发。同样,不能将镜像事件定义为在仲裁服务器上执行,因为事件仅在定义它们的数据库环境中运行,并且仲裁服务器也不会使用要被镜像的数据库副本。

您可将这两个事件用作通知机制,以电子邮件的形式将可能需要对镜像数据库采取行动的通知发送出去。在所有会导致在主服务器上运行的数据库变为不可用的情况下都不会触发这两个事件。例如,同时影响主服务器和镜像服务器的断电情况便不会触发这两个事件中的任何一个事件。如果需要这种类型的监控,可以通过脚本编写语言在单独的计算机上加以实现,方法是通过调用 dbping 定期连接到镜像服务器。请参见Ping 实用程序 (dbping)

以下示例创建了一个事件,用以在发生故障转移时通知管理员:

CREATE EVENT mirror_server_unavailable
TYPE  MirrorServerDisconnect 
HANDLER
BEGIN
 CALL xp_startmail ( mail_user ='George Smith',
                     mail_password ='mypwd' );
 CALL xp_sendmail( recipient='DBAdmin',
    subject='Database failover occurred',
    "message"='The following server is unavailable in the mirroring system: '
    || event_parameter( 'MirrorServerName' ) );
 CALL xp_stopmail ( );
END;
另请参见