Detaillierte Erläuterung zur Verwendung von Amoeba zum Implementieren der Lese-/Schreibtrennung einer MySQL-Datenbank

Detaillierte Erläuterung zur Verwendung von Amoeba zum Implementieren der Lese-/Schreibtrennung einer MySQL-Datenbank

Es gibt viele Lese-/Schreibtrennungsarchitekturen für MySQL. Bei Baidu werden fast alle davon mit mysql_proxy implementiert. Da der Proxy auf Basis der Skriptsprache Lua implementiert ist, meinen viele Internetnutzer, der Proxy sei ineffizient und instabil und werde für die Verwendung in einer Produktionsumgebung nicht empfohlen.

Amoeba ist ein von Alibaba entwickeltes Projekt zur Trennung von Lese- und Schreibvorgängen in Datenbanken (die Trennung von Lese- und Schreibvorgängen ist nur eine kleine Funktion davon). Da es auf Java basiert, muss JDK in der laufenden Umgebung installiert werden.

Vorbereitende Vorbereitungen:

1. Zwei Datenbanken, eine Master- und eine Slave-Datenbank, Master-Slave-Synchronisierung;

  1. Master: 172.22.10.237:3306; die Master-Datenbank ist für Schreibvorgänge verantwortlich;
  2. Slave: 10.4.66.58:3306; Der Slave ist für Lesevorgänge zuständig;
  3. amoeba: 172.22.10.237:8066 ; Ich habe amoeba auf dem Server installiert, auf dem sich die Hauptdatenbank befindet. Natürlich können Sie es auch auf einem dritten Server installieren;

Alle Serverbetriebssysteme sind CentOS7;

2. Konfigurieren und installieren Sie JDK auf dem Server, auf dem sich Amoeba befindet.

Ich habe jdk1.8 installiert;

Der Pfad lautet: JAVA_HOME=/usr/local/java/jdk1.8.0_131

Das oben genannte muss von Ihnen selbst erstellt und konfiguriert werden, Master und Slave funktionieren normal, fügen Sie JDK-Umgebungsvariablen hinzu: /etc/profile;

Es gibt viele Möglichkeiten, Amoeba zu installieren. Ich werde hier nicht ins Detail gehen. Ich habe das Installationspaket von amoeba-mysql-3.0.5-RC-distribution heruntergeladen und es einfach zur Verwendung entpackt.

Entpackverzeichnis: /usr/local/amoeba/

Offensichtlich ist „conf“ die Konfigurationsdatei und „bin“ das Startprogramm.

Wie bereits erwähnt, verfügt Amoeba über mehr Funktionen als nur die Lese-/Schreibtrennung. Wenn Sie jedoch nur die Lese-/Schreibtrennungsfunktion verwenden, müssen Sie nur diese Dateien konfigurieren: conf/dbServers.xml, conf/amoeba.xml und bin/launcher.

conf/dbServers.xml:

 `<Eigenschaftsname="Port">3306</Eigenschaftsname> 
       #Stellen Sie den Port der MySQL-Datenbank ein, mit der Amoeba eine Verbindung herstellen möchte. Der Standardwert ist 3306
  <Eigenschaftsname="Schema">Testdb</Eigenschaft> 
      #Standarddatenbank festlegen. Beim Herstellen einer Verbindung mit Amoeba muss die Operationstabelle den Datenbanknamen explizit angeben, d. h. die Methode dbname.tablename verwenden. Die Verwendung von dbname zum Angeben der Standarddatenbank wird nicht unterstützt, da die Operation an jeden Backend-DBserver gesendet wird
  <Eigenschaftsname="Benutzer">test1</Eigenschaft> 
        #Legen Sie das Konto und das Passwort für Amoeba fest, damit es eine Verbindung zum Backend-Datenbankserver herstellen kann. Daher müssen Sie diesen Benutzer auf allen Backend-Datenbanken erstellen und den Amoeba-Server autorisieren, eine Verbindung herzustellen <property name="password">111111</property>

  <property name="maxActive">500</property> #Maximale Anzahl an Verbindungen, Standard 500
  <property name="maxIdle">500</property> #Maximale Anzahl inaktiver Verbindungen<property name="minIdle">1</property> #Neueste Anzahl inaktiver Verbindungen<dbServer name="writedb" parent="abstractServer"> #Richten Sie eine beschreibbare Backend-Datenbank ein, die hier als writedb definiert wird. Dieser Name kann beliebig gewählt werden und wird später verwendet<property name="ipAddress">172.22.10.237</property> #Legen Sie die IP des beschreibbaren Backend-DBservers fest

  <dbServer name="slave01" parent="abstractServer"> #Legen Sie die vom Backend lesbare Datenbank fest <property name="ipAddress">10.4.66.58</property>

   <dbServer name="myslave" virtual="true"> #Richten Sie einen virtuellen DB-Server ein, der eigentlich einer DB-Server-Gruppe entspricht. Hier werden alle lesbaren Datenbank-IPs in eine Gruppe eingefügt und der Gruppenname lautet myslave
      <property name="loadbalance">1</property> #Wählen Sie den Planungsalgorithmus aus. 1 bedeutet Replikationsbalance, 2 bedeutet Gewicht und 3 bedeutet HA. Wählen Sie hier 1 aus.
      <property name="poolNames">slave01</property> #myslave Gruppenmitglied`

conf/amoeba.xml:

<Eigenschaftsname="Port">8066</Eigenschaft> 
       #Stellen Sie den Port ein, auf dem Amoeba lauscht. Der Standardwert ist 8066.
    <Eigenschaftsname="IP-Adresse">127.0.0.1</Eigenschaft> 
        #Konfigurieren Sie die Abhörschnittstelle. Wenn nicht festgelegt, werden standardmäßig alle IP-Adressen abgehört.
        # Geben Sie das hier festgelegte Konto an, damit der Client eine Verbindung zu Amoeba herstellen kann (das Konto und das Kennwort hier haben nichts mit dem Kennwort zu tun, das von Amoeba für die Verbindung mit dem Backend-Datenbankserver verwendet wird).
      <property name="Benutzer">root</property> 
      <property name="password">123456</property>

    <Eigenschaftsname="defaultPool">meinSlave</Eigenschaft> 
         #Legen Sie den Standardpool für Amoeba fest, hier auf writedb
    <Eigenschaftsname="writePool">Master</Eigenschaft> 
         #Diese beiden Optionen sind standardmäßig abgemeldet und müssen auskommentiert werden. Sie werden hier verwendet, um die beiden zuvor definierten Lese-/Schreibpools anzugeben <property name="readPool">slave01</property>

bin/launcher:

 #Starten Sie das Skript, Sie müssen die JDK-Umgebungsvariablen konfigurieren;
    # Fügen Sie nach dem Kommentar die folgende Zeile hinzu:
    JAVA_HOME=/usr/local/java/jdk1.8.0_131

Launcher ist ein Startskript. Wenn JAVA_HOME nicht konfiguriert ist, erhalten Sie möglicherweise einen Fehler, selbst wenn Sie die Umgebungsvariablen in /etc/profile konfigurieren: JDK-Umgebungsvariablen sind nicht konfiguriert.

Es gibt auch eine Konfigurationsdatei: jvm.properties

  #Speichernutzungsprofil# Der Parameter -Xss hat eine Mindestwertanforderung, die größer als 228 sein muss, um die JVM zu starten
    #Überarbeiten:
      JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"

Erfahrene Anwender wissen, dass alles, was mit JDK zu tun hat, grundsätzlich mit der Speicheroptimierung zusammenhängt, und Amoeba bildet hier keine Ausnahme.

Nun kann es losgehen:

Nach dem Start können Sie den 8066-Port der Maschine sehen:


Zu diesem Zeitpunkt müssen Sie nur über Port 8066 der lokalen IP und das in Ihrer Konfigurationsdatei festgelegte Konto und Kennwort eine Verbindung zur Datenbank herstellen. Die geschriebenen Daten werden an den Master gesendet und die gelesenen Daten werden vom Slave gelesen.

prüfen:

Schließen Sie die Masterdatenbank, damit Sie sie weiterhin lesen können: Führen Sie den Befehl „Select“ aus, um sie anzuzeigen.

oder

Schließen Sie die Slave-Datenbank, und Sie können weiterhin darin schreiben: Führen Sie die Befehle „Update“ und „Inster“ aus.

Das könnte Sie auch interessieren:
  • Konfigurationsschritte für die MySQL-Master-Slave-Synchronisierung und die Trennung von Lesen und Schreiben
  • MySQL-Lese-/Schreibtrennung (Grundlagen)
  • Tutorial zur Implementierung der Lese-/Schreibtrennung in MySQL
  • MySQL-Lese-/Schreibtrennung (praktische Version)
  • Detaillierte Erläuterung der MySQL Master-Slave-Replikation, Lese-/Schreibtrennung, Sicherung und Wiederherstellung
  • Detaillierte Erläuterung der Konfigurationsmethode der Lese-/Schreibtrennung bei der MySQL-Master-Slave-Replikation
  • Detaillierte Erläuterung der Konstruktion der Lese-/Schreibtrennung bei der MySQL-Master-Slave-Replikation

<<:  So erstellen Sie einen pptpd-Dienst in Alibaba Cloud Ubuntu 16.04

>>:  So gestalten Sie Ihre JavaScript-Funktionen eleganter

Artikel empfehlen

Implementierung der Anmeldeseite des tatsächlichen Kampfprotokolls von Vue

Inhaltsverzeichnis 1. Vorbereitende Maßnahmen 1.1...

Eine Codezeile löst verschiedene IE-Kompatibilitätsprobleme (IE6-IE10)

x-ua-compatible wird verwendet, um das Modell für...

Ladeanimation mit CSS3 implementiert

Ergebnisse erzielen Implementierungscode <h1&g...

So installieren Sie die IonCube-Erweiterung mit Pagoda

1. Installieren Sie zuerst die Pagode Installatio...

Was ist JavaScript Anti-Shake und Throttling

Inhaltsverzeichnis 1. Funktion Entprellung 1. Was...

Lösung für großen Zeilenabstand (5 Pixel mehr im IE)

Code kopieren Der Code lautet wie folgt: li {Brei...

Eine kurze Diskussion über den JavaScript-Bereich

Inhaltsverzeichnis 1. Geltungsbereich 1. Globaler...

MySQL 5.7.18 Installer Installation Download Grafik-Tutorial

Dieser Artikel enthält das ausführliche Installat...

CSS-Einstellung Div-Hintergrundbild-Implementierungscode

Das Hinzufügen einer Hintergrundbildsteuerung zu ...

Sieben Prinzipien eines guten Designers (2): Farbgebrauch

<br />Vorheriger Artikel: Sieben Prinzipien ...

Eine gängige Technik zur Implementierung von Dreiecken mit CSS (mehrere Methoden)

In manchen Vorstellungsgesprächen werden häufig F...