Richten Sie einen Server so ein, dass er sowohl als Arbiterserver als auch als Kopieknoten ausgeführt wird. In dieser praktischen Einführung wird beschrieben, wie Sie ein Spiegelungssystem einrichten, das auch in ein Scale-Out-System mit Schreibschutz eingebunden ist.
Voraussetzungen
Sie müssen das MANAGE ANY MIRROR SERVER-Systemprivileg haben.
Bei dieser Aufgabe muss eine Kopie der Datenbank gesichert werden. Weitere Hinweise finden Sie je nach Sicherungsmethode in den Beschreibungen der entsprechenden Privilegien.
Kontext und Bemerkungen
Zwar wird empfohlen, den Arbiterserver in einem Spiegelungssystem auf einem physisch von den anderen Servern getrennten Computer auszuführen, aber dies ist nicht immer möglich.
Bei dieser praktischen Einführung werden alle Datenbankserver auf demselben Computer ausgeführt. In einer Produktionsumgebung müssen die einzelnen Datenbankserver jedoch auf separaten Computern installiert werden.
Wenn Sie diese praktische Einführung auf Datenbankserver anwenden, die auf verschiedenen Computern ausgeführt werden, müssen Sie in den Verbindungszeichenfolgen die Verweise auf localhost in die tatsächlichen Computernamen ändern.
Erstellen Sie folgende Verzeichnisse: c:\server1, c:\server2 und c:\arbiter.
Erstellen Sie eine Datenbank namens mirror_demo.db, die Daten aus der Beispieldatenbank enthält und ein Transaktionslog hat. Datenbanken ohne Transaktionslog können nicht im Spiegelungsmodus gestartet werden. Führen Sie den folgenden Befehl aus:
newdemo c:\server1\mirror_demo.db |
Starten Sie den ersten Datenbankserver. Führen Sie den folgenden Befehl aus:
dbsrv16 -n mirror_server1 -x "tcpip(PORT=6871)" -su sql "c:\server1\mirror_demo.db" -xp on |
Verbinden Sie sich mit der mirror_demo-Datenbank. Führen Sie zum Beispiel folgenden Befehl aus:
dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_server1" |
Erstellen Sie die Spiegelserverdefinitionen. Führen Sie zum Beispiel folgende SQL-Anweisungen aus:
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'; |
Erstellen Sie die Arbiterserverdefinition mit der CREATE MIRROR SERVER-Anweisung. Der Spiegelservername für den Arbiterserver muss sich von dem in der Verbindungszeichenfolge angegebenen Servernamen unterscheiden.
CREATE MIRROR SERVER demo_arbiter AS ARBITER connection_string='SERVER=demo_server3;HOST=localhost:6870'; |
Setzen Sie die Spiegelungsoptionen für das Spiegelungssystem. Sie müssen eine Authentifizierungszeichenfolge angeben und die auto_add_server-Option auf den Namen des Primärservers setzen. Führen Sie die folgenden Anweisungen aus:
SET MIRROR OPTION auto_add_server='mirror_demo_primary'; SET MIRROR OPTION authentication_string='abc'; |
In der Arbiterserverdefinition muss sich der Arbiterservername vom tatsächlichen Servernamen für den Arbiter unterscheiden. Die Client-Verbindungszeichenfolge für den Arbiter muss den ServerName-Verbindungsparameter [SERVER] mit dem tatsächlichen Servernamen enthalten.
Erstellen Sie den Spiegelserver.
Erstellen Sie Kopien der Datenbankdatei und des Transaktionslogs in c:\server1 und fügen Sie sie in c:\server2 und c:\arbiter hinzu. Führen Sie den folgenden Befehl aus:
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 |
Starten Sie den Spiegelserver:
dbsrv16 -n mirror_server2 -x "tcpip(port=6872)" server2\mirror_demo.db -su sql -xp on |
Starten Sie den Arbiterserver als Kopieknoten und als Arbiter, indem Sie die Serveroptionen -xa, -xp und -xf angeben.
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 |
Verwenden Sie das Dienstprogramm dbping, um zu ermitteln, wann die Hochverfügbarkeitskonfiguration bereit ist:
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. |
Verwenden Sie die folgende Abfrage, um die in diesem System mit Hochverfügbarkeit gespiegelten Knoten anzuzeigen:
dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_server1" "SELECT server_name,state FROM sa_mirror_server_status()" |
Vergewissern Sie sich, dass demo_server3 ein COPY-Knoten ist und dass der Arbiter verbunden ist, indem Sie den Inhalt der SYSMIRRORSERVER-Tabelle überprüfen:
dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_demo_primary" "SELECT server_name, server_type FROM SYSMIRRORSERVER" |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |