Diese praktische Einführung zeigt Ihnen, wie Sie ein Datenbank-Spiegelungssystem einrichten und was bei Failover geschieht. Bei dieser praktischen Einführung werden alle Datenbankserver auf demselben Computer ausgeführt. In einem echten Spiegelungssystem allerdings würden Sie die Datenbankserver wahrscheinlich auf separaten Computern ausführen.
Erstellen Sie folgende Verzeichnisse: c:\server1, c:\server2 und c:\arbiter.
Erstellen Sie eine Kopie der Beispieldatenbank im Verzeichnis Beispielverzeichnis\demo.db und fügen Sie sie c:\server1 hinzu.
Hinweise zum Beispielverzeichnis finden Sie unter Beispielverzeichnis.
Erstellen Sie ein Transaktionslog für die Datenbank in c:\server1, indem Sie den folgenden Befehl ausführen:
dbping -d -c "UID=DBA;PWD=sql;DBF=c:\server1\demo.db" |
Erstellen Sie Kopien der Datenbankdatei und des Transaktionslogs in c:\server1 und fügen Sie sie c:\server2 hinzu.
Führen Sie den folgenden Befehl aus, um den Arbiterserver zu starten:
dbsrv11 -x tcpip(PORT=2639) -su sql -n arbiter -xa "auth=abc;DBN=demo" -xf c:\arbiter\arbiterstate.txt |
Diese Befehlszeileneingabe legt folgende dbsrv11-Optionen fest:
-x Teilt dem Datenbankserver mit, TCP/IP-Kommunikation über Port 2639 zu verwenden. Die anderen Server verwenden ebenfalls TCP/IP, aber kommunizieren über andere Ports.
-su Gibt das Kennwort für die Dienstprogrammdatenbank an
-n Benennt den Arbiterserver
-xa Gibt den Namen der gespiegelten Datenbank(en) und die Authentifizierungs-Zeichenfolge (in diesem Fall abc) für den Arbiterserver an. Diese Authentifizierungs-Zeichenfolge muss in einem Datenbank-Spiegelungssystem von allen Servern (Arbiter-, Primär- und Spiegelserver) verwendet werden.
-xf Gibt den Speicherort der Statusinformationsdatei für den Arbiterserver an
Führen Sie den folgenden (in einer Zeile eingegebenen) Befehl aus, um server1 zu starten.
dbsrv11 -n server1 -x tcpip(PORT=2638) -xf c:\server1\server1state.txt -su sql c:\server1\demo.db -sn mirrordemo -xp "partner=(ENG=server2;LINKS=tcpip(PORT=2637;TIMEOUT=1));auth=abc; arbiter=(ENG=arbiter;LINKS=tcpip(PORT=2639;TIMEOUT=1));mode=sync" |
Diese Befehlszeileneingabe legt folgende dbsrv11-Optionen fest:
-n Benennt den Datenbankserver server1
-x Gibt den Port an, auf dem der Datenbankserver läuft
-xf Gibt den Speicherort der Statusinformationsdatei für server1 an
-su Gibt das Kennwort für die Dienstprogrammdatenbank an
-sn Gibt den alternativen Namen für den Datenbankserver an. Primär- und Spiegelserver müssen beide denselben Namen haben, damit sich Clients verbinden können, ohne vorher zu wissen, welcher Server der Primär- und welcher der Spiegelserver ist.
-xp Liefert Informationen an den Server, der gestartet wird, damit er sich mit seinem Partner und dem Arbiterserver verbinden kann.
Führen Sie den folgenden (in einer Zeile eingegebenen) Befehl aus, um server2 zu starten.
dbsrv11 -n server2 -x tcpip(PORT=2637) -xf c:\server2\server2state.txt -su sql c:\server2\demo.db -sn mirrordemo -xp "partner=(ENG=server1;LINKS=tcpip(PORT=2638;TIMEOUT=1));auth=abc; arbiter=(ENG=arbiter;LINKS=tcpip(PORT=2639;TIMEOUT=1));mode=sync" |
Diese Befehlszeileneingabe legt folgende dbsrv11-Optionen fest:
-n Benennt den Datenbankserver server2
-x Gibt den Port an, auf dem der Datenbankserver läuft
-xf Gibt den Speicherort der Statusinformationsdatei für server2 an
-su Gibt das Kennwort für die Dienstprogrammdatenbank an
-sn Gibt den alternativen Namen für den Datenbankserver an. Primär- und Spiegelserver müssen beide denselben Namen haben, damit sich Clients verbinden können, ohne vorher zu wissen, welcher Server der Primär- und welcher der Spiegelserver ist.
-xp Liefert Informationen an den Server, der gestartet wird, damit er sich mit seinem Partner und dem Arbiterserver verbinden kann.
Starten Sie Interactive SQL und verbinden Sie sich mit dem Primärserver, indem Sie den folgenden Befehl ausführen:
dbisql -c "UID=DBA;PWD=sql;ENG=mirrordemo;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.
Initiieren Sie einen Failover. Sie erreichen dies, indem Sie den Primärserver stoppen, der im vorherigen Schritt identifiziert wurde, und zwar auf folgende 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=mirrordemo" |
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.
Schließen Sie Interactive SQL. Wenn Sie eine Fehlermeldung erhalten, klicken Sie auf OK.
Starten Sie Interactive SQL erneut, indem Sie den folgenden Befehl ausführen:
dbisql -c "UID=DBA;PWD=sql;ENG=mirrordemo;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 |