Heim Datenbank MySQL-Tutorial Aufbau eines hochverfügbaren MySQL-Clusters: Best-Practice-Leitfaden für Master-Slave-Replikation und Lastausgleich

Aufbau eines hochverfügbaren MySQL-Clusters: Best-Practice-Leitfaden für Master-Slave-Replikation und Lastausgleich

Sep 09, 2023 am 10:57 AM
主从复制 负载均衡 mysql集群

Aufbau eines hochverfügbaren MySQL-Clusters: Best-Practice-Leitfaden für Master-Slave-Replikation und Lastausgleich

Aufbau eines hochverfügbaren MySQL-Clusters: Best-Practice-Leitfaden für Master-Slave-Replikation und Lastausgleich

In den letzten Jahren hat sich die Datenbank mit der rasanten Entwicklung des Internets zu einer der wichtigsten Datenspeicher- und -verarbeitungs-Engines von entwickelt die meisten Webanwendungen. In diesem Szenario sind Hochverfügbarkeit und Lastausgleich zu wichtigen Überlegungen beim Entwurf der Datenbankarchitektur geworden. Als eine der beliebtesten relationalen Open-Source-Datenbanken hat die Cluster-Bereitstellungslösung von MySQL große Aufmerksamkeit auf sich gezogen.

In diesem Artikel erfahren Sie, wie Sie einen hochverfügbaren Datenbankcluster durch MySQL-Master-Slave-Replikation und Lastausgleich implementieren. Wir stellen zunächst das Prinzip und die Konfiguration der MySQL-Master-Slave-Replikation vor und besprechen dann, wie ein Load Balancer zum Ausgleich des Datenbankzugriffsverkehrs verwendet wird.

1. Das Prinzip und die Konfiguration der MySQL-Master-Slave-Replikation

MySQL-Master-Slave-Replikation ist eine Datenbankreplikationstechnologie, die auf der Protokollübertragung basiert und diese Protokolle dann liest Ändern Sie die Slave-Datenbank, um eine Datensynchronisierung zwischen der Master-Datenbank und der Slave-Datenbank zu erreichen.

Die Konfiguration der MySQL-Master-Slave-Replikation erfordert die folgenden Schritte:

  1. Konfigurieren Sie die Master-Datenbank

Fügen Sie die folgende Konfiguration in der Konfigurationsdatei my.cnf der Master-Datenbank hinzu:

[mysqld]
server-id=1
log_bin=mysql-bin
binlog_format=ROW
Nach dem Login kopieren
  1. Erstellen Sie ein Replikationskonto und autorisieren Sie

Anmelden Gehen Sie zur Master-Datenbank, erstellen Sie ein Replikationskonto und erteilen Sie Replikationsberechtigungen:

CREATE USER 'repl'@'slaveip' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'slaveip';
FLUSH PRIVILEGES;
Nach dem Login kopieren

Ersetzen Sie slaveip durch die IP-Adresse der Slave-Datenbank und password durch das Passwort des Replikationskontos. slaveip替换为从数据库的IP地址,password替换为复制账号的密码。

  1. 启动主数据库的二进制日志

登录到主数据库的mysql命令行中,执行以下命令启动二进制日志:

mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
Nach dem Login kopieren

记录下FilePosition的值,后续在配置从数据库时会用到。

  1. 配置从数据库

在从数据库的配置文件my.cnf中增加以下配置:

[mysqld]
server-id=2
Nach dem Login kopieren

然后重启从数据库。

  1. 启动从数据库复制

在从数据库的mysql命令行中执行以下命令启动复制:

mysql> CHANGE MASTER TO MASTER_HOST='masterip', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='filename', MASTER_LOG_POS=position;
mysql> START SLAVE;
Nach dem Login kopieren

masterip替换为主数据库的IP地址,password替换为复制账号的密码,filenameposition替换为上一步中记录的值。

配置完成后,从数据库将开始与主数据库进行同步。

二、负载均衡器的选择和配置

在高可用的数据库集群中,负载均衡器发挥着至关重要的作用。它可以在多个从数据库之间均衡分发读操作的请求,从而提高系统的整体性能和可用性。

常见的MySQL负载均衡器有HAProxy、MaxScale和MySQL Router等。以HAProxy为例,下面是一个示例的配置文件:

global
    maxconn 4096

defaults
    mode tcp
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

listen mysql-cluster
    bind 0.0.0.0:3306
    mode tcp
    balance roundrobin
    option mysql-check user haproxy_check
    server mysql-1 masterip:3306 check
    server mysql-2 slaveip:3306 check
Nach dem Login kopieren

masteripslaveip替换为主从数据库的IP地址。

配置完成后,启动HAProxy服务,即可使用HAProxy进行数据库访问的负载均衡。

三、代码示例

以下是一个简单的PHP代码示例,用于演示如何通过负载均衡器连接到MySQL数据库集群:

<?php
$host = 'load-balancer-ip';
$user = 'username';
$pass = 'password';
$db = 'database';

$conn = new mysqli($host, $user, $pass, $db);

if($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM users";
$result = $conn->query($sql);

if($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"] . " - Name: " . $row["name"] . "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();
?>
Nach dem Login kopieren

load-balancer-ip替换为负载均衡器的IP地址,usernamepassworddatabase

    Starten Sie das Binärprotokoll der Hauptdatenbank

    Melden Sie sich in der MySQL-Befehlszeile der Hauptdatenbank an und führen Sie den folgenden Befehl aus, um das Binärprotokoll zu starten:

    rrreee

    Zeichnen Sie den File und der Wert von Position werden später bei der Konfiguration der Slave-Datenbank verwendet.

      🎜Konfigurieren Sie die Slave-Datenbank🎜🎜🎜Fügen Sie die folgende Konfiguration in der Konfigurationsdatei my.cnf der Slave-Datenbank hinzu: 🎜rrreee🎜Dann starten Sie die Slave-Datenbank neu. 🎜
        🎜Replikation aus der Datenbank starten🎜🎜🎜Führen Sie den folgenden Befehl in der MySQL-Befehlszeile der Slave-Datenbank aus, um die Replikation zu starten:🎜rrreee🎜Ersetzen Sie masterip durch die IP Adresse der Master-Datenbank, ersetzen Sie password durch das Passwort des kopierten Kontos und ersetzen Sie filename und position durch die in der aufgezeichneten Werte vorherigen Schritt. 🎜🎜Nachdem die Konfiguration abgeschlossen ist, beginnt die Slave-Datenbank mit der Synchronisierung mit der Master-Datenbank. 🎜🎜2. Auswahl und Konfiguration des Load Balancers🎜🎜 In einem Hochverfügbarkeits-Datenbankcluster spielt der Load Balancer eine entscheidende Rolle. Es kann Lesevorgangsanforderungen gleichmäßig auf mehrere Slave-Datenbanken verteilen und so die Gesamtleistung und Verfügbarkeit des Systems verbessern. 🎜🎜Zu den gängigen MySQL-Load-Balancern gehören HAProxy, MaxScale und MySQL Router. Am Beispiel von HAProxy ist das Folgende eine Beispielkonfigurationsdatei: 🎜rrreee🎜Ersetzen Sie masterip und slaveip durch die IP-Adressen der Master- und Slave-Datenbanken. 🎜🎜Nachdem die Konfiguration abgeschlossen ist, starten Sie den HAProxy-Dienst und Sie können HAProxy für den Lastausgleich des Datenbankzugriffs verwenden. 🎜🎜3. Codebeispiel🎜🎜Das Folgende ist ein einfaches PHP-Codebeispiel, um zu demonstrieren, wie man über einen Load Balancer eine Verbindung zu einem MySQL-Datenbankcluster herstellt: 🎜rrreee🎜Ersetzen Sie load-balancer-ip durch Load The Die IP-Adresse des Balancers, Benutzername, Passwort und Datenbank werden durch die korrekten Datenbank-Anmeldeinformationen ersetzt. 🎜🎜Mit der obigen Konfiguration und dem Beispielcode können wir einen hochverfügbaren MySQL-Cluster implementieren und über den Load Balancer einen Lastausgleich des Datenbankzugriffs erreichen. Eine solche Architektur kann nicht nur die Verfügbarkeit und Leistung des Systems verbessern, sondern auch verschiedene Fehler und Szenarien mit hoher Parallelität besser bewältigen. 🎜🎜Zusammenfassung: 🎜🎜In diesem Artikel wird erläutert, wie Sie einen hochverfügbaren Datenbankcluster durch MySQL-Master-Slave-Replikation und Lastausgleich implementieren. Durch die Master-Slave-Replikation kann eine Datensynchronisierung zwischen der Master-Datenbank und der Slave-Datenbank erreicht werden. Über den Load Balancer können Datenbankzugriffsanforderungen gleichmäßig verteilt werden. Gleichzeitig stellen wir auch entsprechende Konfigurations- und Codebeispiele zur Verfügung, um den Lesern einen schnellen Einstieg zu erleichtern. Ich hoffe, dass dieser Artikel jedem eine Referenz und Hilfe beim Aufbau eines hochverfügbaren MySQL-Clusters bieten kann. 🎜

Das obige ist der detaillierte Inhalt vonAufbau eines hochverfügbaren MySQL-Clusters: Best-Practice-Leitfaden für Master-Slave-Replikation und Lastausgleich. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So optimieren Sie die TCP/IP-Leistung und Netzwerkleistung von Linux-Systemen So optimieren Sie die TCP/IP-Leistung und Netzwerkleistung von Linux-Systemen Nov 07, 2023 am 11:15 AM

Im Bereich moderner Computer ist das TCP/IP-Protokoll die Grundlage für die Netzwerkkommunikation. Als Open-Source-Betriebssystem ist Linux zum bevorzugten Betriebssystem geworden, das von vielen Unternehmen und Organisationen verwendet wird. Da Netzwerkanwendungen und -dienste jedoch immer wichtigere Geschäftskomponenten werden, müssen Administratoren häufig die Netzwerkleistung optimieren, um eine schnelle und zuverlässige Datenübertragung sicherzustellen. In diesem Artikel wird erläutert, wie Sie die Netzwerkübertragungsgeschwindigkeit von Linux-Systemen durch Optimierung der TCP/IP-Leistung und der Netzwerkleistung von Linux-Systemen verbessern können. In diesem Artikel wird a besprochen

Failover- und Wiederherstellungsmechanismus in der Nginx-Lastausgleichslösung Failover- und Wiederherstellungsmechanismus in der Nginx-Lastausgleichslösung Oct 15, 2023 am 11:14 AM

Einführung in den Failover- und Wiederherstellungsmechanismus in der Nginx-Lastausgleichslösung: Bei Websites mit hoher Auslastung ist die Verwendung des Lastausgleichs eines der wichtigen Mittel, um eine hohe Verfügbarkeit der Website sicherzustellen und die Leistung zu verbessern. Als leistungsstarker Open-Source-Webserver ist die Lastausgleichsfunktion von Nginx weit verbreitet. Beim Lastausgleich ist die Implementierung von Failover- und Wiederherstellungsmechanismen ein wichtiger Punkt, der berücksichtigt werden muss. In diesem Artikel werden die Failover- und Wiederherstellungsmechanismen beim Nginx-Lastausgleich vorgestellt und spezifische Codebeispiele gegeben. 1. Failover-Mechanismus

Aufbau eines hochverfügbaren Lastausgleichssystems: Best Practices für Nginx Proxy Manager Aufbau eines hochverfügbaren Lastausgleichssystems: Best Practices für Nginx Proxy Manager Sep 27, 2023 am 08:22 AM

Aufbau eines hochverfügbaren Lastausgleichssystems: Best Practices für NginxProxyManager Einführung: Bei der Entwicklung von Internetanwendungen ist das Lastausgleichssystem eine der wesentlichen Komponenten. Durch die Verteilung von Anforderungen an mehrere Server können Dienste mit hoher Parallelität und hoher Verfügbarkeit erreicht werden. NginxProxyManager ist eine häufig verwendete Lastausgleichssoftware. In diesem Artikel wird erläutert, wie Sie mit NginxProxyManager ein hochverfügbares Lastausgleichssystem erstellen und bereitstellen

Hochverfügbarkeits- und Disaster-Recovery-Lösung für die Nginx-Lastausgleichslösung Hochverfügbarkeits- und Disaster-Recovery-Lösung für die Nginx-Lastausgleichslösung Oct 15, 2023 am 11:43 AM

Hochverfügbarkeits- und Notfallwiederherstellungslösung der Nginx-Lastausgleichslösung Mit der rasanten Entwicklung des Internets ist die hohe Verfügbarkeit von Webdiensten zu einer zentralen Anforderung geworden. Um eine hohe Verfügbarkeit und Katastrophentoleranz zu erreichen, war Nginx schon immer einer der am häufigsten verwendeten und zuverlässigsten Load Balancer. In diesem Artikel stellen wir die Hochverfügbarkeits- und Disaster-Recovery-Lösungen von Nginx vor und stellen spezifische Codebeispiele bereit. Eine hohe Verfügbarkeit von Nginx wird hauptsächlich durch den Einsatz mehrerer Server erreicht. Als Load Balancer kann Nginx den Datenverkehr auf mehrere Backend-Server verteilen

Anwendung der Lastausgleichsstrategie bei der Leistungsoptimierung des Java-Frameworks Anwendung der Lastausgleichsstrategie bei der Leistungsoptimierung des Java-Frameworks May 31, 2024 pm 08:02 PM

Lastausgleichsstrategien sind in Java-Frameworks für eine effiziente Verteilung von Anforderungen von entscheidender Bedeutung. Abhängig von der Parallelitätssituation weisen verschiedene Strategien unterschiedliche Leistungen auf: Abfragemethode: Stabile Leistung bei geringer Parallelität. Gewichtete Abfragemethode: Die Leistung ähnelt der Abfragemethode bei geringer Parallelität. Methode mit der geringsten Anzahl von Verbindungen: beste Leistung bei hoher Parallelität. Zufallsmethode: einfach, aber schlechte Leistung. Konsistentes Hashing: Serverlast ausgleichen. In Kombination mit praktischen Fällen erklärt dieser Artikel, wie Sie auf der Grundlage von Leistungsdaten geeignete Strategien auswählen, um die Anwendungsleistung deutlich zu verbessern.

Dynamische Fehlererkennung und Strategie zur Lastgewichtsanpassung in der Nginx-Lastausgleichslösung Dynamische Fehlererkennung und Strategie zur Lastgewichtsanpassung in der Nginx-Lastausgleichslösung Oct 15, 2023 pm 03:54 PM

Dynamische Fehlererkennungs- und Lastgewichtsanpassungsstrategien in der Nginx-Lastausgleichslösung erfordern spezifische Codebeispiele. Einführung In Netzwerkumgebungen mit hoher Parallelität ist der Lastausgleich eine gängige Lösung, die die Verfügbarkeit und Leistung der Website effektiv verbessern kann. Nginx ist ein Open-Source-Hochleistungs-Webserver, der leistungsstarke Lastausgleichsfunktionen bietet. In diesem Artikel werden zwei wichtige Funktionen des Nginx-Lastausgleichs, die dynamische Fehlererkennung und die Strategie zur Anpassung des Lastgewichts, vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Dynamische Fehlererkennung Dynamische Fehlererkennung

Verwenden von Nginx Proxy Manager zur Implementierung einer Reverse-Proxy-Lastausgleichsstrategie Verwenden von Nginx Proxy Manager zur Implementierung einer Reverse-Proxy-Lastausgleichsstrategie Sep 26, 2023 pm 12:05 PM

Verwenden Sie NginxProxyManager, um eine Reverse-Proxy-Lastausgleichsstrategie zu implementieren. NginxProxyManager ist ein Nginx-basiertes Proxy-Verwaltungstool, das uns bei der einfachen Implementierung von Reverse-Proxy und Lastausgleich helfen kann. Durch die Konfiguration von NginxProxyManager können wir Anfragen an mehrere Backend-Server verteilen, um einen Lastausgleich zu erreichen und die Systemverfügbarkeit und -leistung zu verbessern. 1. Installieren und konfigurieren Sie NginxProxyManager

So erstellen Sie mit Workerman ein hochverfügbares Lastausgleichssystem So erstellen Sie mit Workerman ein hochverfügbares Lastausgleichssystem Nov 07, 2023 pm 01:16 PM

Für die Verwendung von Workerman zum Aufbau eines hochverfügbaren Lastausgleichssystems sind spezifische Codebeispiele erforderlich. Im Bereich der modernen Technologie müssen mit der rasanten Entwicklung des Internets immer mehr Websites und Anwendungen eine große Anzahl gleichzeitiger Anforderungen verarbeiten. Um eine hohe Verfügbarkeit und Leistung zu erreichen, ist das Lastausgleichssystem zu einer der wesentlichen Komponenten geworden. In diesem Artikel wird erläutert, wie Sie mit dem PHP-Open-Source-Framework Workerman ein Hochverfügbarkeits-Lastausgleichssystem erstellen und spezifische Codebeispiele bereitstellen. 1. Einführung in WorkermanWorke

See all articles