Eine kurze Einführung in die MySQL MyCat-Middleware

Eine kurze Einführung in die 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. Laden Sie mycat herunter

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:

  • balance="0", der Lese-/Schreibtrennungsmechanismus ist nicht aktiviert und alle Lesevorgänge werden an den aktuell verfügbaren Schreibhost gesendet.
  • 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.
  • Balance = "2", alle Lesevorgänge werden zufällig auf WriteHost und Readhost verteilt.
  • 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:

  • writeType="0", alle Schreibvorgänge werden an den ersten konfigurierten writeHost gesendet. Wenn der erste writeHost ausfällt, wird auf den zweiten writeHost umgeschaltet, der noch aktiv ist. Nach dem Neustart wird der zweite umgeschaltete writeHost verwendet. Der Wechsel wird in der Konfigurationsdatei dnindex.properties aufgezeichnet.
  • writeType="1", alle Schreibvorgänge werden zufällig an den konfigurierten writeHost gesendet.
  • writeType="2", nicht implementiert.

Spezifische Parameter

3. Konfigurieren Sie den Master-Slave-Server

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 tatsächliche Benutzerverbindung

Stellen Sie sicher, 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 start Starten./mycat stop Stoppen./mycat console Im Vordergrund ausführen./mycat restart Dienst neu starten./mycat pause Pause./mycat status Startstatus prüfen

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 Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Installation und Verwendung der MySQL MyCat-Middleware
  • 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

<<:  Ein einfaches Beispiel für die Verwendung von Vue3-Routing VueRouter4

>>:  Detaillierte Konfigurationsschritte zur Installation von Linux (CentOS) unter einer virtuellen VMware-Maschine

Artikel empfehlen

Beispiel für reines CSS zum Ändern des Bildlaufleistenstils des Browsers

Verwenden Sie CSS, um den Stil der Bildlaufleiste...

So implementieren Sie die Vue-Bindungsklasse und den Inline-Bindungsstil

Inhaltsverzeichnis Bindungsklasse Inline-Stile bi...

Die Prinzipien und Mängel der MySQL-Volltextindizierung

Der MySQL-Volltextindex ist ein spezieller Index,...

Analyse des Parameterübertragungsprozesses des Treibermoduls in Linux

Deklarieren Sie den Parameternamen, den Typ und d...

Detaillierte Erklärung, wann Javascript-Skripte ausgeführt werden

JavaScript-Skripte können überall in HTML eingebe...

Beispiel für eine Routing-Berechtigungsverwaltungsmethode in Vue2/vue3

1. Es gibt im Allgemeinen zwei Methoden zur Steue...

Allgemeine Betriebsbefehle von MySQL im Linux-System

Aufschlag: # chkconfig --list Alle Systemdienste ...

Eine kurze Einführung in Linux-Umgebungsvariablendateien

Im Linux-System können Umgebungsvariablen entspre...

Vue-Grundlagen-Tutorial: Bedingtes Rendering und Listen-Rendering

Inhaltsverzeichnis Vorwort 1.1 Funktion 1.2 So st...

JavaScript-OffsetParent-Fallstudie

1. Definition von offsetParent: offsetParent ist ...