MySQL Router implementiert MySQL Lese-/Schreibtrennung

MySQL Router implementiert MySQL Lese-/Schreibtrennung

1. Einleitung

MySQL Router ist eine leichte MySQL-Middleware, die offiziell von MySQL bereitgestellt wird, um die vorherige alte Version des SQL-Proxys zu ersetzen.

Da es sich bei MySQL Router um eine Datenbank-Middleware handelt, muss es in der Lage sein, zu analysieren, ob es sich bei der SQL-Anforderung vom vorherigen Client um eine Schreib- oder eine Lese-Anforderung handelt, um zu entscheiden, ob und an welchen Master oder Slave die SQL-Anforderung gesendet wird. Auf diese Weise realisiert MySQL Router die Lese- und Schreibtrennung von MySQL und gleicht die Last von MySQL-Anfragen aus.

Daher besteht die Prämisse des MySQL-Routers darin, dass das Backend die MySQL-Master-Slave-Replikation implementiert.

MySQL Router ist sehr leichtgewichtig und kann nur eine einfache Trennung von Lesen und Schreiben über verschiedene Ports implementieren. Der Planungsalgorithmus für Lese-Anfragen kann nur das Standard-rr (Round-Robin) verwenden. Er verfügt nicht über erweiterte oder komplexere Funktionen. Daher müssen Sie bei der Implementierung von MySQL Router die Hochverfügbarkeit des MySQL-Backends selbst konfigurieren. Es wird empfohlen, Hochverfügbarkeit über Percona XtraDB Cluster, MariaDB Galera oder die offizielle Gruppenreplikation von MySQL zu erreichen. Wenn es keine andere Wahl gibt, kann dies auch über MHA erreicht werden.

Ein einfaches MySQL Router-Bereitstellungsdiagramm sieht wie folgt aus.

In diesem Artikel wird MySQL Router verwendet, um die Lese-/Schreibtrennung zu implementieren, wenn auf dem Backend keine hohe MySQL-Master-Slave-Verfügbarkeit vorhanden ist. Außerdem wird erläutert, warum die Lese-/Schreibtrennung bei der hohen MySQL-Verfügbarkeit auf dem Backend nicht implementiert wird. Meiner Meinung nach ist MySQL Router nur ein Spielzeug. Es hat nicht nur wenige Funktionen, sondern erfordert auch die Angabe verschiedener Ports zum Lesen/Schreiben im Anwendungscode (siehe später die Erklärung der Konfigurationsdatei). Niemand wird es in einer realen Umgebung verwenden.

2. MySQL-Router konfigurieren

Das Folgende ist die experimentelle Umgebung.

Charaktername Host-IP MySQL-Version Datenstatus
MySQL-Router 192.168.100.21 MySQL 5.7.22 keiner
Master 192.168.100.22 MySQL 5.7.22 Neue Instanz
Sklave1 192.168.100.23 MySQL 5.7.22 Neue Instanz
Sklave2 192.168.100.24 MySQL 5.7.22 Neue Instanz

Da die MySQL-Master-Slave-Replikation im Backend keine hohe Verfügbarkeit erreicht, ist nur ein Masterknoten für Schreibvorgänge verantwortlich.

Alle MySQL-Backend-Knoten sind neu installierte MySQL-Instanzen, sodass Sie die Master-Slave-Replikation direkt aktivieren können. Wenn es sich um eine Master-Slave-Replikation vorhandener Daten handelt, müssen Sie zuerst sicherstellen, dass diese synchronisiert werden. Die Methode lautet wie folgt: Stellen Sie den Slave auf die vom Master angegebenen Koordinaten wieder her.

2.1 MySQL Router installieren

Laden Sie die Binärversion von MySQL Router herunter unter: https://dev.mysql.com/downloads/router/
RPM-Repository: http://repo.mysql.com/yum/mysql-tools-community/el/7/x86_64/

Hier wird die Binärversion von MySQL Router 2.1.6 verwendet.

tar xf mysqlrouter-2.1.6-linux-glibc2.12-x86-64bit.tar.gz
mv mysqlrouter-2.1.6-linux-glibc2.12-x86-64bit /usr/local/mysqlrouter

Das ist alles, so einfach ist das.

Nach dem Dekomprimieren des Binärpakets befinden sich die folgenden Dateien im dekomprimierten Verzeichnis.

[root@s1 herr]# ls
bin Daten include lib ausführen teilen

Es gibt nur ein Binärprogramm mysqlrouter im Bin-Verzeichnis, das gleichzeitig das Hauptprogramm von MySQL Router ist.

Es gibt Beispielkonfigurationsdateien und Beispiele für Startskripte im SysV-Stil im freigegebenen Verzeichnis, aber leider basiert das Skript auf der Debian-Plattform und muss geändert und installiert werden, bevor es auf der Red Hat-Serie verwendet werden kann. Also habe ich später ein SysV-Skript unter CentOS geschrieben.

[root@s1 mr]# ls share/doc/mysqlrouter/
License.txt README.txt sample_mysqlrouter.conf sample_mysqlrouter.init

Fügen Sie abschließend das Hauptprogramm zur Umgebungsvariable PATH hinzu.

echo "PATH=$PATH:/usr/local/mysqlrouter/bin" >/etc/profile.d/mysqlrouter.sh
chmod +x /etc/profile.d/mysqlrouter.sh
Quelle /etc/profile.d/mysqlrouter.sh

2.2 MySQL Router starten und testen

Nachfolgend sehen Sie die Konfigurationsdatei für die obige experimentelle Umgebung. Es gibt nur einen Masterknoten 192.168.100.22:3306 . Wenn mehrere Schreibknoten (Master) vorhanden sind, trennen Sie die Knoten durch Kommas. Die Konfigurationsdatei wird später erklärt.

[STANDARD]
Konfigurationsordner = /etc/mysqlrouter
logging_folder = /usr/local/mysqlrouter/log
Laufzeitordner = /var/run/mysqlrouter

[Logger]
Ebene = INFO

[Routing:Sklaven]
bind_address = 192.168.100.21:7001
Ziele = 192.168.100.23:3306,192.168.100.24:3306
Modus = schreibgeschützt
Verbindungstimeout = 1

[Routing:Master]
bind_address = 192.168.100.21:7002
Ziele = 192.168.100.22:3306
Modus = Lesen/Schreiben
Verbindungstimeout = 2

Erstellen Sie dann die oben verwendeten Verzeichnisse auf dem Computer, auf dem sich MySQL Router befindet.

Shell> mkdir /etc/mysqlrouter /usr/local/mysqlrouter/log /var/run/mysqlrouter

Dadurch wird der MySQL Router gestartet, um Dienste bereitzustellen (stellen Sie vor dem Start sicher, dass das MySQL-Backend mit Master-Slave-Replikation konfiguriert wurde).

[root@s1 mr]# mysqlrouter &
[1] 16122

Überprüfen Sie den Überwachungsstatus. Die beiden hier überwachten Ports 7001 und 7002 werden vom Front-End zur Verbindung mit dem MySQL-Router verwendet. Sie werden verwendet, um vom Front-End gesendete SQL-Anfragen zu empfangen und SQL-Anfragen gemäß den Lese- und Schreibregeln an die MySQL-Master- und Slave-Knoten im Back-End weiterzuleiten.

[root@s1 mr]# netstat -tnlp
Aktive Internetverbindungen (nur Server)
Proto Recv-Q Send-Q Lokale Adresse Fremde Adresse Status PID/Programmname 
tcp 0 0 0.0.0.0:6032 0.0.0.0:* LISTEN 1231/proxysql    
tcp 0 0 0.0.0.0:6033 0.0.0.0:* LISTEN 1231/proxysql    
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1152/sshd        
tcp 0 0 192.168.100.21:7001 0.0.0.0:* LISTEN 16122/mysqlrouter
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2151/Master      
tcp 0 0 192.168.100.21:7002 0.0.0.0:* LISTEN 16122/mysqlrouter
tcp6 0 0 :::22 :::* LISTEN 1152/sshd        
tcp6 0 0 ::1:25 :::* LISTEN 2151/Master

Zeigen Sie die Protokolle an:

[root@s1 mr]# cat /usr/local/mysqlrouter/log/mysqlrouter.log 
2018-07-07 10:14:29 INFO [7f8a8e253700] [routing:slaves] gestartet: lauscht auf 192.168.100.21:7001; schreibgeschützt

2018-07-07 10:14:29 INFO [7f8a8ea54700] [routing:masters] gestartet: lausche auf 192.168.100.21:7002; Lese-/Schreibzugriff

Testen Sie es abschließend. Autorisieren Sie vor dem Testen den MySQL Router-Knoten auf dem Backend-Master, um die Verbindung zuzulassen, die auf die beiden Slave-Knoten repliziert wird.

mysql> gewähre alles auf *.* an root@'192.168.100.%', identifiziert durch 'P@ssword1!';

Stellen Sie eine Verbindung zu Port 7002 des MySQL-Routers her, dem Schreibport. Da die Master-Slave-Hochverfügbarkeit nicht konfiguriert ist, reicht ein einfacher Test auf Schreibbarkeit aus.

[root@s1 mr]# mysql -uroot -pP@ssword1! -h192.168.100.21 -P7002 -e 'wählen Sie @@server_id;'
mysql: [Warnung] Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein.
+-------------+
| @@Server-ID |
+-------------+
| 110 |
+-------------+

[root@s1 mr]# mysql -uroot -pP@ssword1! -h192.168.100.21 -P7002 -e 'Datenbank mytest erstellen;'
mysql: [Warnung] Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein.

[root@s1 mr]# mysql -uroot -pP@ssword1! -h192.168.100.21 -P7002 -e 'Datenbanken anzeigen;'
mysql: [Warnung] Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein.
+--------------------+
| Datenbank |
+--------------------+
| Informationsschema |
|mysql |
| meintest |
| Leistungsschema |
|System|
+--------------------+

Testen Sie dann jeden Slave-Knoten, um zu sehen, ob er einen Lastausgleich der Lese-Anfragen des RR-Planungsalgorithmus erreichen kann.

[root@s1 mr]# mysql -uroot -pP@ssword1! -h192.168.100.21 -P7001 -e 'wählen Sie @@server_id;' 
mysql: [Warnung] Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein.
+-------------+
| @@Server-ID |
+-------------+
| 120 |
+-------------+

[root@s1 mr]# mysql -uroot -pP@ssword1! -h192.168.100.21 -P7001 -e 'wählen Sie @@server_id;'
mysql: [Warnung] Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein.
+-------------+
| @@Server-ID |
+-------------+
| 130 |
+-------------+

[root@s1 mr]# mysql -uroot -pP@ssword1! -h192.168.100.21 -P7001 -e 'Datenbanken anzeigen;'
mysql: [Warnung] Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein.
+--------------------+
| Datenbank |
+--------------------+
| Informationsschema |
|mysql |
| meintest |
| Leistungsschema |
|System|
+--------------------+

Offensichtlich sind die Testergebnisse normal.

Es scheint, dass MySQL Router sehr einfach ist. Und das ist er tatsächlich. Stellen Sie einfach eine sinnvolle Konfigurationsdatei bereit, und schon sind Sie fertig. Lassen Sie uns also die Konfigurationsdatei des MySQL-Routers erklären.

3. Erläuterung der MySQL Router-Konfigurationsdatei

Die Konfigurationsdatei von MySQL Router ist ebenfalls sehr einfach und es müssen nicht viele Elemente konfiguriert werden.

Standardmäßig sucht der MySQL-Router im Installationsverzeichnis nach „mysqlrouter.conf“ und im Home-Verzeichnis nach „.mysqlrouter.conf“. Sie können auch „-c“ oder „--config“ im Befehl des Binärprogramms mysqlrouter verwenden, um die Konfigurationsdatei manuell anzugeben.

Die Konfigurationsdatei des MySQL-Routers liegt im Fragmentformat vor und es gibt drei häufig verwendete Fragmente: [DEFAULT], [logger] und [routing:NAME]. Beim Fragmentnamen wird die Groß-/Kleinschreibung beachtet und es werden nur einzeilige Kommentare vom Typ „#“ oder „;“ unterstützt. Kommentare in der Zeilenmitte oder am Zeilenende werden nicht unterstützt.

Nehmen Sie die Konfigurationsdatei im obigen Beispiel.

[STANDARD]
Konfigurationsordner = /etc/mysqlrouter
logging_folder = /usr/local/mysqlrouter/log
Laufzeitordner = /var/run/mysqlrouter

[Logger]
Ebene = INFO

[Routing:Sklaven]
bind_address = 192.168.100.21:7001
Ziele = 192.168.100.23:3306,192.168.100.24:3306
Modus = schreibgeschützt
Verbindungstimeout = 1

[Routing:Master]
bind_address = 192.168.100.21:7002
Ziele = 192.168.100.22:3306
Modus = Lesen/Schreiben
Verbindungstimeout = 2

1.Konfiguration des DEFAULT-Fragments.

Der Abschnitt [DEFAULT] konfiguriert normalerweise das Verzeichnis für Konfigurationsdateien, das Verzeichnis für Protokolle und das Verzeichnis, in dem der MySQL-Router ausgeführt wird (z. B. die PID-Datei).

Zum Beispiel:

[STANDARD]
config_folder=/etc/mysqlrouter #Geben Sie ein zusätzliches Konfigurationsdateiverzeichnis an. Alle Konfigurationsdateien in diesem Verzeichnis werden geladen. logging_folder=/usr/local/mysqlrouter/log #Geben Sie das Protokollverzeichnis an. Der Name der Protokolldatei lautet mysqlrouter.log
runtime_folder=/var/run/mysqlrouter #Geben Sie das Laufzeitverzeichnis an, der Standard ist /run/mysqlrouter

2.Konfiguration des Loggerfragments.

Der Abschnitt [logger] hat nur eine Option, nämlich das Festlegen der Protokollierungsebene.

[Logger]
level=debug # debug, info (Standard), Warnung, Fehler, schwerwiegend, ohne Berücksichtigung der Groß-/Kleinschreibung

3.Konfiguration des Routing-Fragments.

[routing:NAME] ist der Hauptteil des MySQL-Routers, der verschiedene Routing-Instanzen einrichtet. NAME kann beliebig benannt werden. Wie [routing:slaves] , [routing:masters] .

Im Abschnitt „Routing-Konfiguration“ können unter anderem die folgenden Optionen festgelegt werden:

(1). bind_address und bind_port

bind_address und bind_port sind die Adresse und der Port, an denen der MySQL-Router auf Front-End-SQL-Anfragen wartet. Der Port ist für MySQL Router obligatorisch, muss aber nicht mit bind_port gebunden werden, da er mit bind_address im IP:PORT -Format angegeben werden kann.
In einer Routing-Regel kann nur eine Anweisung zur Adressüberwachung festgelegt werden. Mit „0.0.0.0“ können jedoch alle Adressen auf dem Host überwacht werden. Wenn keine Abhöradresse angegeben ist, ist die Standard-Abhöradresse 127.0.0.1.

Darüber hinaus darf die Abhöradresse nicht in der durch die Zieldirektive angegebenen Liste erscheinen.

Hier ist ein Beispiel:

[Routing:Sklaven]
Bindeport = 7001
[Routing:Sklaven]
Bind-Adresse = 192.168.100.21
Bindeport = 7001
[Routing:Sklaven]
bind_address = 192.168.100.21:7001

Generell ist es keine gute Idee, die Lese-/Schreibtrennung über unterschiedliche Ports zu implementieren. Der Hauptgrund dafür ist, dass diese Verbindungsports im Anwendungscode angegeben werden müssen. MySQL Router kann auf diese Weise jedoch nur eine Lese-/Schreibtrennung erreichen, sodass MySQL Router nur als Spielzeug verwendet werden sollte.

(2). destinations

Definieren Sie das Weiterleitungsziel der Routingregel im Format HOST:PORT . HOST kann entweder eine IP oder ein Hostname sein. Mehrere Weiterleitungsziele werden durch Kommas getrennt. Wenn die Zielliste als mehrere Slaves definiert ist.

[Routing:Sklaven]
bind_address = 192.168.100.21:7001
Ziele = 192.168.100.23:3306,192.168.100.24:3306
[Routing:Master]
bind_address = 192.168.100.21:7002
Ziele = 192.168.100.22:3306,192.168.100.100:3306

(3). mode

Der MySQL-Router bietet zwei Modi: schreibgeschützt und Lesen/Schreiben. Diese beiden Methoden führen zu unterschiedlichen Methoden zur Weiterleitungsplanung.

Auf Lesen/Schreiben eingestellt. Wird häufig verwendet, um Ziele für den Master festzulegen und so eine hohe Verfügbarkeit des Masters zu erreichen.

  • Planungsmethode: Wenn MySQL Router zum ersten Mal eine Client-Anforderung empfängt, leitet er die Anforderung an das erste Ziel in der Zielliste weiter. Wenn er zum zweiten Mal eine Client-Anforderung empfängt, leitet er die Anforderung immer noch an das erste Ziel weiter. Das zweite Ziel wird nur kontaktiert, wenn das erste Ziel nicht kontaktiert werden kann (z. B. wenn der MySQL-Dienst heruntergefahren oder ausgefallen ist). Wenn alle Ziele nicht kontaktiert werden können, wird MySQL Router unterbrochen. Diese Planungsmethode wird „First-Available“ genannt.
  • Wenn ein Ziel kontaktiert wird, speichert MySQL Router es im Cache und leitet es bei der nächsten Anfrage an das Ziel weiter. Da es sich um ein Cache-Ziel handelt, bedeutet dies, dass es nach dem Neustart des MySQL-Routers ungültig wird.
  • Wenn Sie die Lese-/Schreibtrennung über den MySQL Router implementieren, können Sie daher mehrere Master einrichten, den Master mit der guten Leistung an die erste Position in der Zielliste setzen und die anderen Master als Backup-Master weiter hinten platzieren.

Auf schreibgeschützt einstellen. Wird oft verwendet, um Ziele auf Slave einzustellen und so einen Lastenausgleich für MySQL-Lese-Anfragen zu erreichen.

  • Planungsmethode: Wenn die MySQL-Route eine Client-Anforderung empfängt, führt sie eine Rückwärtsabfrage (Round-Robin) aus, beginnend beim ersten Ziel in der Zielliste. Die erste Anforderung wird an das erste Ziel weitergeleitet, die zweite Anforderung wird an das zweite Ziel weitergeleitet und die nächste Anforderung wird nach der Weiterleitung an das letzte Ziel an das erste Ziel weitergeleitet. Wenn das erste Ziel nicht verfügbar ist, prüft der Router nacheinander das nächste Ziel, bis das Ziel verfügbar ist. Wenn alle Ziele nicht verfügbar sind, wird MySQL Router unterbrochen.
  • Diese nicht verfügbaren Ziele werden vorübergehend isoliert und MySQL Router überprüft ständig ihren Status und fügt sie der Zielliste erneut hinzu, wenn sie wieder verfügbar sind.

(4). connect_timeout

  • Das Timeout für den MySQL Router, um Ziele zu kontaktieren. Der Standardwert beträgt 1 Sekunde. Der Wertebereich liegt zwischen 1 und 65536. Versuchen Sie den Wert möglichst klein einzustellen, um zu lange Wartezeiten zu vermeiden.
  • Für den Lese-/Schreibmodus können Sie die Zeitüberschreitung etwas länger einstellen, um zu verhindern, dass der Backup-Master kontaktiert wird, weil der primäre Master vermutlich nicht verfügbar ist.
  • Für den Nur-Lese-Modus kann die Zeitüberschreitung etwas kürzer eingestellt werden, da in diesem Modus die Zielliste abgefragt wird und selbst wenn eine Fehleinschätzung auftritt, die Auswirkungen nicht allzu groß sind.

(5) Weitere Optionen

Sie können auch einige andere Anweisungen festlegen, z. B. das verwendete Protokoll, die maximale Anzahl von Anforderungen usw., aber Sie müssen nicht die Standardwerte festlegen. Dies sind alles Optionen, die MySQL Router in Kombination mit MySQL optimiert hat, und sie sind an sich bereits perfekt.

Die Konfigurationsdatei enthält ungefähr diesen Inhalt. Denken Sie nach der Konfiguration daran, zuerst die im Standardsegment enthaltenen Verzeichnisse zu erstellen. Danach können Sie den MySQL-Router starten, um Lese-/Schreibtrennungsdienste bereitzustellen.

4. SysV-Skripte für MySQL Router bereitstellen

MySQL Router stellt nur ein Hauptprogramm bereit (mysqlrouter im Bin-Verzeichnis) und das Programm kann nur ohne Stoppoption gestartet werden, sodass Sie den Prozess nur mit dem Kill-Befehl beenden können.

MySQL Router bietet auch ein Beispiel-Startskript, das sich unter $basedir/share/doc/mysqlrouter/sample_mysqlrouter.init befindet. Dieses Skript basiert jedoch auf der Debian-Plattform und erfordert einige Einstellungen und die Installation unter CentOS. Verwenden Sie es daher nicht und schreiben Sie einfach selbst ein grobes Skript.

Shell> vim /etc/init.d/mysqlrouter
#!/bin/bash

# chkconfig: -78 30
# Beschreibung: MySQL Router starten/stoppen

DAEMON=/usr/local/mysqlrouter
proc=$DAEMON/bin/mysqlrouter
DAEMON_OPTIONS="-c ${DAEMON}/mysqlrouter.conf"

. /etc/init.d/Funktionen

Start() {
    wenn [ -e /var/lock/subsys/mysqlrouter ]; dann
        Aktion "MySQL Router funktioniert" /bin/false
    anders
        $proc $DAEMON_OPTIONS & &>/dev/null
        retval=$?
        Echo
    wenn [ $retval -eq 0 ]; dann
             berühren Sie /var/lock/subsys/mysqlrouter
        Aktion "MySQL Router starten" /bin/true
        anders
        echo "Fehler beim Starten des MySQL-Routers"
        fi
    fi
}
    
stoppen() {
    wenn [ -e /var/lock/subsys/mysqlrouter ]; dann
        killall $proc
        retval=$?
        Echo
        wenn [ $retval -eq 0 ]; dann
            rm -f /var/lock/subsys/mysqlrouter
            Aktion "MySQL Router stoppen" /bin/true
        fi
    anders
        Aktion "MySQL Router funktioniert nicht" /bin/false
    fi
}

status() {
    wenn [ -e /var/lock/subsys/mysqlrouter ]; dann
        echo "MySQL-Router läuft"
    anders
        echo "MySQL-Router läuft nicht"
    fi
}

Fall "$1" in
    Start)
        Start
        Schlaf 1
        ;;
     stoppen)
        stoppen
        Schlaf 1
        ;;
    Neustart)
        stoppen
        Start
        Schlaf 1
        ;;
    Status)
        Status
        ;;
    *)
        echo "Verwendung: $0 {start|stop|status|restart}"
        retval=1
        ;;
esac

beenden $retval

Erteilen Sie dann Ausführungsberechtigungen.

Shell> chmod +x /etc/init.d/mysqlrouter

Dies ist das Ende dieses Artikels über die Implementierung der Lese-/Schreibtrennung von MySQL mit MySQL Router. Weitere Informationen zur Lese-/Schreibtrennung von MySQL Router finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

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)
  • Verwenden von PHP zum Implementieren der Lese-/Schreibtrennung in MySQL
  • 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
  • Springboot implementiert Lese-/Schreibtrennung basierend auf Mybatis MySQL
  • MySQL5.6 Replikations-Master-Slave-Replikation (Lese-/Schreibtrennung) Konfiguration vollständige Version
  • Beispiel für die Verwendung von mycat zur Implementierung der Lese-/Schreibtrennung in MySQL-Datenbanken

<<:  Problem mit der Iframe-QRC-Zuweisung (serverseitig)

>>:  Detaillierte Erklärung des Abstandsproblems zwischen IMG-Tags

Artikel empfehlen

MySQL extrahiert interne JSON-Felder und gibt sie als Zahlen aus.

Inhaltsverzeichnis Hintergrund Problemanalyse 1. ...

3 Möglichkeiten zum Hinzufügen von Links zu HTML-Auswahl-Tags

Der Erste : Code kopieren Der Code lautet wie folg...

Vue + Element dynamische Mehrfachheader und dynamische Slots

Inhaltsverzeichnis 1. Nachfrage 2. Wirkung 3. All...

Installieren Sie ein CentOS-System basierend auf WindowsX Hyper-V

Derzeit nutzen die meisten Linux-Benutzer entwede...

MySQL-Abfragebaumstrukturmethode

Inhaltsverzeichnis MySQL-Abfragebaumstruktur 1. Ü...

So legen Sie die Anzahl der MySQL-Verbindungen fest (zu viele Verbindungen)

Während der Verwendung von MySQL wurde festgestel...

7 Fähigkeiten, die Webdesigner haben müssen

Webdesign ist sowohl eine Wissenschaft als auch e...

Mysql löst das N+1-Abfrageproblem der Datenbank

Einführung In Orm-Frameworks wie Hibernate und My...

Vue implementiert die Frage-Antwort-Funktion

1. Schnittstelle für die Anforderung einer Antwor...

Fragen und Antworten: Unterschiede zwischen XML und HTML

F: Ich weiß nicht, was der Unterschied zwischen XM...

Natives JS zur Implementierung der Formularvalidierungsfunktion

Inhaltsverzeichnis Bei der Entwicklung kann eine ...

Lösung für vergessenes Linux MySQL-Root-Passwort

Wenn Sie sich bei der Verwendung der MySQL-Datenb...

js zum Hochladen von Bildern auf den Server

In diesem Artikelbeispiel wird der spezifische Co...

N Möglichkeiten, mit CSS ein zweispaltiges Layout zu erreichen

1. Was ist ein zweispaltiges Layout? Es gibt zwei...