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:\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
    • -n   对数据库服务器命名。

    • -su   指定实用程序数据库的口令。建议您加入 -su 选项以指定实用程序数据库的口令,这样您就可以在需要时连接到实用程序数据库以关闭数据库服务器。请参见停止镜像系统中的数据库服务器疑难解答:主服务器无法重新启动

    • -x   指定数据库服务器运行时使用的端口。

    • -xp on   指明数据库服务器可用于参与数据库镜像系统。

  4. 从 Interactive SQL 连接到数据库。运行以下命令:

    dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_server1"
  5. 使用 CREATE MIRROR SERVER 语句定义数据库的伙伴服务器和仲裁服务器。

    执行以下语句将 mirror_server1 和 mirror_server2 定义为数据库镜像系统中的伙伴服务器:

    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';

    执行以下语句以将

    • mirror_demo_primary 定义为 mirror_server1 的替代服务器名称。mirror_demo_primary 是客户端连接到用作主服务器的数据库服务器时所使用的名称。

    • mirror_demo_mirror 定义为 mirror_server2 的替代服务器名称。mirror_demo_mirror 是客户端连接到用作镜像服务器的数据库服务器时所使用的名称。

    在系统中配置数据库服务器需要主服务器和镜像服务器角色:当客户端连接至数据库服务器时,您为这些服务器提供的名称用作替代服务器名。任一伙伴服务器均可担当主服务器或镜像服务器。

    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_mirror;HOST=localhost:6871,localhost:6872';

    执行以下 SQL 语句以定义数据库镜像系统的仲裁服务器:

    CREATE MIRROR SERVER demo_arbiter
    AS ARBITER
    connection_string ='SERVER=demo_arbiter;HOST=localhost:6870';
  6. 设置数据库的验证字符串。执行以下语句:

    SET MIRROR OPTION authentication_string='abc';
  7. 使用备份实用程序 (dbbackup) 将 c:\server1 中的数据库文件和事务日志复制到 c:\server2。运行以下命令:

    dbbackup -c "UID=DBA;PWD=sql;SERVER=mirror_server1;DBN=mirror_demo" c:\server2
  8. 启动第二个伙伴服务器。运行以下命令:

    dbsrv16 -n mirror_server2 -x "tcpip(PORT=6872;DOBROAD=no)" -su sql "c:\server2\mirror_demo.db" -xp on
  9. 启动仲裁服务器。运行以下命令:

    dbsrv16 -n demo_arbiter -su sql -x "tcpip(PORT=6870;DOBROAD=no)" -xf "c:\arbiter\arbiter.state" -xa "AUTH=abc;DBN=mirror_demo"
    • -xf   指定 arbiter 的状态信息文件的位置。

    • -xa   指定正在镜像的数据库的名称,并为仲裁服务器指定验证字符串(本例中为 abc)。必须将此验证字符串用于数据库镜像系统中的所有服务器(仲裁服务器、主服务器和镜像服务器)。

  10. 使用主服务器的替代服务器名称启动 Interactive SQL 并连接到主服务器。运行以下命令:

    dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_demo_primary;HOST=localhost:6871,localhost:6872"
  11. 向数据库添加数据。执行以下语句:

    CREATE TABLE test (col1 INTEGER, col2 CHAR(32));
    INSERT INTO test VALUES(1, 'Hello from server1');
    COMMIT;
  12. (可选)要确定所连接数据库服务器的名称,需使用 ServerName 数据库服务器属性。执行以下语句:

    SELECT PROPERTY( 'ServerName' );
  13. 关闭所有 Interactive SQL 窗口。

结果

数据库镜像系统正在运行。

 另请参见