Dieser Artikel veranschaulicht anhand von Beispielen die Prinzipien und die Verwendung der MySQL-Master-Slave-Replikation und der Lese-/Schreibtrennung. Teilen Sie uns die Einzelheiten zu Ihrer Information mit: Master-Slave-ReplikationKonzept Operationen, welche die MySQL-A-Datenbank betreffen, werden nach ihrer Ausführung auf der Datenbank in das lokale Protokollsystem A geschrieben. Lösung des ProblemsSo verhindern Sie Datenverlust, Backup, Lese-/Schreibtrennung, Datenbank-Lastausgleich, hohe Verfügbarkeit Umweltkonstruktion 1. Bereiten Sie die Umgebung vor. Die IP-Adressen der beiden Windows-Betriebssysteme lauten: 172.27.185.1 (Master) und 172.27.185.2 (Slave) Server-ID = 200 log-bin=mysql-bin Relay-Log = Relay-Bin Relay-Log-Index = Relay-Bin-Index Starten Sie den MySQL-Dienst neu Server-ID = 210 replicate-do-db =itmayiedu #Datenbanksynchronisierung erforderlich Starten Sie den MySQL-Dienst neu Sklave stoppen; ändern Master zu Master_Host='172.27.185.1', Master_Benutzer='root', Master_Passwort='root'; Slave starten; Slave-Status anzeigen; Hinweise: ① Stellen Sie sicher, dass Sie sich im selben LAN befinden ② Verwenden Sie 360WiFi, um ein LAN zu erstellen ③ Schalten Sie am besten alle Firewalls aus Was ist Lese-/Schreibtrennung?In der Datenbankclusterarchitektur ist die Masterdatenbank für die Verarbeitung von Transaktionsabfragen verantwortlich, während die Slavedatenbank nur für die Verarbeitung ausgewählter Abfragen verantwortlich ist, sodass die Arbeitsteilung zwischen den beiden klar ist und die allgemeine Lese- und Schreibleistung der Datenbank verbessert. Eine weitere Funktion der Masterdatenbank besteht natürlich darin, durch Transaktionsabfragen verursachte Datenänderungen an die Slavedatenbank zu synchronisieren, was den Schreibvorgang darstellt. Vorteile der Lese-/Schreibtrennung 1) Teilen Sie den Serverdruck und verbessern Sie die Systemverarbeitungseffizienz der Maschine. Die Trennung von Lesen und Schreiben eignet sich für Szenarien, in denen das Lesen das Schreiben bei weitem überwiegt. Wenn es einen Server mit vielen Auswahlen gibt, werden Aktualisierung und Löschen durch die von diesen Auswahlen abgerufenen Daten blockiert und warten auf das Ende der Auswahl. Die Parallelitätsleistung ist nicht hoch. Master und Slave sind nur für ihre eigenen Schreib- und Lesevorgänge verantwortlich, was den Konflikt um X- und S-Sperren erheblich verringert. Master-Slave-Replikationsprinzip Hängt vom Binärlog ab, Binärlog. Unterschied zwischen Scale-Up und Scale-Out Scale Out bedeutet, dass die Anwendung horizontal erweitert werden kann. Im Allgemeinen bedeutet Scale-Out bei Rechenzentrumsanwendungen, dass die Anwendung auch beim Hinzufügen weiterer Maschinen die Ressourcen dieser Maschinen weiterhin gut nutzen kann, um ihre Effizienz zu verbessern und eine gute Skalierbarkeit zu erreichen. MeineKatzeWas ist Mycat Es handelt sich um ein verteiltes Open-Source-Datenbanksystem. Da Datenbanken jedoch im Allgemeinen über eigene Datenbank-Engines verfügen und Mycat keine eigene Datenbank-Engine besitzt, kann es im strengen Sinne nicht als vollständiges Datenbanksystem betrachtet werden. Man kann es lediglich als eine Middleware bezeichnen, die als Brücke zwischen Anwendungen und Datenbanken fungiert. Durch die Einführung der Mycat-Middleware können Programm und Datenbank effektiv entkoppelt werden. Auf diese Weise muss das Programm nur auf die Adresse der Datenbank-Middleware achten, ohne zu wissen, wie die zugrunde liegende Datenbank Dienste bereitstellt. Eine große Anzahl gängiger Datenaggregationen, Transaktionen, Datenquellenwechsel und anderer Aufgaben werden von der Middleware übernommen. Mycat-InstallationTabellenstruktur erstellen Datenbank erstellen, falls „weibo_simple“ nicht vorhanden ist; -------------------------------------- -- Tabellenstruktur für die Benutzertabelle „t_users“-- ------------------------------------ Tabelle löschen, wenn `t_users` vorhanden ist; Tabelle „t_users“ erstellen ( `user_id` varchar(64) NOT NULL COMMENT 'Registrierte Benutzer-ID', `user_email` varchar(64) NOT NULL COMMENT 'E-Mail des registrierten Benutzers', `user_password` varchar(64) NOT NULL COMMENT 'Passwort des registrierten Benutzers', `user_nikename` varchar(64) NOT NULL COMMENT 'Spitzname des registrierten Benutzers', `user_creatime` datetime NOT NULL COMMENT 'Registrierungszeit', `user_status` tinyint(1) NOT NULL COMMENT 'Verifizierungsstatus 1: verifiziert 0: nicht verifiziert', `user_deleteflag` tinyint(1) NOT NULL COMMENT 'Löschmarkierung 1: gelöscht 0: nicht gelöscht', PRIMÄRSCHLÜSSEL (`user_id`) )ENGINE=InnoDB STANDARD-CHARSET=utf8; -- ------------------------------------- -- Tabellenstruktur für die Microblog-Tabelle „t_message“-- ------------------------------------- Tabelle löschen, wenn `t_message` vorhanden ist; Tabelle „t_message“ erstellen ( `messages_id` varchar(64) NICHT NULL KOMMENTAR 'Weibo ID', `user_id` varchar(64) NOT NULL COMMENT 'Postender Benutzer', `messages_info` varchar(255) DEFAULT NULL COMMENT 'Weibo-Inhalt', `messages_time` datetime DEFAULT NULL COMMENT 'Veröffentlichungszeitpunkt', `messages_commentnum` int(12) DEFAULT NULL COMMENT 'Anzahl der Kommentare', `message_deleteflag` tinyint(1) NOT NULL COMMENT 'Löschmarkierung 1: gelöscht 0: nicht gelöscht', `message_viewnum` int(12) DEFAULT NULL COMMENT 'Anzahl der Ansichten', PRIMÄRSCHLÜSSEL (`messages_id`), SCHLÜSSEL `user_id` (`user_id`), EINSCHRÄNKUNG `t_message_ibfk_1` FREMDER SCHLÜSSEL (`user_id`) REFERENZEN `t_users` (`user_id`) )ENGINE=InnoDB STANDARD-CHARSET=utf8; Konfigurieren Sie server.xml <!-- Benutzer hinzufügen --> <Benutzername="mycat"> <property name="password">mycat</property> <Eigenschaftsname="schemas">mycat</Eigenschaft> </Benutzer> <!-- Benutzer hinzufügen --> <Benutzername="mycat_red"> <property name="password">mycat_red</property> <Eigenschaftsname="schemas">mycat</Eigenschaft> <Eigenschaftsname="readOnly">wahr</Eigenschaft> </Benutzer> Konfigurieren von schema.xml <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://org.opencloudb/"> <!-- Gleich wie der Schemaname des Benutzers in server.xml --> <schema name="mycat" checkSQLschema="true" sqlMaxLimit="100"> <table name="t_users" primaryKey="Benutzer-ID" dataNode="dn1" rule="Regel1"/> <table name="t_message" type="global" primaryKey="messages_id" dataNode="dn1" /> </schema> <dataNode name="dn1" dataHost="jdbchost" database="weibo_simple " /> <dataHost name="jdbchost" maxCon="1000" minCon="10" balance="1" Schreibtyp = "0" Datenbanktyp = "mysql" Datenbanktreiber = "native" Schaltertyp = "1" SlaveThreshold="100"> <heartbeat>Benutzer auswählen()</heartbeat> <writeHost host="hostMaster" url="172.27.185.1:3306" Benutzer="root" Passwort="root"> </writeHost> <writeHost host="hostSlave" url="172.27.185.2:3306" Benutzer="root" Passwort="root"/> </dataHost> </mycat:schema> Konfigurieren der Datei „rule.xml“ <?xml version="1.0" encoding="UTF-8"?> <!-- - - Lizenziert unter der Apache-Lizenz, Version 2.0 (die „Lizenz“); – Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Sie können eine Kopie der Lizenz unter - - http://www.apache.org/licenses/LICENSE-2.0 erhalten. - - Sofern nicht gesetzlich vorgeschrieben oder schriftlich vereinbart, Software - Die unter der Lizenz vertriebenen Produkte werden „WIE BESEHEN“ vertrieben, - OHNE GARANTIEN ODER BEDINGUNGEN JEGLICHER ART, weder ausdrücklich noch stillschweigend. - Siehe die Lizenz für die jeweilige Sprache, die Berechtigungen und Einschränkungen regelt unter der Lizenz. --> <!DOCTYPE mycat:regel SYSTEM "regel.dtd"> <mycat:rule xmlns:mycat="http://org.opencloudb/"> <tableRule name="regel1"> <Regel> <columns>Benutzer-ID</columns> <Algorithmus>Funktion1</Algorithmus> </Regel> </tableRule> <Funktionsname="func1" Klasse="org.opencloudb.route.function.AutoPartitionByLong"> <Eigenschaftsname="Kartendatei">autopartition-long.txt</Eigenschaftsname> </Funktion> </mycat:regel> Um Fehler besser zu lokalisieren, ändern Sie log4j.xml Häufig gestellte Fragen Zuweisen von Berechtigungen zu Konten Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „MySQL-Abfragekenntnisse“, „Zusammenfassung der allgemeinen MySQL-Funktionen“, „MySQL-Protokolloperationskenntnisse“, „Zusammenfassung der MySQL-Transaktionsoperationskenntnisse“, „MySQL-gespeicherte Prozedurkenntnisse“ und „Zusammenfassung der MySQL-Datenbanksperrenkenntnisse“. Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist. Das könnte Sie auch interessieren:
|
<<: Detaillierte Diskussion der Unterschiede zwischen Schleifen in JavaScript
>>: VMware vSAN - Zusammenfassung der ersten Schritte
Vorwort Die am häufigsten verwendete Datenbank in...
Inhaltsverzeichnis 1. Front-End-Führungsprozess: ...
1. Einleitung Ich möchte Selenium verwenden, um D...
Inhaltsverzeichnis 1. Übersicht der Seite 2. Infi...
Wie lösche ich Umgebungsvariablen unter Linux? Ve...
1. Verwenden Sie ein Centos-Image, um eine lokale...
Egal ob Sie Webdesigner oder UI-Designer sind, di...
1. Wenn das mobile Endgerät die Listenverschiebun...
Wie fügt man CSS in HTML ein? Es gibt drei Möglic...
1. Geben Sie den Befehl mysqld --skip-grant-table...
So schreiben Sie DROP TABLE in verschiedene Daten...
Dieser Artikel beschreibt die Bereitstellungsmeth...
Dataframe ist eine neue API, die in Spark 1.3.0 e...
Dieser Artikel dient zur Aufzeichnung der Install...
Vorwort Der Bedarf an Echtzeit-Datenbanksicherung...