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

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - 数据库管理 » 高可用性和只读向外扩展系统 » 数据库镜像

 

教程:移动伙伴服务器

要在不停止系统的情况下将数据库镜像系统中的服务器移动到另一个服务器,需删除当前镜像服务器的镜像定义,然后创建一个新服务器并将此新服务器添加到镜像系统。

前提条件

本教程依赖于教程:创建数据库镜像系统中介绍的数据库镜像系统。

您必须具有 MANAGE ANY MIRROR SERVER 特权。

此任务涉及到备份数据库副本。请根据所选的备份方法参见适用于该方法的特权。

上下文和注释

在本教程中,所有数据库服务器都运行在同一台计算机上。但是在生产环境中,每个数据库服务器必须安装在单独的计算机上,而且连接字符串中对 localhost 的引用必须更改为实际的计算机名。

 任务
  1. 连接到想要移动的伙伴服务器 mirror_server2 并确保其拥有镜像角色。您只能移动拥有镜像角色的伙伴服务器。如果想连接的服务器是主服务器,则必须启动故障转移,以便镜像服务器和主服务器切换角色。运行以下命令:

    dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_server2;HOST=localhost:6872" SELECT DB_PROPERTY( 'MirrorRole' )

    将返回当前服务器的镜像角色。

    • 如果返回 Mirror,则 mirror_server2 当前为镜像服务器。

    • 如果返回 Primary,则 mirror_server2 当前为主服务器,必须启动故障转移以使 mirror_server2 变为镜像服务器。运行以下命令以启动故障转移:

      dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_server2;HOST=localhost:6871,localhost:6872" ALTER DATABASE SET PARTNER FAILOVER

      两个伙伴服务器切换角色。

  2. 为新的伙伴服务器创建新目录。运行以下命令:

    mkdir c:\server3
  3. 连接到主服务器。运行以下命令:

    dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_demo_primary;HOST=localhost:6871,localhost:6872" 
  4. 通过执行 DROP MIRROR SERVER 语句,删除正在移动的服务器的伙伴服务器定义。执行以下语句:

    DROP MIRROR SERVER mirror_server2;

    镜像数据库停止。如果服务器上只有镜像数据库正在运行,则服务器也将停止。

  5. 为即将成为新伙伴服务器的服务器创建新的伙伴服务器定义。执行以下语句:

    CREATE MIRROR SERVER mirror_server3 AS PARTNER 
    connection_string='SERVER=demo_server3;HOST=localhost:6874' 
    state_file='c:\\server3\\server3.state'; 
  6. 更新主服务器和镜像服务器定义。执行以下语句:

    ALTER MIRROR SERVER mirror_demo_primary AS PRIMARY 
    connection_string='SERVER=mirror_demo_primary;HOST=localhost:6871,localhost:6874';
    ALTER MIRROR SERVER mirror_demo_mirror AS MIRROR
     connection_string='SERVER=mirror_demo_mirror;HOST=localhost:6871,localhost:6874';
    
  7. 通过运行以下命令,在主服务器中创建镜像数据库文件和事务日志的副本,并将这些副本添加到 c:\server3

    dbbackup -c "UID=DBA;PWD=sql;SERVER=mirror_server1;DBN=mirror_demo"  c:\server3
  8. 使用 -xp on 选项启动新的伙伴服务器,以使其加入镜像系统。运行以下命令:

    dbsrv16 -n mirror_server3 -x "tcpip(PORT=6874)" -su sql "c:\server3\mirror_demo.db" -xp on
  9. 连接到新的伙伴服务器,并验证该服务器为镜像服务器。运行以下命令:

    dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_server3;HOST=localhost:6874" "SELECT DB_PROPERTY( 'MirrorRole' )" 

    此命令返回 Mirror

结果

镜像系统正在使用新的伙伴服务器运行。

下一个

确保连接到主服务器或镜像服务器的客户端的连接字符串已更新,以在 Host 连接参数中指定两个伙伴服务器的地址:

连接到主服务器上的数据库的连接字符串:

'UID=DBA;PWD=sql;SERVER=mirror_demo_primary;HOST=localhost:6871,localhost:6873'; 

连接到镜像服务器上的数据库的连接字符串:

'UID=DBA;PWD=sql;SERVER=mirror_demo_mirror;HOST=localhost:6871,localhost:6873';