1. Was ist mycat Ein vollständig Open Source-Großdatenbankcluster für die Entwicklung von Unternehmensanwendungen Eine erweiterte Datenbank, die Transaktionen und ACID unterstützt und MySQL ersetzen kann Eine Datenbank der Enterprise-Klasse, die als MySQL-Cluster betrachtet werden kann und teure Oracle-Cluster ersetzt Ein neuer SQL Server, der Memory-Cache-Technologie, NoSQL-Technologie und HDFS-Big-Data integriert Eine neue Generation von Datenbankprodukten auf Unternehmensebene, die traditionelle Datenbanken mit neuen verteilten Data Warehouses kombiniert Ein neuartiges Datenbank-Middleware-Produkt Das Obige ist die offizielle Erklärung. Tatsächlich ist es der Datenbankverbindungspool. Der MySQL-Proxy ist ebenfalls ein Verbindungspool, seine Effizienz ist jedoch sehr gering. 2. Mycat-Installation 1. Downloadadresse mycat http://dl.mycat.io/ 2. Installieren Sie mycat # tar zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/ 3. Konfigurieren Sie mycat 1. Konfigurieren Sie server.xml # vim /usr/local/mycat/conf/server.xml //Fügen Sie den folgenden Inhalt hinzu<user name="user"> //mycat-Benutzername<property name="password">user</property> //mycat-Passwort<property name="schemas">mytest</property> //Name der virtuellen mycat-Datenbank<property name="readOnly">true</property> //Nur lesbar</user> <Benutzername="tankzhang"> <property name="password">admin</property> <Eigenschaftsname="schemas">mytest</Eigenschaftsname> </Benutzer> Bitte beachten Sie, dass der Standardname der virtuellen Datenbank TESTDB lautet. Wenn testdb nicht in schema.xml konfiguriert ist, müssen Sie testdb in den Namen der virtuellen Datenbank in schema.xml ändern. Der hier definierte Benutzername und das Passwort sowie der Name der virtuellen Datenbank existieren in MySQL eigentlich nicht. 2. Konfigurieren Sie schema.xml # cat schema.xml <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="mytest" checkSQLschema="false" sqlMaxLimit="100" dataNode="my1" />//Definieren Sie den Namen der virtuellen Datenbank mytest <dataNode name="my1" dataHost="test1" database="test" /> //Der eigentliche Datenbankname ist test <dataHost name="test1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" > <heartbeat>Benutzer auswählen()</heartbeat> <writeHost host="hostM1" url="192.168.5.213:3306" user="tank" password="123456" > //Echte Datenbankverbindungsmethode <readHost host="hostS1" url="192.168.5.214:3306" user="tank" password="123456" /> //Dasselbe wie oben</writeHost> </dataHost> </mycat:schema> Es gibt ziemlich viele Mycat-Konfigurationsparameter. Konzentrieren Sie sich auf balance="1" und writeType="0" a. Balance-Attribut für den Lastausgleichstyp, derzeit gibt es 4 Werte: 1. balance="0", der Lese-/Schreibtrennungsmechanismus ist nicht aktiviert und alle Lesevorgänge werden an den aktuell verfügbaren Schreibhost gesendet. 2. Balance = "1", alle ReadHosts und Standby-WriteHosts nehmen am Lastausgleich der Select-Anweisung teil. Einfach ausgedrückt, im Dual-Master- und Dual-Slave-Modus (M1 -> S1, M2 -> S2 und M1 und M2 sind gegenseitig Master und Slave) nehmen unter normalen Umständen M2, S1 und S2 alle am Lastausgleich der Select-Anweisung teil. 3. balance="2", alle Lesevorgänge werden zufällig auf WriteHost und Readhost verteilt. 4. Balance = "3", alle Leseanforderungen werden zur Ausführung zufällig auf den dem WriterHost entsprechenden Readhost verteilt, und der WriterHost trägt keinen Lesedruck. Beachten Sie, dass Balance = 3 nur in 1.4 und späteren Versionen verfügbar ist, nicht in 1.3. b. writeType-Attribut Lastausgleichstyp. Derzeit gibt es 3 Werte: 1. writeType="0", alle Schreibvorgänge werden an den ersten konfigurierten writeHost gesendet. Wenn der erste fehlschlägt, wird auf den zweiten umgeschaltet, der noch aktiv ist. writeHost, nach dem Neustart hat der umgeschaltete Host Vorrang und der Wechsel wird in der Konfigurationsdatei aufgezeichnet: dnindex.properties. 2. writeType="1", alle Schreibvorgänge werden zufällig an den konfigurierten writeHost gesendet. 3. writeType="2", nicht implementiert. Spezifische Parameter: http://mycat.io/document/Mycat_V1.6.0.pdf 3. Konfigurieren Sie den Master-Slave-Server. Ich werde hier nicht näher darauf eingehen. Es gibt einen Blog-Beitrag dazu. 4. Echte Benutzer hinzufügen gewähre tank@"192.168.%", identifiziert durch „123456", alle Privilegien bei test.*; Flush-Berechtigungen Fügen Sie Benutzer auf den Maschinen 213 und 214 hinzu. 5. Testen Sie die echte Benutzerverbindung, um sicherzustellen, dass der in schema.xml konfigurierte echte Benutzer eine Verbindung zur echten Datenbank herstellen kann. Achten Sie auf Firewalls. Viertens starten Sie mycat 1. Gemeinsame Parameter 2. Starten und betrachten Sie mycat # ./mycat starten Mycat-Server wird gestartet ... # netstat -tpnl |grep 8066 tcp 0 0 :::8066 :::* LISTEN 31728/java # ./mycat-Status Mycat-Server läuft (31726). 5. Testen Sie die Lese-/Schreibtrennung # mysql -u tankzhang -p -P 8066 -h 127.0.0.1 // Achten Sie darauf, 127.0.0.1 einzuschließen Passwort eingeben: Willkommen beim MySQL-Monitor. Befehle enden mit ; oder \g. Ihre MySQL-Verbindungs-ID ist 1 Serverversion: 5.6.29-mycat-1.6-RELEASE-20161028204710 MyCat Server (OpenCloundDB) Copyright (c) 2000, 2016, Oracle und/oder seine Tochtergesellschaften. Alle Rechte vorbehalten. Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer Tochtergesellschaften. Andere Namen können Marken ihrer jeweiligen Eigentümer. Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen. mysql> Datenbanken anzeigen; +----------+ | DATENBANK | +----------+ | mytest | //Virtuelle Datenbank+----------+ 1 Zeile im Satz (0,00 Sek.) mysql> verwende mytest; Einlesen von Tabelleninformationen zur Vervollständigung von Tabellen- und Spaltennamen Sie können diese Funktion deaktivieren, um einen schnelleren Start mit -A zu erhalten mysql> Tabelle erstellen, wenn nicht vorhanden `Benutzer` ( -> `id` int(11) unsigniert NICHT NULL STANDARD '0' KOMMENTAR 'ID', -> `name` varchar(20) NICHT NULL STANDARD '' KOMMENTAR 'Name', -> `create_time` int(10) NOT NULL DEFAULT '0' COMMENT 'Erstellungszeit', -> PRIMÄRSCHLÜSSEL (`id`) ->) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; Abfrage OK, 0 Zeilen betroffen (0,08 Sek.) Datenbank geändert mysql> Tabellen anzeigen; +----------------+ | Tabellen_im_Test | +----------------+ | Benutzer | +----------------+ 1 Zeile im Satz (0,01 Sek.) mysql> INSERT INTO `Benutzer` (`id`, `name`) VALUES ('1', 'tank'); Abfrage OK, 1 Zeile betroffen (0,00 Sek.) mysql> select * from user; // Ändern Sie den Namen in der Benutzertabelle der Slave-Datenbank, und Sie werden feststellen, dass der Lesevorgang aus der Slave-Datenbank erfolgt +----+-----------+-------------+ | ID | Name | Erstellungszeit | +----+-----------+-------------+ | 1 | 0 | +----+-----------+-------------+ 1 Zeile im Satz (0,01 Sek.) VI. Zusammenfassung mycat unterstützt MySQL-Tabellenpartitionierung, Sharding usw., wird jedoch nicht empfohlen. Mycat unterstützt nicht viele Cluster, daher wäre es toll, wenn es mit mha verwendet werden könnte. Das könnte Sie auch interessieren:
|
<<: Einige Fallstricke beim JavaScript Deep Copy
>>: jQuery realisiert dynamische Partikeleffekte
Vererbung von Prototypketten Die Prototypenvererb...
Meine ursprüngliche Absicht war, die $notify-Bena...
Verwenden Sie gespeicherte Prozeduren, um Transak...
Durchscheinender Rand Ergebnis: Implementierungsc...
1. Indizes speichern keine Nullwerte Genauer gesa...
Hintergrund In der Gruppe werden einige Studieren...
Inhaltsverzeichnis 1. Was ist eine Vorlagenzeiche...
Sie können eine Funktion schreiben: Verwenden Sie...
Hintergrund Bevor wir mit dem Artikel beginnen, w...
Bevor ich anfange, möchte ich betonen, dass proce...
1. Quellcode entwerfen Code kopieren Der Code laut...
In diesem Artikel werden anhand von Beispielen di...
Umgebung: MacOS_Cetalina_10.15.1, Mysql8.0.18, Do...
Inhaltsverzeichnis Einführung in die Komponentenk...
MySQL führt SQL durch den Prozess der SQL-Analyse...