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

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - Datenbankadministration » Hochverfügbarkeit und Scale-Out-Systeme mit Schreibschutz » SQL Anywhere-Scale-Out mit Schreibschutz

 

Praktische Einführung: Server sowohl als Kopieknoten als auch als Arbiter verwenden

Richten Sie einen Server so ein, dass er sowohl als Arbiterserver als auch als Kopieknoten ausgeführt wird. In dieser praktischen Einführung wird beschrieben, wie Sie ein Spiegelungssystem einrichten, das auch in ein Scale-Out-System mit Schreibschutz eingebunden ist.

Voraussetzungen

Sie müssen das MANAGE ANY MIRROR SERVER-Systemprivileg haben.

Bei dieser Aufgabe muss eine Kopie der Datenbank gesichert werden. Weitere Hinweise finden Sie je nach Sicherungsmethode in den Beschreibungen der entsprechenden Privilegien.

Kontext und Bemerkungen

Zwar wird empfohlen, den Arbiterserver in einem Spiegelungssystem auf einem physisch von den anderen Servern getrennten Computer auszuführen, aber dies ist nicht immer möglich.

Bei dieser praktischen Einführung werden alle Datenbankserver auf demselben Computer ausgeführt. In einer Produktionsumgebung müssen die einzelnen Datenbankserver jedoch auf separaten Computern installiert werden.

Wenn Sie diese praktische Einführung auf Datenbankserver anwenden, die auf verschiedenen Computern ausgeführt werden, müssen Sie in den Verbindungszeichenfolgen die Verweise auf localhost in die tatsächlichen Computernamen ändern.

 Aufgabe
  1. Erstellen Sie folgende Verzeichnisse: c:\server1, c:\server2 und c:\arbiter.

  2. Erstellen Sie eine Datenbank namens mirror_demo.db, die Daten aus der Beispieldatenbank enthält und ein Transaktionslog hat. Datenbanken ohne Transaktionslog können nicht im Spiegelungsmodus gestartet werden. Führen Sie den folgenden Befehl aus:

    newdemo c:\server1\mirror_demo.db
  3. Starten Sie den ersten Datenbankserver. Führen Sie den folgenden Befehl aus:

    dbsrv16 -n mirror_server1 -x "tcpip(PORT=6871)" -su sql "c:\server1\mirror_demo.db" -xp on
  4. Verbinden Sie sich mit der mirror_demo-Datenbank. Führen Sie zum Beispiel folgenden Befehl aus:

    dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_server1" 
  5. Erstellen Sie die Spiegelserverdefinitionen. Führen Sie zum Beispiel folgende SQL-Anweisungen aus:

    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_primary;HOST=localhost:6871,localhost:6872';
        
    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';
  6. Erstellen Sie die Arbiterserverdefinition mit der CREATE MIRROR SERVER-Anweisung. Der Spiegelservername für den Arbiterserver muss sich von dem in der Verbindungszeichenfolge angegebenen Servernamen unterscheiden.

    CREATE MIRROR SERVER demo_arbiter AS ARBITER
     connection_string='SERVER=demo_server3;HOST=localhost:6870';
  7. Setzen Sie die Spiegelungsoptionen für das Spiegelungssystem. Sie müssen eine Authentifizierungszeichenfolge angeben und die auto_add_server-Option auf den Namen des Primärservers setzen. Führen Sie die folgenden Anweisungen aus:

    SET MIRROR OPTION auto_add_server='mirror_demo_primary'; 
    SET MIRROR OPTION authentication_string='abc';

    In der Arbiterserverdefinition muss sich der Arbiterservername vom tatsächlichen Servernamen für den Arbiter unterscheiden. Die Client-Verbindungszeichenfolge für den Arbiter muss den ServerName-Verbindungsparameter [SERVER] mit dem tatsächlichen Servernamen enthalten.

  8. Erstellen Sie den Spiegelserver.

    1. Erstellen Sie Kopien der Datenbankdatei und des Transaktionslogs in c:\server1 und fügen Sie sie in c:\server2 und c:\arbiter hinzu. Führen Sie den folgenden Befehl aus:

      dbbackup -c "UID=DBA;PWD=sql;SERVER=mirror_server1;DBN=mirror_demo" server2
      dbbackup -c "UID=DBA;PWD=sql;SERVER=mirror_server1;DBN=mirror_demo" arbiter
    2. Starten Sie den Spiegelserver:

      dbsrv16 -n mirror_server2 -x "tcpip(port=6872)" server2\mirror_demo.db -su sql -xp on
  9. Starten Sie den Arbiterserver als Kopieknoten und als Arbiter, indem Sie die Serveroptionen -xa, -xp und -xf angeben.

    dbsrv16 -n demo_server3 -x "tcpip(port=6870)" arbiter\mirror_demo.db -xp on -xf arbiter\arbiter.state -xa "AUTH=abc;DBN=mirror_demo" -su sql
  10. Verwenden Sie das Dienstprogramm dbping, um zu ermitteln, wann die Hochverfügbarkeitskonfiguration bereit ist:

     dbping -c "UID=DBA;PWD=sql;SERVER=mirror_demo_primary"  -pd Mirrorstate,PartnerState,ArbiterState
     SQL Anywhere Server Ping Utility Version 16.0.4157 
    Type       Property                  Value 
    ---------  ----------------          ------------------------------ 
    Database   MirrorState               synchronized 
    Database   PartnerState              connected 
    Database   ArbiterState              connected 
    Ping database successful.   
  11. Verwenden Sie die folgende Abfrage, um die in diesem System mit Hochverfügbarkeit gespiegelten Knoten anzuzeigen:

    dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_server1" "SELECT server_name,state FROM sa_mirror_server_status()"
  12. Vergewissern Sie sich, dass demo_server3 ein COPY-Knoten ist und dass der Arbiter verbunden ist, indem Sie den Inhalt der SYSMIRRORSERVER-Tabelle überprüfen:

    dbisql -c "UID=DBA;PWD=sql;SERVER=mirror_demo_primary" "SELECT  server_name, server_type FROM SYSMIRRORSERVER" 

Ergebnisse

Der Server, der den Arbiter ausführt, führt auch einen Kopieknoten aus.