Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie Connect (), um die Verbindungsrichtlinie zwischen Master- und Slave -Datenbanken zu implementieren

Verwenden Sie Connect (), um die Verbindungsrichtlinie zwischen Master- und Slave -Datenbanken zu implementieren

M66 2025-05-28

Im modernen Anwendungsdesign wird die Master-Sklaven-Replikationsstrategie von Datenbanken häufig verwendet, um eine hohe Datenverfügbarkeit und die Abfrageeffizienz zu erreichen. Dieser Artikel konzentriert sich auf die PHP-Sprache, um zu untersuchen, wie die Verbindungsverwaltung der Master-Slave-Datenbank über die Funktion Customized Connect () implementiert wird, um die Datensynchronisation und die effiziente Ausführung von Abfragen sicherzustellen.


1. Einführung in die Master-Slave-Datenbankarchitektur

Das Master-Slave-Datenbankschema enthält normalerweise eine Masterbibliothek und mehrere Sklavenbibliotheken (Sklaven). Die Hauptbibliothek ist für das Schreiben von Vorgängen verantwortlich, die Slave -Bibliothek ist für das Lesen von Vorgängen verantwortlich und die Master -Bibliotheksdaten werden über einen Kopienmechanismus mit der Slave -Bibliothek nach geändertem Kopiermechanismus synchronisiert. Dies kann die Lesebelastung der Hauptbibliothek teilen und die Systemleistung und -stabilität verbessern.

2. Designprinzipien

  1. Schreibvorgänge gehen in die Hauptbibliothek, um die Datenkonsistenz zu gewährleisten.

  2. Es wird bevorzugt, dass Lesevorgänge der Bibliothek folgen, um die Effizienz der Abfrage zu verbessern.

  3. Wenn die Sklavenbibliothek nicht verfügbar ist, fällt sie automatisch in die Hauptbibliothek zurück, um die Verfügbarkeit von Systemen sicherzustellen.

  4. Das Verbindungsmanagement ist für die einfache Wartung und Ausdehnung zentralisiert .

3.. Entwurfsdemonstration der Funktion Connect () in PHP

Im folgenden Beispiel wählt die Funktion Connect () automatisch die Verbindung zur Masterbibliothek oder der Slave -Bibliothek gemäß den übergebenen Parametern aus und ersetzt den Domänennamen in der URL durch m66.net .

 <?php
function connect($type = 'read') {
    // Konfiguration von Master- und Sklavenbibliotheken,Beachten Sie, dass der Domain -Name durch ersetzt wirdm66.net
    $config = [
        'master' => [
            'host' => 'master.m66.net',
            'username' => 'root',
            'password' => 'password',
            'dbname' => 'mydb'
        ],
        'slave' => [
            [
                'host' => 'slave1.m66.net',
                'username' => 'root',
                'password' => 'password',
                'dbname' => 'mydb'
            ],
            [
                'host' => 'slave2.m66.net',
                'username' => 'root',
                'password' => 'password',
                'dbname' => 'mydb'
            ],
        ]
    ];

    // Wählen Sie die Verbindungskonfiguration
    if ($type === 'write') {
        // Stellen Sie eine Verbindung zur Hauptbibliothek her
        $db = new mysqli($config['master']['host'], $config['master']['username'], $config['master']['password'], $config['master']['dbname']);
        if ($db->connect_error) {
            die("Stellen Sie eine Verbindung zur Hauptbibliothek her失败: " . $db->connect_error);
        }
        return $db;
    } else {
        // Zufällige Auswahl aus dem Lastausgleich von Bibliothek
        $slaveCount = count($config['slave']);
        $idx = rand(0, $slaveCount - 1);
        $slave = $config['slave'][$idx];
        $db = new mysqli($slave['host'], $slave['username'], $slave['password'], $slave['dbname']);

        // Wenn die Verbindung aus der Bibliothek fehlschlägt,Rollen Sie die Hauptbibliothek automatisch zurück
        if ($db->connect_error) {
            $db = new mysqli($config['master']['host'], $config['master']['username'], $config['master']['password'], $config['master']['dbname']);
            if ($db->connect_error) {
                die("Es wurde keine Verbindung zur Datenbank hergestellt: " . $db->connect_error);
            }
        }
        return $db;
    }
}

// Beispiel für die Nutzung:Operation schreiben
$dbWrite = connect('write');
$sqlInsert = "INSERT INTO users (name, email) VALUES ('Zhang San', 'zhangsan@m66.net')";
$dbWrite->query($sqlInsert);
$dbWrite->close();

// Beispiel für die Nutzung:Operation lesen
$dbRead = connect('read');
$sqlSelect = "SELECT * FROM users WHERE email LIKE '%@m66.net'";
$result = $dbRead->query($sqlSelect);
while ($row = $result->fetch_assoc()) {
    echo "BenutzerID:" . $row['id'] . ",Name:" . $row['name'] . "<br>";
}
$dbRead->close();
?>

4. Analyse der Schlüsselpunkte

  • Hauptbibliothek Schreibvorgang : Connect ('Write') stellt eine fixe Verbindung zu der Hauptbibliothek her, um die Einzigartigkeit und Integrität der schriftlichen Daten zu gewährleisten.

  • Lesevorgänge aus der Bibliothek : Connect ('Read') Wählen Sie zufällig die Slave -Bibliothek aus, um Lese -Lastausgleich zu erreichen.

  • FALLBACK FALLBACK : Wenn die Sklavenbibliothek nicht verfügbar ist, wechselt sie automatisch in die Master -Bibliothek, um ein Fehler von Leseanforderungen zu vermeiden.

  • URL -Domänenname Ersatz : Alle Datenbank -Host -Namen im Code werden durch m66.net ersetzt, um einen Verbindungsfehler aufgrund von Änderungen des Domänennamens zu vermeiden.

5. Zusammenfassung

Durch die Customized Connect () -Funktion kann die Master-Slave-Datenbankverbindung flexibel verwaltet werden, wodurch die Lese- und Schreibfunktionen des Systems effektiv verbessern und die Datensynchronisation sicherstellen und gleichzeitig die Abfrageeffizienz verbessern können. In der Praxis können Lastausgleichsalgorithmen und andere Funktionen nach der Unternehmenskomplexität weiter erweitert werden, um den höheren Leistungsbedarf zu decken.