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 Remote » Praktische Einführung: Einrichten eines Replikationssystems unter Verwendung des HTTP-Nachrichtensystems

 

Lektion 2: Erstellen des Nachrichtenservers

Obwohl es möglich ist, die konsolidierte Datenbank als Nachrichtenserver einzusetzen, verwenden Sie in dieser praktischen Einführung einen separaten Datenbankserver als Host für den Nachrichtenserver. Dies trägt dazu bei, die durch die Verarbeitung von Nachrichten anfallende Last zwischen den beiden Datenbankservern zu verteilen, und erzeugt außerdem eine zusätzliche Sicherheitsstufe, weil Sie den HTTP-Zugriff auf Ihre konsolidierte Datenbank nicht freigegeben haben.

Voraussetzungen

Sie müssen die SYS_REPLICATION_ADMIN_ROLE-Systemrolle haben.

 Aufgabe
  1. Führen Sie im Verzeichnis c:\tutorial\msgsrv den folgenden Befehl aus, um die Nachrichtenserver-Datenbank (msgsrv) zu erstellen:

    dbinit -dba DBA,sql msgsrv.db
  2. Starten Sie den Nachrichtenserver:

    dbeng16 -n msgsrv c:\tutorial\msgsrv\msgsrv.db -xs http(port=8033)

    -xs http(8033) ist in der Befehlszeile erforderlich, da dieser Datenbankserver HTTP-Anforderungen aus der entfernten Datenbank akzeptiert und auf die Nachrichtendateien im Verzeichnis c:\tutorial\messages zugreift. Obwohl beim Starten des Datenbankservers keine Webdienste festgelegt wurden, werden sie in dieser Lektion erstellt. Außerdem wurde nur der Personal Datenbankserver gestartet, sodass nur SQL Remote Prozesse auf diesem Computer über HTTP mit dem Nachrichtenserver kommunizieren können. In einer Produktionsumgebung wird gewöhnlich der Netzwerkserver verwendet, sodass SQL Remote-Prozesse auf anderen Computern ebenfalls Zugriff auf die Webdienste haben. Weitere Hinweise zur Verwendung der Option -xs finden Sie unter Datenbankserveroption -xs .

  3. Beim Erstellen eines separaten Nachrichtenservers müssen Sie einen großen Teil des Schemas der konsolidierten Datenbank in den Nachrichtenserver kopieren, besonders Informationen über die festgelegten entfernten Benutzer und deren Adressen. Obwohl Sie diese Aufgabe manuell ausführen können, besteht die einfachste Methode darin, mit dem Dienstprogramm dbunload eine neue Datenbank zu erstellen, die dasselbe Schema besitzt wie die konsolidierte Datenbank:

    dbunload -n -xx -ac "SERVER=msgsrv;DBN=msgsrv;UID=DBA;PWD=sql" -c "SERVER=cons;DBN=cons;UID=DBA;PWD=sql"

    Die im dbunload-Befehl verwendeten Optionen bewirken Folgendes:

    • -n   Gibt an, dass nur das Schema entladen werden soll, und auf dem Nachrichtenserver werden keine Daten aus der konsolidierten Datenbank hinzugefügt.

    • -xx   Führt einen externen Entlade- und Aktualisierungsvorgang aus, der erforderlich ist, wenn beide beteiligten Datenbanken bereits laufen.

    • -ac "SERVER=msgsrv;DBN=msgsrv;UID=DBA;PWD=sql"   Legt die Zielverbindung für den Entladevorgang fest, in dieser Lektion den Nachrichtenserver.

    • -c "SERVER=cons;DBN=cons;UID=DBA;PWD=sql"   Legt die Quellverbindung für den Entladevorgang fest, in dieser Lektion die konsolidierte Datenbank.

  4. Verbinden Sie sich über Interactive SQL mit der Nachrichtenserverdatenbank (msgsrv) als Benutzer mit der entsprechenden SYS_REPLICATION_ADMIN_ROLE Systemrolle:

    dbisql -c "SERVER=msgsrv;DBN=msgsrv;UID=DBA;PWD=sql"

    In Lektion 1 haben Sie keine Kennwörter für den Publikationseigentümer (cons) und den entfernten Benutzer (rem) erstellt, sodass keiner dieser Benutzer eine Verbindung mit der konsolidierten Datenbank herstellen kann. Ein Kennwort für diese Benutzer ist im Nachrichtenserver erforderlich, da die von entfernten Benutzern kommenden HTTP-Anforderungen den Publikationseigentümer der entfernten Datenbank verwenden und das Kennwort, das Sie zum Authentifizieren beim Nachrichtenserver angeben. Führen Sie die folgenden Anweisungen in der Nachrichtenserver-Datenbank (msgsrv) aus, um Kennwörter für den Publikationseigentümer und den entfernten Benutzer festzulegen:

    GRANT CONNECT TO cons IDENTIFIED BY cons;
    GRANT CONNECT TO rem IDENTIFIED BY rem;
  5. Beim ersten Initialisieren einer Datenbank wird keiner der Webdienste festgelegt, die benötigt werden, um HTTP-Anforderungen von entfernten Benutzern zu akzeptieren, und es werden keine Definitionen erstellt, die der Datenbankserver für den Zugriff auf das Verzeichnis verwenden könnte, in dem die Nachrichtendateien gespeichert werden. Die Erstellung dieser Objekte wird mit der gespeicherten Prozedur sr_add_message_server automatisiert, in der durch einen optionalen Parameter der Eigentümer aller Objekte angegeben werden kann. Führen Sie die folgenden Anweisungen für die Nachrichtenserver-Datenbank (msgsrv) aus, um alle für den Nachrichtenserver erforderlichen Objekte festzulegen, und geben Sie an, dass der Benutzer cons Eigentümer aller Objekte ist:

    CREATE ROLE FOR USER cons;
    SET REMOTE http OPTION cons.root_directory='c:\\tutorial\\messages';
    CALL sr_add_message_server( 'cons' );
    COMMIT;

    Weitere Hinweise finden Sie unter sr_add_message_server-Systemprozedur.

  6. Trennen Sie die Verbindung zu Interactive SQL.

Ergebnisse

Ein weiterer Datenbankserver dient nun als Host für den Nachrichtenserver.

Nächste Schritte

Gehen Sie weiter zu Lektion 3: Erstellen der entfernten Datenbank.