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 服务器 - 数据库管理 » 高可用性和只读向外扩展系统 » SQL Anywhere 只读向外扩展

 

教程:使用一个服务器同时作为复制节点和仲裁服务器

设置服务器,使其可同时作为仲裁服务器和复制节点运行。本教程介绍如何设置同时参与只读向外扩展的镜像系统。

前提条件

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

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

上下文和注释

虽然建议将镜像系统中的仲裁服务器和其它服务器分别运行于物理上相独立的计算机上,但这种做法并非始终可行。

在本教程中,所有数据库服务器都运行在同一台计算机上。但是在生产环境中,每个数据库服务器必须安装在单独的计算机上。

如果本教程用于运行在不同计算机上的数据库服务器,则连接字符串中 localhost 的引用必须改为实际计算机的名称。

 任务
  1. 创建以下目录:c:\server1c:\server2c:\arbiter

  2. 创建名为 mirror_demo.db 的数据库,其中包含示例数据库中的数据并具有事务日志。无法在镜像模式下启动不具有事务日志的数据库。运行以下命令:

    newdemo c:\server1\mirror_demo.db
  3. 启动第一个数据库服务器。运行以下命令:

    dbsrv16 -n mirror_server1 -x "tcpip(PORT=6871)" -su sql "c:\server1\mirror_demo.db" -xp on
  4. 连接到 mirror_demo 数据库。例如,可运行以下命令:

    dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_server1" 
  5. 创建镜像服务器定义。例如,可执行以下 SQL 语句:

    CREATE MIRROR SERVER mirror_demo_primary AS PRIMARY connection_string='SERVER=mirror_demo_primary;HOST=localhost:6871,localhost:6872';
    
    CREATE MIRROR SERVER mirror_demo_mirror AS MIRROR connection_string='SERVER=mirror_demo_primary;HOST=localhost:6871,localhost:6872';
        
    CREATE MIRROR SERVER mirror_server1 AS PARTNER connection_string='SERVER=mirror_server1;HOST=localhost:6871' state_file='c:\server1\\server1.state';
       
    CREATE MIRROR SERVER mirror_server2 AS PARTNER connection_string='SERVER=mirror_server2;HOST=localhost:6872' state_file='c:\server2\\server2.state';
  6. 使用 CREATE MIRROR SERVER 语句创建仲裁服务器定义。仲裁服务器的 mirror-server-name 不得与连接字符串中指定的服务器名相同。

    CREATE MIRROR SERVER demo_arbiter AS ARBITER
     connection_string='SERVER=demo_server3;HOST=localhost:6870';
  7. 为镜像系统设置镜像选项。您必须指定验证字符串,并将 auto_add_server 选项设置为主服务器的名称。执行以下语句:

    SET MIRROR OPTION auto_add_server='mirror_demo_primary'; 
    SET MIRROR OPTION authentication_string='abc';

    在仲裁服务器定义中,arbiter-server-name 不得与该仲裁服务器的实际服务器名相同。仲裁服务器的客户端连接字符串必须包括带实际服务器名的 ServerName [SERVER] 连接参数。

  8. 创建镜像服务器。

    1. 为 c:\server1 中的数据库文件和事务日志制作副本,然后将这些副本添加到 c:\server2 和 c:\arbiter。运行以下命令:

      dbbackup -c "UID=DBA;PWD=sql;SERVER=mirror_server1;DBN=mirror_demo" server2
      dbbackup -c "UID=DBA;PWD=sql;SERVER=mirror_server1;DBN=mirror_demo" arbiter
    2. 启动镜像服务器:

      dbsrv16 -n mirror_server2 -x "tcpip(port=6872)" server2\mirror_demo.db -su sql -xp on
  9. 通过指定 -xa、-xp 和 -xf 服务器选项,将仲裁服务器作为复制节点和仲裁服务器本身启动

    dbsrv16 -n demo_server3 -x "tcpip(port=6870)" arbiter\mirror_demo.db -xp on -xf arbiter\arbiter.state -xa "AUTH=abc;DBN=mirror_demo" -su sql
  10. 使用 dbping 实用程序确定 HA 配置何时准备就绪:

     dbping -c "UID=DBA;PWD=sql;SERVER=mirror_demo_primary"  -pd Mirrorstate,PartnerState,ArbiterState
     SQL Anywhere Server Ping Utility Version 16.0.4157 
    Type       Property                  Value 
    ---------  ----------------          ------------------------------ 
    Database   MirrorState               synchronized 
    Database   PartnerState              connected 
    Database   ArbiterState              connected 
    Ping database successful.   
  11. 使用以下查询显示此 HA 系统中正在被镜像的节点:

    dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_server1" "SELECT server_name,state FROM sa_mirror_server_status()"
  12. 通过检查 SYSMIRRORSERVER 表的内容来验证 demo_server3 是否为复制节点,以及仲裁服务器是否连接:

    dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_demo_primary" "SELECT  server_name, server_type FROM SYSMIRRORSERVER" 

结果

运行仲裁服务器的服务器同时也运行复制节点。