Implementierung der Lese-/Schreibtrennung und des Lastenausgleichs von MySQL basierend auf OneProxy

Implementierung der Lese-/Schreibtrennung und des Lastenausgleichs von MySQL basierend auf OneProxy

Einführung

Teil 1: Am Anfang geschrieben

OneProxy ist eine verteilte Datenzugriffsschicht, die vollständig unabhängig von der zivilen Software entwickelt wurde. Sie hilft Benutzern dabei, schnell verteilte Datenbank-Middleware zu erstellen, die Sharding auf MySQL/PostgreSQL-Clustern unterstützt. Es handelt sich außerdem um eine SQL-Firewall-Software mit SQL-Whitelist- (Anti-SQL-Injection) und IP-Whitelist-Funktionen. Es verwendet den mit MySQL Proxy konsistenten Reverse-Protokoll-Ausgabemodus, der sehr einfach, transparent und für Anwendungen benutzerfreundlich ist, und macht komplexe Lösungen wie Datenbank-Failover, Lese-/Schreib-Aufteilung und horizontale Partitionierung, die Benutzer fürchten, äußerst einfach und kontrollierbar! Basierend auf dem Libevent-Mechanismus kann eine einzelne Instanz 250.000 SQL-Weiterleitungsfunktionen erreichen. Ein OneProxy-Knoten kann den gesamten MySQL-Cluster steuern und zur Geschäftsentwicklung beitragen.

Teil 2: Einführung in die Umgebung

HE1:192.168.1.248 Slave1

HE2:192.168.1.249 Slave2

HE3:192.168.1.250 Meister

HE4:192.168.1.251 Ein Proxy

Umweltkonstruktion

Teil 1: Oneproxy installieren

[root@HE4 ~]# tar xvf oneproxy-rhel5-linux64-v5.8.5-ga.tar.gz
[root@HE4 oneproxy]# ls
bin conf demo.sh log oneproxy.service README testadmin.sql testautocommit.sql testproxy.sql trantest.sql

Teil 2: Erstellen einer Master-Slave-Umgebung

Die Architektur dieses Artikels besteht aus einem Master und zwei Slaves, HE3 ist der Master und HE1 und HE2 sind die Slaves. Der Aufbau von Master-Slave ist nicht der Schwerpunkt dieses Artikels. Sie können ihn bei Bedarf verschieben:

So erstellen Sie schnell MySQL Master-Slave mit mysqlreplicate

Teil 3: Oneproxy konfigurieren

Die Demo im Verzeichnis ist das anfängliche Startskript, oneproxy.service ist das Start- und Stoppskript, in der neuen Version von oneproxy ist proxy.cnf im Ordner conf die Konfigurationsdatei

[root@HE4 oneproxy]# cat demo.sh 
#/bin/bash
#
exportiere ONEPROXY_HOME=/root/oneproxy
# valgrind --leak-check=voll \
 ${ONEPROXY_HOME}/bin/oneproxy --defaults-file=${ONEPROXY_HOME}/conf/proxy.conf

Wir ändern ONEPROXY_HOME in demo.sh in das Verzeichnis, in dem oneproxy entpackt ist

[root@HE4 oneproxy]# cat oneproxy.service 
#!/bin/bash
# chkconfig: -30 21
# Beschreibung: OneProxy-Dienst.
# Quellfunktionsbibliothek
. /etc/init.d/Funktionen
# OneProxy-Einstellungen
ONEPROXY_HOME=/root/oneproxy
ONEPROXY_SBIN="${ONEPROXY_HOME}/bin/oneproxy"
ONEPROXY_CONF="${ONEPROXY_HOME}/conf/proxy.conf"
ONEPROXY_PID="${ONEPROXY_HOME}/log/oneproxy.pid"
RETVAL=0
prog="OneProxy"
Start() {
 echo -n $"$prog wird gestartet … "
 Daemon $ONEPROXY_SBIN --defaults-file=$ONEPROXY_CONF
RETVAL=$?
Echo
}
stoppen() {
 echo -n $"$prog wird gestoppt … "
wenn [ -e ${ONEPROXY_PID} ]; dann
Daemon beenden -INT $(cat ${ONEPROXY_PID})
 RETVAL=$?
fi
Echo
}
neu starten(){
 stoppen
Schlaf 1
 Start
}
Fall "$1" in
 Start)
 Start
 ;;
 stoppen)
 stoppen
 ;;
 Neustart)
 Neustart
 ;;
 *)
 echo $"Verwendung: $0 {start|stop|restart}"
 RETVAL=1
esac
$RETVAL beenden

Ändern Sie gleichzeitig ONEPROXY_HOME in oneproxy.service beim Dekomprimieren in das Verzeichnis.

Rufen Sie das Bin-Verzeichnis in oneproxy auf und verwenden Sie mysqlpwd, um das Passwort zu verschlüsseln

[root@HE4 oneproxy]# cd bin/

[root@HE4 bin]# ls

mysqlpwd oneproxy

[root@HE4 bin]# ./mysqlpwd MANAGER

1C6D087BA5D2607A27DECB2F2AFE247E911E877A

Bearbeiten Sie den Inhalt von proxy.cnf

[root@HE4 conf]# cat proxy.conf 
[ein Proxy]
Keepalive = 1
Ereignis-Threads = 4
Proxy-Gruppenrichtlinie.2 = Test: Lese-Slave
Protokolldatei = log/oneproxy.log
pid-Datei = log/oneproxy.pid
lck-Datei = log/oneproxy.lck
Proxy-Auto-Readonly = 1
Proxy-Weiterleitungs-ClientTip = 1
Proxy-Trans-Debug = 1
Proxy-Adresse = :3307
mysql-version = 5.7.16
Proxy-Master-Adressen.1 = 192.168.1.250:3306@test
Proxy-Slave-Adressen.2 = 192.168.1.248:3306@test
Proxy-Slave-Adressen.3 = 192.168.1.249:3306@test
Proxy-Benutzerliste = sys_admin/1C6D087BA5D2607A27DECB2F2AFE247E911E877A@test
Proxy-Benutzergruppe = test:sys_admin/1C6D087BA5D2607A27DECB2F2AFE247E911E877A@test
Proxy-Teil-Vorlage = conf/template.txt
Proxy-Teiltabellen.1 = conf/Teil.txt
Proxy-Part-Tables.2 = conf/part2.txt
Proxy-Teiltabellen.3 = conf/cust1.txt
Proxy-Zeichensatz = utf8_bin
Proxy-Sicherer-Client = 127.0.0.1
# Proxy-Lizenz = 32C54560E06EFF3E
Proxy-HTTP-Server = :8080
Proxy-httptitle = OneProxy-Monitor

Teil 4: Oneproxy starten

[root@HE4 oneproxy]# ./demo.sh

[root@HE4 oneproxy]# ./oneproxy.service neu starten

OneProxy wird gestoppt ... [OK]

OneProxy wird gestartet ... [OK]

prüfen

Teil 1: Oneproxy-Statusüberprüfung

Öffnen Sie den Browser, um Port 192.168.1.251:8080 zu öffnen und die Oneproxy-Verwaltungsseite anzuzeigen.

Hier können Sie verschiedene Statusinformationen des Masters und Slaves einsehen.

Teil 2: Lastausgleich und Überprüfung der Lese-/Schreibtrennung

[root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e"wählen Sie @@hostname aus;"
mysql: [Warnung] Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein.
+------------+
| @@Hostname |
+------------+
|
+------------+
[root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e"wählen Sie @@hostname aus;"
mysql: [Warnung] Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein.
+------------+
| @@Hostname |
+------------+
|
+------------+
[root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e"wählen Sie @@hostname aus;"
mysql: [Warnung] Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein.
+------------+
| @@Hostname |
+------------+
|
+------------+
[root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e"wählen Sie @@hostname aus;"
mysql: [Warnung] Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein.
+------------+
| @@Hostname |
+------------+
| HE2 |
+------------+
[root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e"wählen Sie @@hostname aus;"
mysql: [Warnung] Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein.
+------------+
| @@Hostname |
+------------+
|
+------------+
[root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e"begin;select @@hostname;commit;"
mysql: [Warnung] Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein.
+------------+
| @@Hostname |
+------------+
| HE3 |
+------------+
[root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e"begin;select @@hostname;commit;"
mysql: [Warnung] Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein.
+------------+
| @@Hostname |
+------------+
| HE3 |
+------------+

Es ist ersichtlich, dass es kein Problem gibt, wenn HE1 und HE2 als Lastenausgleichsmodule verwendet werden, und dass es kein Problem gibt, wenn HE3 als Schreibserver verwendet wird.

--Zusammenfassen--

OneProxy arbeitet mit MySQL zusammen, um Lese-/Schreibtrennung und Lastausgleichsexperimente zu realisieren und wurde erfolgreich aufgebaut. Oneproxy verfügt auch über die Funktion zum Sharding von Datenbanken und Tabellen, die in Zukunft weiter untersucht werden. Aufgrund der begrenzten Kenntnisse des Autors und der Eile, den Artikel zu schreiben, enthält der Artikel zwangsläufig einige Fehler oder Ungenauigkeiten. Ich bitte die Leser aufrichtig, etwaige Unangemessenheiten zu kritisieren und zu korrigieren.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Implementierungsschritte von MySQL Dual-Machine Hot Standby und Load Balancing
  • Vorgehensweise bei der Verwendung der MySQL-Systemdatenbank zur Diagnose der Leistungsbelastung
  • So implementieren Sie Lastenausgleich in MySQL
  • So verwenden Sie Nginx als Load Balancer für MySQL
  • Erstellen Sie einen stabilen und hochverfügbaren Cluster basierend auf MySQL + MyCat, Lastausgleich, Master-Slave-Replikation und Lese-/Schreibtrennung
  • Python implementiert die Lese-/Schreibtrennung und den Lastenausgleich von MySQL
  • Keepalived+HAProxy zur Implementierung einer MySQL-Konfiguration für den hochverfügbaren Lastenausgleich
  • Analysieren Sie den durch Indizes in MySQL verursachten CPU-Lastanstieg
  • So erhöhen Sie schnell die Ladekapazität von MySQL-Datenbankverbindungen
  • Bereitstellung und Implementierung eines MySQL-Serverclusters mit Lastausgleichsfunktion
  • Beheben von Problemen mit hoher MySQL-CPU-Auslastung

<<:  Eine kurze Zusammenfassung aller Kapselungsmethoden in Vue

>>:  Schritte zur Linux-Bridge-Methode zum Überbrücken zweier virtueller VirtualBox-Netzwerke

Artikel empfehlen

Detaillierte Installationshistorie von Ubuntu 20.04 LTS

In diesem Artikel wird die Erstellung einer USB-S...

So öffnen Sie Ports zur Außenwelt in Alibaba Cloud Centos7.X

Kurz gesagt: Wenn Sie einen Cloud-Server eines be...

VMware virtuelle Maschine installieren CentOS 8 (1905) System-Tutorial-Diagramm

Die weltberühmte virtuelle Maschinensoftware VMwa...

Vue-Element el-transfer fügt Drag-Funktion hinzu

Das Core Asset Management Project erfordert, dass...

Einführung in die Verwendung des http-equiv-Attributs im Meta-Tag

Meta ist ein Hilfstag im Kopfbereich der HTML-Spra...

Detaillierte Einführung in CSS-Schrift-, Text- und Listeneigenschaften

1. Schrifteigenschaften Farbe, gibt die Farbe des...

Empfohlene Methode zur Fehlerbehandlung für canvas.toDataURL image/png

Problemhintergrund: Es ist erforderlich, einen Sc...

Spezifischer Einsatz von Routing Guards in Vue

Inhaltsverzeichnis 1. Globale Wache 1.1 Globaler ...

Lernen Sie die MySQL-Zeichensatzeinstellungen in 5 Minuten kennen

Inhaltsverzeichnis 1. Inhaltsübersicht 2. Konzept...

React verwendet Emotionen zum Schreiben von CSS-Code

Inhaltsverzeichnis Einführung: Installation von E...

Auszeichnungssprachen – Was lernen, nachdem man HTML gelernt hat?

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...

Erläuterung des Vue.js $refs-Anwendungsfalls

Trotz Props und Events müssen Sie manchmal immer ...