Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (Deutsch) » SQL Anywhere Server - Datenbankadministration » Pflege der Datenbank » SQL Anywhere-Hochverfügbarkeitsoptiopn

 

Praktische Einführung: Datenbankspiegelung verwenden

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.

 ♦  So simulieren Sie einen Failover in einem Datenbank-Spiegelungssystem
  1. Erstellen Sie folgende Verzeichnisse: c:\server1, c:\server2 und c:\arbiter.

  2. 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
  3. 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.

  4. Verbinden Sie sich mit der Datenbank mittels Interactive SQL:

    dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_server1"
  5. 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';
  6. 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';
  7. 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';
  8. Führen Sie folgende Anweisung aus, um die Authentifizierungszeichenfolge für die Datenbank zu setzen:

    SET MIRROR OPTION authentication_string='abc';
  9. Trennen Sie die Verbindung zu Interactive SQL.

  10. 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
  11. 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.

  12. 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.

  13. 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"
  14. 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;
  15. 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.

  16. 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 Arbiter-Fenster "Datenbankservermeldungen", das anzeigt, dass die Verbindung zu server1 getrennt ist.

    Das Meldungsfenster des Datenbankservers für mirror_server2 zeigt eine Meldung an, dass er der neue Primärserver ist.

    server2-Fenster "Datenbankservermeldungen"
  17. Schließen Sie Interactive SQL. Wenn Sie eine Fehlermeldung erhalten, klicken Sie auf OK.

  18. 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"
  19. 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' );
  20. Führen Sie die folgende Anweisung aus, um sicherzugehen, dass alle Transaktionen in der Spiegeldatenbank gespiegelt wurden:

    SELECT * FROM test;
  21. Trennen Sie die Verbindung zu Interactive SQL und klicken Sie anschließend auf Herunterfahren im Meldungsfenster für die Datenbankserver "arbiter", "" und "server2".

  22. (Optional) Löschen Sie die Verzeichnisse c:\server1, c:\server2 und c:\arbiter.