In dieser Konfiguration hosten die Primär- und Spiegelserver jeweils drei einzelne Datenbanken, die an einem Spiegelsystem teilnehmen. Alle drei Spiegelsysteme kommunizieren mit demselben Arbiterserver. Jedes Spiegelsystem verwendet einen eindeutigen alternativen Servernamen, der mit der Option -sn angegeben ist. Bei dieser Art von Konfiguration können die Primär-, Spiegel- und Arbiterserver jeweils auf separaten Computern laufen.
Wenn der Primärserver ausfällt, findet ein Rollenwechsel statt und der Spiegelserver wird Eigentümer der Datenbanken. Der Spiegelserver wird zum Primärserver. Der Client muss wieder eine Verbindung zum Primärserver herstellen. Es muss nur der alternative Servername angegeben werden, um die Verbindung zum Primärserver wieder herzustellen. Die Konfiguration bietet auch Schutz vor dem Ausfall einer einzelnen Datenbank. Wenn eine Datenbank. die auf dem Primärserver läuft, ausfällt, findet ein Rollenwechsel statt und der Spiegelserver wird Eigentümer der ausgefallenen Datenbank. Der Spiegelserver wird nur für diese Datenbank zum Primärserver. Der Client muss eine Verbindung zum Primärserver für diese Datenbank unter Verwendung des alternativen Servernamens wieder herstellen.
Erstellen Sie folgende Verzeichnisse:
Führen Sie folgende Befehle vom c:\server1-Verzeichnis aus:
dbinit one.db |
dbinit two.db |
dbinit three.db |
Erstellen Sie ein Transaktionslog für jede Datenbank, indem Sie die folgenden Befehle ausführen:
dbping -d -c "UID=DBA;PWD=sql;DBF=c:\server1\one.db" |
dbping -d -c "UID=DBA;PWD=sql;DBF=c:\server1\two.db" |
dbping -d -c "UID=DBA;PWD=sql;DBF=c:\server1\three.db" |
Kopieren Sie die Datenbanken vom c:\server1-Verzeichnis in das c:\server2-Verzeichnis.
Starten Sie den Arbiterserver:
dbsrv11 -x tcpip(port=2640) -n arbiter -xa "AUTH=abc,def,ghi;DBN=one,two,three" -xf c:\arbiter\arbiterstate.txt -su sql |
Starten Sie die Datenbanken auf server1:
dbsrv11 -n server1 -x tcpip(PORT=2638) -xf c:\server1\server1state.txt -su sql c:\server1\one.db -sn mirrortutorial_one -xp "partner=(ENG=server2;LINKS=tcpip(PORT=2639;TIMEOUT=1)); auth=abc;arbiter=(ENG=arbiter;LINKS=tcpip(PORT=2640;TIMEOUT=1)); mode=sync" c:\server1\two.db -sn mirrortutorial_two -xp "partner=(ENG=server2;LINKS=tcpip(PORT=2639;TIMEOUT=1)); auth=def;arbiter=(ENG=arbiter;LINKS=tcpip(PORT=2640;TIMEOUT=1)); mode=sync" c:\server1\three.db -sn mirrortutorial_three -xp "partner=(ENG=server2;LINKS=tcpip(PORT=2639;TIMEOUT=1)); auth=ghi;arbiter=(ENG=arbiter;LINKS=tcpip(PORT=2640;TIMEOUT=1)); mode=sync" |
Starten Sie die Datenbanken auf server2:
dbsrv11 -n server2 -x tcpip(PORT=2639) -xf c:\server2\server2state.txt -su sql c:\server2\one.db -sn mirrortutorial_one -xp "partner=(ENG=server1;LINKS=tcpip(PORT=2638;TIMEOUT=1)); auth=abc;arbiter=(ENG=arbiter;LINKS=tcpip(PORT=2640;TIMEOUT=1)); mode=sync" c:\server2\two.db -sn mirrortutorial_two -xp "partner=(ENG=server1;LINKS=tcpip(PORT=2638;TIMEOUT=1)); auth=def;arbiter=(ENG=arbiter;LINKS=tcpip(PORT=2640;TIMEOUT=1)); mode=sync" c:\server2\three.db -sn mirrortutorial_three -xp "partner=(ENG=server1;LINKS=tcpip(PORT=2638;TIMEOUT=1)); auth=ghi;arbiter=(ENG=arbiter;LINKS=tcpip(PORT=2640;TIMEOUT=1)); mode=sync" |
Nach dem Start von server2 zeigt das server1-Meldungsfenster des Datenbankservers an, dass server1 der Primärserver im Spiegelsystem für die Datenbanken eins, zwei und drei ist. Die Meldungen geben darüber hinaus an, dass die Spiegeldatenbanken eins, zwei und drei (Partner) mit server1 verbunden sind.
Die Meldungen des Arbiter zeigen an, dass server1 und server2 verbunden sind.
Führen Sie den folgenden Befehl aus, um Interactive SQL zu starten und eine Verbindung zur Datenbank eins auf dem Primärserver herzustellen:
dbisql -c "UID=DBA;PWD=sql;ENG=mirrortutorial_one;LINKS=TCPIP" |
Fügen Sie der SQL Anywhere-Beispieldatenbank Beispieldaten hinzu, indem Sie die folgenden Anweisungen ausführen:
CREATE TABLE test (col1 INTEGER, col2 CHAR(32)); INSERT INTO test VALUES(1, 'Hello from server1'); COMMIT; |
Bestimmen Sie, mit welchem Datenbankserver Sie verbunden sind, indem Sie die folgende Anweisung ausführen:
SELECT PROPERTY( 'ServerName' ); |
Der Name des Primärservers wird angezeigt.
Trennen Sie die Verbindung zu Interactive SQL.
Initiieren Sie einen Failover. Sie erreichen dies, indem Sie den Primärserver stoppen, und zwar auf eine der folgenden Arten:
Klicken Sie im Datenbankserver-Meldungsfenster auf Herunterfahren.
Verwenden Sie den Windows Task-Manager, um die Anwendung zu beenden.
Geben Sie folgenden Befehl ein:
dbstop -y -c "UID=DBA;PWD=sql;ENG=server1" |
Wenn eine Warnmeldung angezeigt wird, dass der Datenbankserver weiterhin eine Verbindung hat, klicken Sie auf "Ja", um herunterzufahren.
Das Arbiter-Meldungsfenster des Datenbankservers zeigt eine Meldung an, die angibt, dass die Verbindung zum Primärserver getrennt wurde.
Das Meldungsfenster des Datenbankservers für server2 zeigt eine Meldung an, dass er der neue Primärserver ist.
Starten Sie Interactive SQL erneut, indem Sie den folgenden Befehl ausführen:
dbisql -c "UID=DBA;PWD=sql;ENG=mirrortutorial_one;LINKS=tcpip" |
Führen Sie die folgende Anweisung aus, um festzustellen, dass Sie nun mit dem Spiegelserver verbunden sind:
SELECT PROPERTY ( 'ServerName' ); |
Führen Sie die folgende Anweisung aus, um sicherzugehen, dass alle Transaktionen in der Spiegeldatenbank gespiegelt wurden:
SELECT * FROM test; |
Trennen Sie die Verbindung zu Interactive SQL und klicken Sie anschließend auf Herunterfahren im Meldungsfenster des Datenbankservers für die Datenbankserver "arbiter", "" und "server2".
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |