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
einführen Die RANGE-Partitionierung basiert auf e...
Einführung in jsvc In der Produktion sollte Tomca...
Ich habe in der Toutiao IT School einen Artikel g...
Docker virtualisiert eine Brücke auf dem Host-Rec...
Redis ist ein verteilter Cache-Dienst. Caching is...
Da ich heute nichts zu tun habe, habe ich ein paa...
Starten Sie alle gestoppten Docker-Container mit ...
Vorwort Kürzlich stieß ich bei der Arbeit auf ein...
Die Kapselung und Verwendung der Vue-Komponente z...
inline-flex ist dasselbe wie inline-block. Es ist...
Inhaltsverzeichnis 1. Anwendung und Konfiguration...
1. Was ist ein Proxyserver? Proxyserver: Wenn der...
Verwenden Sie CSS, um Bildlaufleisten zu ändern 1...
Dieser Artikel beschreibt anhand von Beispielen d...
Szenario: Nach der Installation der neuesten Vers...