设置服务器,使其可同时作为仲裁服务器和复制节点运行。本教程介绍如何设置同时参与只读向外扩展的镜像系统。
前提条件
您必须具有 MANAGE ANY MIRROR SERVER 系统特权。
此任务涉及到备份数据库副本。请根据所选的备份方法参见适用于该方法的特权。
上下文和注释
虽然建议将镜像系统中的仲裁服务器和其它服务器分别运行于物理上相独立的计算机上,但这种做法并非始终可行。
在本教程中,所有数据库服务器都运行在同一台计算机上。但是在生产环境中,每个数据库服务器必须安装在单独的计算机上。
如果本教程用于运行在不同计算机上的数据库服务器,则连接字符串中 localhost 的引用必须改为实际计算机的名称。
创建以下目录:c:\server1、c:\server2 和 c:\arbiter。
创建名为 mirror_demo.db 的数据库,其中包含示例数据库中的数据并具有事务日志。无法在镜像模式下启动不具有事务日志的数据库。运行以下命令:
newdemo c:\server1\mirror_demo.db |
启动第一个数据库服务器。运行以下命令:
dbsrv16 -n mirror_server1 -x "tcpip(PORT=6871)" -su sql "c:\server1\mirror_demo.db" -xp on |
连接到 mirror_demo 数据库。例如,可运行以下命令:
dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_server1" |
创建镜像服务器定义。例如,可执行以下 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'; |
使用 CREATE MIRROR SERVER 语句创建仲裁服务器定义。仲裁服务器的 mirror-server-name 不得与连接字符串中指定的服务器名相同。
CREATE MIRROR SERVER demo_arbiter AS ARBITER connection_string='SERVER=demo_server3;HOST=localhost:6870'; |
为镜像系统设置镜像选项。您必须指定验证字符串,并将 auto_add_server 选项设置为主服务器的名称。执行以下语句:
SET MIRROR OPTION auto_add_server='mirror_demo_primary'; SET MIRROR OPTION authentication_string='abc'; |
在仲裁服务器定义中,arbiter-server-name 不得与该仲裁服务器的实际服务器名相同。仲裁服务器的客户端连接字符串必须包括带实际服务器名的 ServerName [SERVER] 连接参数。
创建镜像服务器。
为 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 |
启动镜像服务器:
dbsrv16 -n mirror_server2 -x "tcpip(port=6872)" server2\mirror_demo.db -su sql -xp on |
通过指定 -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 |
使用 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. |
使用以下查询显示此 HA 系统中正在被镜像的节点:
dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_server1" "SELECT server_name,state FROM sa_mirror_server_status()" |
通过检查 SYSMIRRORSERVER 表的内容来验证 demo_server3 是否为复制节点,以及仲裁服务器是否连接:
dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_demo_primary" "SELECT server_name, server_type FROM SYSMIRRORSERVER" |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |