So verwenden Sie Nginx als Load Balancer für MySQL

So verwenden Sie Nginx als Load Balancer für MySQL

Hinweis: Die Nginx-Version muss 1.9 oder höher sein. Beim Kompilieren von Nginx müssen Sie --with-stream hinzufügen.

wie:

./Konfigurieren --prefix=/Data/apps/nginx --mit-http_stub_status_module --mit-http_ssl_module --mit-http_realip_module --mit-http_image_filter_module --mit-stream

Beachten

1. Da MySQL standardmäßig Port 3306 verwendet, achten Sie beim Konfigurieren des Nginx TCP-Reverse-Proxys für MySQL darauf, nicht denselben Port zu verwenden, auf dem MySQL lauscht. Ich verwende beispielsweise Port 3307.

2. Stellen Sie sicher, dass der Root-Benutzer eine Remoteverbindung zu MySQL herstellen kann

Beispielsweise die MySQL-Tabelle Benutzer in der Datenbank

nginx.conf

Dieser Code wird an das Ende der Datei nginx.conf angehängt. Beachten Sie, dass er nicht innerhalb von http{} hinzugefügt werden kann.

Strom{
schließen Sie /Data/apps/nginx/conf/stream/*.conf ein;
}

stream/db.conf

Server {
listen 3307; #Beachten Sie, dass der Port nicht derselbe sein kann wie der, auf dem MySQL auf Proxy_Pass db hört.
}
Upstream-Datenbank {
Server 127.0.0.1:3306;
Server 192.168.233.1:3306;
}

Starten Sie nginx neu und prüfen Sie, ob nginx auf Port 3307 lauscht

Dann sieht der PHP-Code so aus

#Tatsächlich müssen Sie beim Erstellen eines neuen MySQLI nur die Portnummer auf die gleiche ändern, wie sie vom Nginx-Reverse-Proxy festgelegt wurde. $mysqli = new mysqli('127.0.0.1','root','root','test',3307);

Vollständiger PHP-Code

<?php
Klasse MysqlClass
{
private static $obj = NULL; //mysqlclass-Objekt public $host;
öffentliche $Datenbank;
öffentlicher $Benutzer;
öffentliches $pwd;
öffentlicher $port;
öffentliche $mysqli = NULL;
//Verhindert das Klonen von Objekten private function __clone(){}
//Externe Instanziierung verbieten private Funktion __construct($host="127.0.0.1",$database="test",$user="root",$pwd="root",$port="3307")
{
$this->host = $host;
$this->Datenbank = $Datenbank;
$this->Benutzer = $Benutzer;
$this->pwd = $pwd;
$this->port = $port;
$this->mysqli = $this->db_connect();
}
//MySQL-Verbindung abrufen, private Funktion db_connect()
{
$mysqli = neues mysqli($dieser->Host,$dieser->Benutzer,$dieses->Passwort,$diese->Datenbank,$dieser->Port);
wenn($mysqli->connect_errno)
{
printf("Verbindung fehlgeschlagen: %s\n", $mysqli->connect_errno);
Ausfahrt();
}
$mysqli->query("Namen auf utf8 festlegen");
gibt $mysqli zurück;
}
//Holen Sie sich die Datenbankinstanz öffentliche statische Funktion get_db()
{
wenn(selbst::$obj === NULL)
{
selbst::$obj = neues selbst();
}
gibt selbst zurück::$obj;
}
öffentliche Funktion db_query($sql)
{
$Ergebnis = $this->mysqli->query($sql);
$arr = [];
während ($row = $result->fetch_assoc()) {
$arr[] = $zeile;
}
$ergebnis->schließen();
$this->mysqli->close();
$arr zurückgeben;
}
öffentliche Funktion db_insert()
{
}
öffentliche Funktion db_update()
{
}
öffentliche Funktion __destruct() {
$this->mysqli->close();
}
}
$db = MysqlClass::get_db();
$r = $db->db_query("Tabellen anzeigen");
var_dump($r);

Ergebnis

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
  • Implementierung der Lese-/Schreibtrennung und des Lastenausgleichs von MySQL basierend auf OneProxy
  • 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

<<:  Lösen Sie das Problem verstümmelter chinesischer Zeichen, wenn Sie Daten von Tomcat unter Linux in MySQL einfügen

>>:  So verwenden Sie JS WebSocket zur Implementierung eines einfachen Chats

Artikel empfehlen

Zusammenfassung der praktischen Erfahrungen zu HTML-Wissenspunkten

1. Das Tabellen-Tag ist Tabelle, tr ist Zeile, td ...

Umfassendes Verständnis von HTML-Formularelementen

Wie unten dargestellt: XML/HTML-CodeInhalt in die...

So überwachen Sie mehrere JVM-Prozesse in Zabbix

1. Szenariobeschreibung: Unsere Umgebung verwende...

Natives JS zum Erzielen von Jalousie-Spezialeffekten

In diesem Artikel wird ein Jalousie-Spezialeffekt...

Geben Sie einige Tipps zur Verwendung von JavaScript-Operatoren

Inhaltsverzeichnis 1. Optionaler Verkettungsopera...

React-Implementierungsbeispiel mit Amap (react-amap)

Die PC-Version von React wurde für die Verwendung...

JS verwendet Canvas-Technologie, um Echarts-Balkendiagramme zu imitieren

Canvas ist ein neues Tag in HTML5. Sie können js ...

MySQL 5.7.17 Winx64 Installations- und Konfigurations-Tutorial

Heute habe ich die MySQL-Datenbank erneut auf mei...

Versprechenskapselung wx.request-Methode

Im vorherigen Artikel wurde die Implementierungsm...

Detaillierte Erklärung der HTML-Formularelemente (Teil 1)

HTML-Formulare werden verwendet, um verschiedene ...

So verwenden Sie JSX in Vue

Was ist JSX JSX ist eine Syntaxerweiterung von Ja...

So installieren Sie PostgreSQL und PostGIS mit yum auf CentOS7

1. Aktualisieren Sie die Yum-Quelle Die PostgreSQ...

JavaScript implementiert die H5-Goldmünzenfunktion (Beispielcode)

Heute habe ich eine Aktivität für einen roten Ums...

So konfigurieren Sie einen Pfadalias für das React-Scaffolding

Die React-Version beim Schreiben dieses Artikels ...

Einführung in gängige Befehle und Tastenkombinationen in Linux

Inhaltsverzeichnis 1 Systemeinführung 2 Systemver...