使用数据库镜像时,可以使用只读连接访问在镜像服务器上运行的数据库。如果您要下放报告或需要此数据库的只读访问的其它操作,此功能很有用。
在镜像系统中,您不必知道哪个数据库担当主服务器和镜像服务器。如果您要能够连接到在镜像服务器上运行的数据库,需在启动数据库服务器时包括 -sm 服务器选项。这样,通过提供用于访问只读镜像数据库的服务器名,就能够建立找到镜像服务器的连接。只有在数据库服务器担当数据库的镜像服务器时,通过 -sm 选项指定的服务器名才处于活动状态。通常对这两个数据库服务器都指定 -sm 选项,因为您不知道哪个服务器担当主服务器或镜像服务器。例如,-sm 选项指示数据库服务器使用 mysamplemirror 作为连接到在镜像服务器上运行的数据库时的替代服务器名:
dbsrv11 -n myserver satest.db sample.db -sn mysampleprimary -sm mysamplemirror -xp "partner=( ENG=server2;LINKS=TCPIP( PORT=2637;TIMEOUT=1 ) );auth=abc; arbiter=( ENG=arbiter;LINKS=TCPIP;( PORT=2639;TIMEOUT=1 ) );mode=sync" |
尝试更改数据库将导致错误,其行为与使用 -r 选项作为只读启动数据库时的行为相同。可以在临时表上执行操作,但在镜像数据库上不触发事件。事件触发只在发生从主服务器到镜像服务器的故障转移之后启动。如果已定义,此时触发 DatabaseStart 和 MirrorFailover 事件。有关详细信息,请参见了解系统事件。
如果发生故障转移,镜像服务器变为主服务器,将维持与镜像服务器的连接。故障转移后,连接可对数据库进行更改。您可以查询 ReadOnly 数据库属性的值,以确定您所连接的数据库是否可以更新:
SELECT DB_PROPERTY( 'ReadOnly' ); |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |