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

SQL Anywhere 12.0.1 (Deutsch) » SQL Remote » Praktische Einführung: Einrichten eines Replikationssystems mit dem HTTP-Nachrichtensystem

 

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.

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

    dbinit msgsrv.db
  2. Starten Sie den Nachrichtenserver:

    dbeng12 -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. Beim Start des Datenbankservers sind keine Webdienste definiert, sie werden in der nächsten 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 -xs - dbeng12/dbsrv12-Serveroption.

  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 als Benutzer mit DBA-Berechtigung mit der Nachrichtenserver-Datenbank (msgsrv):

    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:

    GRANT GROUP TO cons;
    SET REMOTE http OPTION cons.root_directory='c:\\tutorial\\messages';
    CALL sr_add_message_server( 'cons' );
    COMMIT;

    Siehe sr_add_message_server-Systemprozedur.

  6. Trennen Sie die Verbindung zu Interactive SQL.

  7. Fahren Sie fort mit Lektion 3: Erstellen der entfernten Datenbank.