Effizientes Anweisungsrouting verwenden, indem ProxySQL in Autonomous Database aktiviert wird

Mit ProxySQL können Sie auf mehrere autonome Datenbanken zugreifen, indem Sie Anweisungen für DML und Abfragen weiterleiten. Außerdem müssen Sie nicht alle Daten physisch in einer einzigen Datenbank konsolidieren.

Themen

Effizientes Anweisungsrouting mit ProxySQL in Autonomous Database

ProxySQL auf Autonomous Database ermöglicht Ihnen die Verwendung mehrerer Autonomous Database-Instanzen und erleichtert den Zugriff auf und die Analyse von Daten, als ob sie an nur einem Ort gespeichert wären.

Sie können ProxySQL verwenden, wenn Sie mit einem umfangreichen Setup arbeiten müssen, das mehrere autonome Datenbanken umfasst. Mit ProxySQL erhalten Sie einheitlichen Zugriff auf verschiedene Datenbanken, und es ist nicht mehr erforderlich, Daten physisch an einen Ort zu verschieben.

Wenn Sie ProxySQL aktivieren, geben Sie eine Autonomous Database-Instanz als Routerinstanz und eine oder mehrere Autonomous Database-Instanzen als Zielinstanzen an. Die Router-Instanz enthält eine Routing-Tabelle, die bestimmt, wie eine Anweisung an eine oder mehrere Zielinstanzen verteilt (zugeordnet) wird. Eine Zielinstanz enthält eine Akzeptanztabelle. Die Akzeptanztabelle ähnelt der Routing-Tabelle und enthält Einträge, die angeben, dass die Instanz Anweisungsumleitungen vom Router akzeptiert.

Je nach gewählter Routing-Methode werden Anweisungen automatisch von der Router-Instanz einer oder mehreren Zielinstanzen zugeordnet. Eine Anwendung stellt eine Verbindung zur Routerinstanz her und wird auf der Routerinstanz ausgeführt. Autonomous Database leitet Anweisungen zu einer oder mehreren Zielinstanzen um.

Im Folgenden sind einige der Vorteile der Aktivierung von ProxySQL im Vergleich zur Verwendung einer einzelnen sehr großen Autonomous Database aufgeführt:

  • ProxySQL bietet Datenbankautonomie und Unabhängigkeit für Vorgänge wie Lebenszyklusmanagement und Admin-Aufgaben. Beispiel: Mit ProxySQL werden Datenbankvorgänge, einschließlich Backup und Restore, und Features wie Autonomous Data Guard unabhängig in jeder Autonomous Database-Instanz verwaltet.

  • Mit ProxySQL können Sie sehr große Datenbanken effizient verwalten, indem Sie Daten auf mehrere Autonomous Database-Instanzen aufteilen.

Wenn Sie mit ProxySQL arbeiten, müssen Sie mehrere Begriffe kennen:

Routerinstanz: Wenn Sie ProxySQL aktivieren, wird eine Routerinstanz angegeben. Eine Routing-Tabelle bestimmt, wie eine Anweisung an eine oder mehrere Zielinstanzen verteilt (zugeordnet) wird. Je nach angegebener Routingmethode werden Anweisungen aus der Routerinstanz automatisch einer oder mehreren Zielinstanzen zugeordnet.

Zielinstanz: Die Zielinstanz wird angegeben, wenn Sie eine Zuordnung auf der Routerinstanz erstellen. Auf jeder Zielinstanz wird eine Akzeptanztabelle hinzugefügt.

Routing-Tabelle: Eine Routing-Tabelle enthält Ziel-Mapping-Einträge, die angeben, an welche Instanz Anweisungen automatisch weitergeleitet werden.

Akzeptanztabelle: Eine Akzeptanztabelle enthält Einträge, die angeben, dass die Instanz Anweisungsumleitungen vom Router akzeptiert.

Voraussetzungen für die Verwendung von ProxySQL

Die folgenden Anforderungen gelten für ProxySQL:

  • Die Aktivierung von ProxySQL wird nur für Autonomous Database-Instanzen unterstützt, die sich in einem elastischen Pool befinden. Die Routerinstanz und alle Zielinstanzen müssen Mitglieder desselben elastischen Pools sein.

  • Die Routerinstanz und alle Zielinstanzen müssen sich in derselben Region befinden.

  • Die Metadaten für die Objekte, die Sie weiterleiten, müssen auf Router- und Zielinstanzen übereinstimmen. Der Anwendungsdesigner ist dafür verantwortlich, dass die Metadaten für Objekte, die in einer Zielinstanz vorhanden sind, auch in der Routerinstanz vorhanden sind. Beispiel: Wenn in der Zielinstanz eine Tabelle mit dem Namen EMPLOYEES vorhanden ist, muss in der Routerinstanz auch eine Tabelle mit übereinstimmenden Metadaten mit dem Namen EMPLOYEES vorhanden sein. Die Tabelle in der Routerinstanz muss nicht leer sein (nur Metadaten).

Empfehlung zum Aktivieren von ProxySQL

Die Instanzen, die Sie als Router und als Ziele hinzufügen, können einen beliebigen Autonomous Database-Workload-Typ aufweisen. Wenn Einträge in der Routing-(Mapping-)Tabelle vorhanden sind, werden Anweisungen zu Objekten, die in diesen Einträgen angegeben sind, ungeachtet des Workload-Typs des Ziels an die entsprechenden Zielinstanzen weitergeleitet. Oracle empfiehlt, dass alle theAutonomous-Datenbankinstanzen den Workload-Typ "Data Warehouse" verwenden.

Automatic Statement Routing mit aktiviertem ProxySQL

Mit ProxySQL können Sie Anweisungen mit einer der unterstützten Routingmethoden auf Ziele verteilen.

Hinweis

Unabhängig von der Routingmethode (Zuordnung), die Sie verwenden möchten, ist der Anwendungsschemadesigner dafür verantwortlich, sicherzustellen, dass Metadaten für Objekte, die in einer Zielinstanz platziert sind, auch in der Routerinstanz verfügbar sind. Beispiel: Wenn in der Zielinstanz eine Tabelle mit dem Namen EMPLOYEES vorhanden ist, muss in der Routerinstanz auch eine Tabelle mit übereinstimmenden Metadaten mit dem Namen EMPLOYEES vorhanden sein. Die Tabelle in der Routerinstanz muss nicht leer sein.
  • Routing auf Schemaebene: Alle Objekte eines Schemas werden einer einzelnen Zielinstanz zugeordnet. Sie können einer einzelnen Zielinstanz mehrere Schemas zuordnen. Die Anweisungen für ein Schema können jedoch nicht über mehrere Zielinstanzen hinweg zugeordnet werden. Das bedeutet, dass dasselbe Schema nicht sowohl für das Schema- als auch für das Objektrouting verwendet werden kann.

    Um Routing auf Schemaebene anzugeben, rufen Sie die Prozedur DBMS_PROXY_SQL.ADD_MAPPING auf, wobei der object_name-Parameter auf den Wert "*" gesetzt ist.


    Beschreibung von proxysql-schema.png folgt
    Beschreibung der Abbildung proxysql-schema.png

    In diesem Beispiel sind die Metadaten für Objekte in Schema A sowohl in Ziel-Autonomous Database 1 als auch in der Routerinstanz vorhanden. Die Metadaten für Objekte in Schema B sind sowohl in Ziel-Autonomous Database 2 als auch in der Routerinstanz usw. vorhanden.

  • Routing auf Objektebene: Objekte in einem Schema werden über mehrere Zielinstanzen hinweg zugeordnet.

    Um das Routing auf Objektebene anzugeben, rufen Sie die Prozedur DBMS_PROXY_SQL.ADD_MAPPING auf, wobei der object_name-Parameter auf einen Tabellennamen gesetzt ist.


    Beschreibung von proxysql-object.png folgt
    Beschreibung der Abbildung proxysql-object.png

    In diesem Beispiel sind die Metadaten für Tabelle A sowohl in Ziel 1 als auch in der Routerinstanz vorhanden, und die Metadaten für Tabelle B sind sowohl in Ziel 2 als auch in der Routerinstanz usw. vorhanden.

  • Hybrid-Routing: Objekte eines Schemas werden mit einer Kombination aus Routing auf Schemaebene und Routing auf Objektebene weitergeleitet.


    Beschreibung von proxysql-hybrid.png folgt
    Beschreibung der Abbildung proxysql-hybrid.png

    In diesem Beispiel sind die Metadaten für Schema A sowohl in Ziel-Autonomous Database 1 als auch in der Routerinstanz vorhanden. Die Metadaten für Tabelle B (in Schema B) sind sowohl in Ziel-Autonomous Database 2 als auch in der Routerinstanz usw. vorhanden.

Servicezuordnung mit automatischer Auszugsweiterleitung, wenn ProxySQL aktiviert ist

Wenn die Routing-Tabelle eine Zuordnung zu einer Zieldatenbank angibt, wird für den Datenzugriff in der Zieldatenbank derselbe Service verwendet, bei dem Sie mit der Router-Datenbank verbunden sind.

Beispiel: Wenn eine Session mit dem HIGH-Service auf der Routerinstanz verbunden ist, verwendet ein an eine Zielinstanz geroutetes Anweisungs- oder Anweisungsfragment auch den HIGH-Service. Wenn eine Sitzung mit dem MEDIUM-Dienst auf der Routerinstanz verbunden ist, verwendet eine an eine Zielinstanz weitergeleitete Anweisung den MEDIUM-Dienst.

Wenn der für die Verbindung mit der Routerinstanz verwendete Service auf einer Zielinstanz nicht verfügbar ist, verwendet das an die Zielinstanz weitergeleitete Anweisungs- oder Anweisungsfragment den MEDIUM-Service (die verfügbaren Services hängen vom Workload-Typ von Autonomous Database ab).

Anweisungsweiterleitung aktivieren und Schemazuordnung definieren

In diesem Abschnitt wird erläutert, wie Sie ProxySQL für das automatische Anweisungsrouting von einem Haupt-Router zu einer oder mehreren Zieldatenbankinstanzen einrichten.

Anweisungsrouting aktivieren und Objektzuordnung von Router zu Zielinstanzen definieren

Um das Anweisungsrouting einzurichten, aktivieren Sie ProxySQL auf der Routerinstanz und definieren das Schema oder die Objekte, deren Anweisungen Zieldatenbanken zugeordnet (gesendet) werden.

Folgende Voraussetzungen sind erforderlich, um das automatische Anweisungs-Routing zu aktivieren:

  • Erstellen Sie die Autonomous Database-Instanz, die Sie für die Routerinstanz verwenden möchten, oder identifizieren Sie eine vorhandene Autonomous Database-Instanz als Routerinstanz.

  • Erstellen Sie die Zielinstanzen, oder identifizieren Sie die Zielinstanzen aus vorhandenen Autonomous Database-Instanzen.

  • Stellen Sie sicher, dass die Routerinstanz und jede Zielinstanz, in die Sie Abfragen umleiten, übereinstimmende Metadaten für alle Objekte aufweisen, die Sie vom Router einem Ziel zuordnen.

    Unabhängig von der Routingmethode (Zuordnung), die Sie verwenden möchten, ist der Anwendungsschemadesigner dafür verantwortlich, sicherzustellen, dass Metadaten für Objekte, die in einer Zielinstanz platziert sind, auch in der Routerinstanz verfügbar sind. Beispiel: Wenn in der Zielinstanz eine Tabelle mit dem Namen EMPLOYEES vorhanden ist, muss in der Routerinstanz auch eine Tabelle mit übereinstimmenden Metadaten mit dem Namen EMPLOYEES vorhanden sein. Die Tabelle in der Routerinstanz muss nicht leer sein.

  • Bestimmen Sie anhand der verfügbaren Optionen den Typ der Anweisungsweiterleitung, die Sie verwenden möchten: Routing auf Schemaebene, Routing auf Objektebene oder Hybridrouting.

So aktivieren Sie das automatische Anweisungs-Routing und fügen der Routing-Tabelle Ziel-Mapping-Einträge hinzu:

  1. Führen Sie auf einer Autonomous Database-Instanz DBMS_PROXY_SQL.ENABLE_ROUTING aus, um das automatische Anweisungsrouting zu aktivieren.

    Beispiel:

    BEGIN
       DBMS_PROXY_SQL.ENABLE_ROUTING;
    END;
    /

    Die Instanz, auf der Sie DBMS_PROXY_SQL.ENABLE_ROUTING ausführen, wird zur Routerinstanz. Dadurch wird das automatische Anweisungs-Routing aktiviert und die Routing-Tabelle erstellt.

    Weitere Informationen finden Sie unter Prozedur ENABLE_ROUTING.

  2. Führen Sie DBMS_PROXY_SQL.ADD_MAPPING aus, um die Zuordnung vom Router zu einem Ziel zu definieren. Dadurch wird ein Eintrag in der Routing-Tabelle erstellt, der die Zielinstanz angibt, an die Abfragen automatisch weitergeleitet werden.

    Beispiel zum Aktivieren des Routings auf Objektebene:

    BEGIN
     DBMS_PROXY_SQL.ADD_MAPPING ( 
        object_owner   => 'DW_USER',
        object_name    => 'INVENTORY',
        database_ocid  => 'TARGET1_DATABASE_OCID');
    END;
    /

    Beispiel zum Aktivieren des Routings auf Schemaebene:

    BEGIN
     DBMS_PROXY_SQL.ADD_MAPPING ( 
        object_owner   => 'DW_USER',
        object_name    => '*',
        database_ocid  => 'TARGET2_DATABASE_OCID');
    END;
    /

    Verwenden Sie die folgende Abfrage, um die Datenbank-OCID abzurufen:

    SELECT json_value(cloud_identity,'$.DATABASE_OCID') 
       FROM v$pdbs;
    

    Der Parameter object_owner gibt den Eigentümer des Objekts an.

    Der Parameter object_name gibt das Objekt an.

    Der Parameter database_ocid gibt die Zielinstanz-OCID an. Der Parameterwert database_ocid muss in Großbuchstaben angegeben werden. Sie können die OCID der Zielinstanz bestimmen, indem Sie sich als ADMIN bei der Zielinstanz anmelden und die folgende Abfrage ausführen:

    SELECT json_value(cloud_identity, '$.DATABASE_OCID') FROM v$pdbs;

    Weitere Informationen finden Sie unter Details zum Mandanten abrufen.

    Dadurch wird ein Routingeintrag in der Routing-Tabelle erstellt und eine Objektzuordnung zu einer Zielinstanz definiert.

    Weitere Informationen finden Sie unter Prozedur ADD_MAPPING.

  3. Führen Sie DBMS_PROXY_SQL.ADD_MAPPING aus, um bei Bedarf zusätzliche Zielmappings hinzuzufügen.

    Beispiel:

    BEGIN
     DBMS_PROXY_SQL.ADD_MAPPING ( 
        object_owner   => 'DW_USER_1',
        object_name    => 'CUSTOMERS',
        database_ocid  => 'TARGET3_DATABASE_OCID');
    END;
    /

Sie können die Ansicht DBA_PROXY_SQL_MAPPINGS abfragen, um die Datensätze in der Routing-Tabelle aufzulisten. Weitere Informationen finden Sie in der Ansicht DBA_PROXY_SQL_MAPPINGS.

Auszugsweiterleitung in Zielinstanzen akzeptieren

Sie müssen das Anweisungsrouting auf einer Zielinstanz akzeptieren, um die Zuordnung von der Routerinstanz zuzulassen.

So lassen Sie (Akzeptieren-)Anweisungen von der Routerinstanz zu einer Zielinstanz umleiten:

  1. Führen Sie auf der Zielinstanz DBMS_PROXY_SQL.ACCEPT_MAPPING aus.

    Beispiel:

    BEGIN
     DBMS_PROXY_SQL.ACCEPT_MAPPING ( 
        object_owner          => 'DW_USER',
        router_database_ocid  => 'ROUTER_DATABASE_OCID'); 
     END;
    /

    object_owner ist der Eigentümer, für den das Ziel das Anweisungsrouting akzeptiert.

    Die router_database_ocid gibt die OCID der Autonomous Database-Routerinstanz an. Gibt die Instanz an, von der das Ziel eingehende umgeleitete Anweisungsanforderungen annimmt.

    Die Akzeptanzzuordnung ist eine pro Objekteigentümer, sodass möglicherweise nur eine Akzeptanz erforderlich ist, die mehreren Objektzuordnungen auf der Routerinstanz entspricht.

    Sie können die Ansicht DBMS_PROXY_SQL_ACCEPTED_MAPPINGS ausweisen, um die Datensätze in der Akzeptanztabelle aufzulisten. Weitere Informationen finden Sie in der Ansicht DBA_PROXY_SQL_ACCEPTED_MAPPINGS.

    Weitere Informationen finden Sie unter Prozedur ACCEPT_MAPPING.

  2. Wenn in der Routerzuordnung mehrere Ziele angegeben sind, führen Sie DBMS_PROXY_SQL.ACCEPT_MAPPING auf jedem Ziel aus.

    Weitere Informationen finden Sie unter Prozedur ACCEPT_MAPPING.

Auszüge über ProxySQL weiterleiten

Um das automatische Anweisungsrouting zu nutzen, müssen Sie eine Verbindung herstellen und Ihre Anweisungen an die von ProxySQL verwaltete Routerinstanz weiterleiten.

Wenn Sie Abfragen und DML mit aktiviertem ProxySQL senden, müssen Sie eine Verbindung zur Routerinstanz herstellen, um das automatische Anweisungsrouting zu nutzen.

Routinganweisungen zu einer Zielinstanz stoppen

Führen Sie diese Schritte in einer Autonomous Database-Zielinstanz aus, um sie daran zu hindern, weitergeleitete Anweisungen vom ProxySQL-Router zu akzeptieren.

  1. Führen Sie DBMS_PROXY_SQL.REJECT_MAPPING auf einer Zielinstanz aus, um das Anweisungsrouting für den angegebenen Eigentümer abzulehnen.

    Beispiel:

    BEGIN
     DBMS_PROXY_SQL.REJECT_MAPPING ( 
        object_owner          => 'DW_USER',
        router_database_ocid  => 'ROUTER_DATABASE_OCID');
     END;
    /

    Der Parameter object_owner gibt den Eigentümernamen an.

    Der Parameter router_database_ocid gibt die OCID der Routerinstanz an.

    Die Autonomous Database-Zielinstanz, in der Sie diese Prozedur ausführen, fordert keine Routinganforderungen mehr von der angegebenen Routerinstanz für den angegebenen Objekteigentümer an.

  2. Führen Sie DBMS_PROXY_SQL.REJECT_MAPPING nach Bedarf auf zusätzlichen Zielen aus.

Weitere Informationen finden Sie unter Prozedur REJECT_MAPPING.

Schema- oder Objektzuordnung aus Router-Instanz entfernen

Enthält die Schritte zum Entfernen einer bestimmten Zuordnung aus der Router-Datenbank, die von ProxySQL verwaltet wird.

  1. Mit der Prozedur DBMS_PROXY_SQL.REMOVE_MAPPING können Sie einen zuvor hinzugefügten Zuordnungseintrag für das angegebene Objekt entfernen. Beispiel:

    Beispiel für eine Tabelle:

    BEGIN
     DBMS_PROXY_SQL.REMOVE_MAPPING ( 
        object_owner   => 'DW_USER',
        object_name    => 'INVENTORY');
     END;
    /
    In diesem Beispiel wird der Zuordnungseintrag für die Tabelle INVENTORY aus der Routing-Tabelle entfernt. Nach Ausführung dieser Prozedur werden Abfragen für die Tabelle INVENTORY nicht an eine Autonomous Database-Zielinstanz weitergeleitet.

    Beispiel: mit einem Schema:

    BEGIN
     DBMS_PROXY_SQL.REMOVE_MAPPING ( 
        object_owner   => 'DW_USER',
        object_name    => '*');
     END;
    /
    In diesem Beispiel wird der Zuordnungseintrag für das Schema DW_USER aus der Routing-Tabelle entfernt. Nachdem Sie diese Prozedur ausgeführt haben, werden Abfragen für das Schema DW_USER nicht an eine Autonomous Database-Zielinstanz weitergeleitet.

    Der Parameter object_owner gibt den Eigentümer an.

    Der Parameter object_name gibt den Tabellennamen an.

    Weitere Informationen finden Sie unter Prozedur REMOVE_MAPPING.

Auszugsweiterleitung deaktivieren

Zeigt die Schritte zum automatischen Anweisungsrouting an, indem ProxySQL deaktiviert wird.

Führen Sie DBMS_PROXY_SQL.DISABLE_ROUTING auf der Routerinstanz aus, um ProxySQL zu deaktivieren und das automatische Anweisungsrouting an Zielinstanzen zu deaktivieren.

Beispiel:

BEGIN
 DBMS_PROXY_SQL.DISABLE_ROUTING;
END;
/

Dadurch wird ProxySQL deaktiviert und das automatische Anweisungsrouting auf dem Router deaktiviert.

Wenn Sie ProxySQL deaktivieren, werden die Einträge der Anweisungszuordnung in der Routing-Tabelle der Router-Instanz nicht gelöscht. Das heißt, wenn Sie ProxySQL erneut aktivieren und die Routing-Tabelle vorhandene Einträge enthält, leitet das automatische Anweisungsrouting Anweisungen an Zielinstanzen weiter, wie in der Routing-Tabelle angegeben. Verwenden Sie die Prozedur DBMS_PROXY_SQL.REMOVE_MAPPING, wenn Sie vorhandene Routingtabelleneinträge entfernen möchten, bevor Sie ProxySQL erneut aktivieren.

Weitere Informationen finden Sie unter Prozedur DISABLE_ROUTING.

Automatic Statement Routing mit ProxySQL Notes

Listet Einschränkungen und wichtige Hinweise zum automatischen Anweisungsrouting auf, wenn ProxySQL aktiviert ist.

  • Der Benutzer ADMIN verfügt über die Berechtigungen zum Verwalten von ProxySQL. Wenn Sie einen anderen Benutzer aktivieren möchten, müssen Sie die folgenden Berechtigungen erteilen:

    • Berechtigung EXECUTE für Package DBMS_PROXY_SQL.

    • Berechtigung READ für die Ansicht DBA_PROXY_SQL_MAPPINGS.

    • Berechtigung READ für die Ansicht DBA_PROXY_SQL_ACCEPTED_MAPPINGS.

  • Das automatische Anweisungs-Routing wird nahtlos fortgesetzt, wenn:
    • Die Autonomous Database-Zielinstanz wird auf eine lokale Autonomous Data Guard-Standbyinstanz übertragen.

    • Sie führen einen Switchover für eine Autonomous Database-Zielinstanz zu einer lokalen Autonomous Data Guard-Standbydatenbank aus.

    Das automatische Anweisungsrouting wird jedoch nach einem Failover oder Switchover zu einer regionsübergreifenden Autonomous Data Guard-Standbydatenbank gestoppt.