Diese praktische Einführung enthält Anweisungen für das Einrichten einer Datenbankspiegelung und dazu, wie auf einen Failover zu reagieren ist. Bei dieser praktischen Einführung werden alle Datenbankserver auf demselben Computer ausgeführt. In einer Produktionsumgebung werden die einzelnen Datenbankserver in der Regel jedoch auf separaten Computern installiert.
Wenn Sie diese praktische Einführung auf Datenbankserver anwenden, die auf verschiedenen Computern ausgeführt werden, müssen Sie in den Verbindungszeichenfolgen die Referenzen auf localhost in den tatsächlichen Computernamen ändern.
Erstellen Sie folgende Verzeichnisse: c:\server1, c:\server2 und c:\arbiter.
Führen Sie den folgenden Befehl aus, um eine Datenbank namens mirror_demo.db mit Daten aus der Beispieldatenbank zu erstellen:
newdemo c:\server1\mirror_demo.db |
Führen Sie den folgenden Befehl aus, um den ersten Datenbankserver zu starten:
dbsrv12 -n mirror_server1 -x tcpip(PORT=6871;DOBROAD=no) -su sql "c:\server1\mirror_demo.db" -xp on |
-n Benennt den Datenbankserver mirror_server1.
-x Gibt den Port an, auf dem der Datenbankserver läuft
-su Gibt das Kennwort für die Dienstprogrammdatenbank an
-xp on Gibt an, dass der Datenbankserver für die Beteiligung an einem Datenbankspiegelungssystem zur Verfügung steht.
Verbinden Sie sich mit der Datenbank mittels Interactive SQL:
dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_server1" |
Führen Sie die folgenden Anweisungen aus, um den Primärserver und den Spiegelserver zu definieren:
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'; |
Führen Sie die folgenden Anweisungen aus, um mirror_server1 und mirror_server2 als Partner im Spiegelungssystem zu definieren:
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'; |
Führen Sie die folgende Anweisung aus, um den Arbiterserver zu definieren:
CREATE MIRROR SERVER demo_arbiter AS ARBITER connection_string ='SERVER=demo_arbiter;HOST=localhost:6870'; |
Führen Sie folgende Anweisung aus, um die Authentifizierungszeichenfolge für die Datenbank zu setzen:
SET MIRROR OPTION authentication_string='abc'; |
Trennen Sie die Verbindung zu Interactive SQL.
Erstellen Sie Kopien der Datenbankdatei und des Transaktionslogs in c:\server1 und fügen Sie sie c:\server2 mithilfe des folgenden Befehls hinzu:
dbbackup -c "UID=DBA;PWD=sql;SERVER=mirror_server1;DBN=mirror_demo" c:\server2 |
Führen Sie den folgenden Befehl aus, um den zweiten Datenbankserver zu starten:
dbsrv12 -n mirror_server2 -x tcpip(PORT=6872;DOBROAD=no) -su sql "c:\server2\mirror_demo.db" -xp on |
Diese Befehlszeileneingabe legt die folgenden dbsrv12-Optionen fest:
-n Benennt den Datenbankserver mirror_server2.
-x Gibt den Port an, auf dem der Datenbankserver läuft
-su Gibt das Kennwort für die Dienstprogrammdatenbank an
-xp on Gibt an, dass der Datenbankserver für die Beteiligung an einem Datenbankspiegelungssystem zur Verfügung steht.
Führen Sie den folgenden Befehl aus, um den Arbiterdatenbankserver zu starten:
dbsrv12 -n demo_arbiter -su sql -x "TCPIP(PORT=6870;DOBROAD=no)" -xf "c:\arbiter\arbiter.state" -xa "AUTH=abc;DBN=mirror_demo" |
-n Benennt den Datenbankserver demo_arbiter.
-su Gibt das Kennwort für die Dienstprogrammdatenbank an
-x Weist den Datenbankserver an, auf Port 6870 über TCP/IP zu kommunizieren. Die anderen Server verwenden ebenfalls TCP/IP, kommunizieren aber über andere Ports.
-xf Gibt den Speicherort der Statusinformationsdatei für den Arbiterserver an
-xa Gibt den Namen der gespiegelten Datenbank(en) und die Authentifizierungszeichenfolge (in diesem Fall abc) für den Arbiterserver an. Diese Authentifizierungszeichenfolge muss in einem Datenbank-Spiegelungssystem von allen Servern (Arbiter-, Primär- und Spiegelserver) verwendet werden.
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;SERVER=mirror_demo_primary;HOST=localhost:6871,localhost:6872" |
Fügen Sie der Datenbank Daten 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 Meldungsfenster des Datenbankservers 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;SERVER=mirror_demo_primary" |
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 mirror_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;SERVER=mirror_demo_primary;HOST=localhost:6871,localhost:6872" |
Führen Sie die folgende Anweisung aus, um zu sehen, ob Sie nun mit dem Server verbunden sind, der bereits zuvor als Spiegelserver agierte:
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 für die Datenbankserver "arbiter", "" und "server2".
(Optional) Löschen Sie die Verzeichnisse c:\server1, c:\server2 und c:\arbiter.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |