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 服务器 - 数据库管理 » 高可用性和只读向外扩展系统 » 数据库镜像 » 教程:创建多个数据库共享一个仲裁服务器的数据库镜像系统

 

第 1 课:创建包含三个数据库和一个仲裁服务器的数据库镜像系统

创建包含三个镜像数据库的数据库镜像系统,这三个镜像数据库均使用同一个仲裁服务器。

前提条件

本课假定您开始下面教程时拥有权限部分中列出的角色和特权: 教程:创建多个数据库共享一个仲裁服务器的数据库镜像系统

 任务
  1. 创建以下目录:

    • c:\server1
    • c:\server2
    • c:\arbiter
  2. 使用 newdemo.bat 创建 SQL Anywhere 16 示例数据库 (demo.db) 的副本。运行以下命令:

    newdemo.bat c:\server1\one.db
  3. 运行以下命令:

    newdemo.bat c:\server1\two.db
  4. c:\server1 目录运行以下命令:

    newdemo.bat c:\server1\three.db
  5. 启动名为 server1 的数据库服务器:

    dbsrv16 -n server1 -x tcpip(PORT=6871) -su sql c:\server1\one.db -xp on c:\server1\two.db -xp on c:\server1\three.db -xp on

    建议您加入 -su 选项以指定实用程序数据库的口令,这样您就可以在需要时连接到实用程序数据库以关闭数据库服务器。请参见停止镜像系统中的数据库服务器

  6. 从 Interactive SQL 连接到数据库一,并定义所需的镜像对象:

    dbisql -c "UID=DBA;PWD=sql;SERVER=server1;DBN=one"
    1. 将 server1 定义为数据库一的伙伴服务器:

      CREATE MIRROR SERVER server1
      AS PARTNER
      connection_string='SERVER=server1;host=localhost:6871'
      state_file='c:\\server1\\server1state.txt';
    2. 将数据库服务器 primary_one 定义为数据库一的逻辑主服务器:

      CREATE MIRROR SERVER primary_one
      AS PRIMARY
      connection_string='SERVER=primary_one;host=localhost:6871,localhost:6872';
    3. 将 server2 定义为数据库一的伙伴服务器:

      CREATE MIRROR SERVER server2
      AS PARTNER
      connection_string='SERVER=server2;host=localhost:6872'
      state_file='c:\\server2\\server2state.txt';
    4. 将数据库服务器 mirror_one 定义为数据库一的逻辑镜像服务器:

      CREATE MIRROR SERVER mirror_one
      AS MIRROR
      connection_string='SERVER=mirror_one;host=localhost:6871,localhost:6872';
    5. 定义仲裁服务器:

      CREATE MIRROR SERVER arbiter
      AS ARBITER
      connection_string='SERVER=arbiter;HOST=localhost:6870';
    6. 为数据库镜像系统设置镜像选项:

      SET MIRROR OPTION authentication_string='abc';
    7. 与 Interactive SQL 断开连接。

    8. c:\server2 目录中的数据库制作备份副本:

      dbbackup -c "UID=DBA;PWD=sql;SERVER=server1;DBN=one" c:\server2
  7. 从 Interactive SQL 连接到数据库二,并定义所需的镜像对象:

    dbisql -c "UID=DBA;PWD=sql;SERVER=server1;DBN=two"
    1. 将 server1 定义为数据库二的伙伴服务器:

      CREATE MIRROR SERVER server1
      AS PARTNER
      connection_string='SERVER=server1;host=localhost:6871'
      state_file='c:\\server1\\server1state.txt';
    2. 将数据库服务器 primary_two 定义为数据库二的逻辑主服务器:

      CREATE MIRROR SERVER primary_two
      AS PRIMARY
      connection_string='SERVER=primary_two;host=localhost:6871,localhost:6872';
    3. 将 server2 定义为数据库二的伙伴服务器:

      CREATE MIRROR SERVER server2
      AS PARTNER
      connection_string='SERVER=server2;host=localhost:6872'
      state_file='c:\\server2\\server2state.txt';
    4. 将数据库服务器 mirror_two 定义为数据库二的逻辑镜像服务器:

      CREATE MIRROR SERVER mirror_two
      AS MIRROR
      connection_string='SERVER=mirror_two;host=localhost:6871,localhost:6872';
    5. 定义仲裁服务器:

      CREATE MIRROR SERVER arbiter
      AS ARBITER
      connection_string='SERVER=arbiter;HOST=localhost:6870';
    6. 为数据库镜像系统设置镜像选项:

      SET MIRROR OPTION authentication_string='def';
    7. 与 Interactive SQL 断开连接。

    8. c:\server2 目录中的数据库制作备份副本:

      dbbackup -c "UID=DBA;PWD=sql;SERVER=server1;DBN=two" c:\server2
  8. 从 Interactive SQL 连接到数据库三,并定义所需的镜像对象:

    dbisql -c "UID=DBA;PWD=sql;SERVER=server1;DBN=three"
    1. 将 server1 定义为数据库三的伙伴服务器:

      CREATE MIRROR SERVER server1
      AS PARTNER
      connection_string='SERVER=server1;host=localhost:6871'
      state_file='c:\\server1\\server1state.txt';
    2. 将数据库服务器 primary_three 定义为数据库三的逻辑主服务器:

      CREATE MIRROR SERVER primary_three
      AS PRIMARY
      connection_string='SERVER=primary_three;host=localhost:6871,localhost:6872';
    3. 将 server2 定义为数据库三的伙伴服务器:

      CREATE MIRROR SERVER server2
      AS PARTNER
      connection_string='SERVER=server2;host=localhost:6872'
      state_file='c:\\server2\\server2state.txt';
    4. 将数据库服务器 mirror_three 定义为数据库三的逻辑镜像服务器:

      CREATE MIRROR SERVER mirror_three
      AS MIRROR
      connection_string='SERVER=mirror_three;host=localhost:6871,localhost:6872';
    5. 定义仲裁服务器:

      CREATE MIRROR SERVER arbiter
      AS ARBITER
      connection_string='SERVER=arbiter;HOST=localhost:6870';
    6. 为数据库镜像系统设置镜像选项:

      SET MIRROR OPTION authentication_string='ghi';
    7. 与 Interactive SQL 断开连接。

    8. c:\server2 目录中的数据库制作备份副本:

      dbbackup -c "UID=DBA;PWD=sql;SERVER=server1;DBN=three" c:\server2
  9. 启动名为 server2 的数据库服务器:

    dbsrv16 -n server2 -x tcpip(PORT=6872) -su sql c:\server2\one.db -xp on c:\server2\two.db -xp on c:\server2\three.db -xp on
  10. 启动仲裁服务器。

    dbsrv16 -n arbiter -su sql -x tcpip(port=6870) -xf c:\arbiter\arbiterstate.txt -xa "AUTH=abc,def,ghi;DBN=one,two,three"

结果

启动 server2 后,server1 数据库服务器消息窗口显示 server1 是数据库一、二和三的镜像系统的主服务器。此消息窗口还指出一、二和三(合作伙伴)的镜像数据库连接到 server1。

仲裁数据库服务器消息窗口显示 server1 和 server2 均已连接。