Installation und Verwendung der MySQL MyCat-Middleware

Installation und Verwendung der MySQL MyCat-Middleware

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
./mycat starten
./mycat stoppen
./mycat Konsolen-Frontend-Bedienung
./mycat restart Startet den Dienst neu.
./mycat pause
./mycat status Den Startstatus anzeigen

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:
  • Erstellen Sie einen stabilen und hochverfügbaren Cluster basierend auf MySQL + MyCat, Lastausgleich, Master-Slave-Replikation und Lese-/Schreibtrennung
  • Beispiel für die Verwendung von mycat zur Implementierung der Lese-/Schreibtrennung in MySQL-Datenbanken
  • Einführung in MyCat, die Datenbank-Middleware
  • Installation und Start von mycat in einer Windows-Umgebung
  • Eine kurze Einführung in die MySQL MyCat-Middleware

<<:  Einige Fallstricke beim JavaScript Deep Copy

>>:  jQuery realisiert dynamische Partikeleffekte

Artikel empfehlen

Detaillierte Erläuterung der 6 Möglichkeiten der JS-Vererbung

Vererbung von Prototypketten Die Prototypenvererb...

Eine kurze Erläuterung der $notify-Punkte des Elements

Meine ursprüngliche Absicht war, die $notify-Bena...

CSS3 erzielt verschiedene Randeffekte

Durchscheinender Rand Ergebnis: Implementierungsc...

Zusammenfassung mehrerer Situationen, in denen MySQL-Indizes fehlschlagen

1. Indizes speichern keine Nullwerte Genauer gesa...

JS ES neue Funktionen Vorlagenzeichenfolge

Inhaltsverzeichnis 1. Was ist eine Vorlagenzeiche...

So legen Sie den Produktionsumgebungsmodus process.env.NODE_ENV fest

Bevor ich anfange, möchte ich betonen, dass proce...

So installieren Sie MySQL 8.0 in Docker

Umgebung: MacOS_Cetalina_10.15.1, Mysql8.0.18, Do...

Detaillierte Erklärung der React-Komponentenkommunikation

Inhaltsverzeichnis Einführung in die Komponentenk...

Übersicht über MySQL-Statistiken

MySQL führt SQL durch den Prozess der SQL-Analyse...