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

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - Datenbankadministration » Pflege Ihrer Datenbank » SQL Anywhere High Availability-Option ( für hohe Verfügbarkeit)

 

Praktische Einführung: Datenbankspiegelung bei mehreren Datenbanken mit gemeinsam genutzten Arbiterserver durchführen

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.

Diagramm des Spiegelsystems.

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.

♦  So richten Sie ein Spiegelsystem mit drei Datenbanken und einem Arbiterserver ein
  1. Erstellen Sie folgende Verzeichnisse:

    • c:\server1
    • c:\server2
    • c:\arbiter
  2. Führen Sie folgende Befehle vom c:\server1-Verzeichnis aus:

    dbinit one.db
    dbinit two.db
    dbinit three.db
  3. 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"
  4. Kopieren Sie die Datenbanken vom c:\server1-Verzeichnis in das c:\server2-Verzeichnis.

  5. 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
  6. 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"
  7. 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.

  8. 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"
  9. 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;
  10. 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.

  11. Trennen Sie die Verbindung zu Interactive SQL.

  12. 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 Arbiter-Meldungsfenster des Datenbankservers, das anzeigt, dass die Verbindung zu server1 getrennt ist.

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

    server2-Meldungsfenster des Datenbankservers
  13. Starten Sie Interactive SQL erneut, indem Sie den folgenden Befehl ausführen:

    dbisql -c "UID=DBA;PWD=sql;ENG=mirrortutorial_one;LINKS=tcpip"
  14. Führen Sie die folgende Anweisung aus, um festzustellen, dass Sie nun mit dem Spiegelserver verbunden sind:

    SELECT PROPERTY ( 'ServerName' );
  15. Führen Sie die folgende Anweisung aus, um sicherzugehen, dass alle Transaktionen in der Spiegeldatenbank gespiegelt wurden:

    SELECT * FROM test;
  16. 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".