MyCAT ist MySQLMiddleware, früher bekannt als Alibabas berühmtes Cobar. Nachdem Cobar eine Zeit lang Open Source war, wurde es eingestellt. Also hat MyCAT dieses Banner übernommen und im Zeitalter von Big Data wird seine Bedeutung immer deutlicher. In diesem Artikel geht es hauptsächlich um die Einführung in die Bereitstellung von MyCAT.
1. Was ist mycat
Ein vollständig quelloffener, großer Datenbankcluster für die Entwicklung von Unternehmensanwendungen
Unterstützt Transaktionen, ACID und kann MySQL ersetzen Eine erweiterte Version der Datenbank
Eine Datenbank auf Unternehmensebene, die als MySQL-Cluster betrachtet werden kann, um den teuren Oracle-Cluster zu ersetzen
Eine Fusionsspeicher- Cache--Technologie, NoSQL Technologie, HDFS Neuer SQL Server für Big Data
Eine neue Generation von Datenbankprodukten auf Unternehmensebene, die traditionelle Datenbanken und neue verteilte Data Warehouses kombiniert
Ein neuartiges Datenbank-Middleware-Produkt
Das Obige ist eine offizielle Illustration. Tatsächlich handelt es sich um den Verbindungspool der Datenbank. Der MySQL-Proxy ist ebenfalls ein Verbindungspool, seine Effizienz ist jedoch sehr gering.
2, Mycat Installation
1, Adresse Mycat herunterladen
2, Mycat installieren
# tar zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
Drei, mycat konfigurieren
1, Server konfigurieren.xml
# vim /usr/local/mycat/conf/server.xml //添加以下内容 <user name="user"> //mycat用户名 <property name="password">user</property> //mycat密码 <property name="schemas">mytest</property> //mycat虚拟数据库名 <property name="readOnly">true</property> //只读 </user> <user name="tankzhang"> <property name="password">admin</property> <property name="schemas">mytest</property> </user>
Hier ist zu beachten, dass die Standardeinstellung virtual Der Datenname ist TESTDB. Wenn testdb nicht in schema.xml konfiguriert ist, muss testdb in den virtuellen Datennamen in schema.xml geändert werden. Der hier definierte Benutzername, das Passwort und der Name der virtuellen Datenbank existieren in MySQL nicht.
2. Schema.xml konfigurieren
# 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" />//定义虚拟数据库名mytest <dataNode name="my1" dataHost="test1" database="test" /> //真实数据库名test <dataHost name="test1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" > <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.5.213:3306" user="tank" password="123456" > //真实数据库的连接方式 <readHost host="hostS1" url="192.168.5.214:3306" user="tank" password="123456" /> //同上 </writeHost> </dataHost> </mycat:schema>
Es gibt eine ganze Reihe von Konfigurationsparametern für mycat. Konzentrieren Sie sich auf balance="1" und writeType="0"
a. Balance Lastausgleichstyp, es gibt derzeit 4 Werte:
1. 0“ ist der Mechanismus zur Lese-Schreib-Trennung nicht aktiviert und alle Lesevorgänge werden an den aktuell verfügbaren writeHost gesendet. 2. balance="1", alle readHost und stand by writeHost nehmen am Lastausgleich der select-Anweisung teil. Einfach ausgedrückt, wenn der Dual-Master-Dual-Slave-Modus (M1 ->S1, M2-> ;S2 und M1 und M2 sind gegenseitig aktiv und unterstützen. Unter normalen Umständen nehmen 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 an den readhost verteilt, der dem Lesedruck nicht standhält. Beachten Sie, dass balance=3 nur in 1.4 und späteren Versionen verfügbar ist , nicht 1.3. b. writeType-Attribut Lastausgleichstyp, es gibt derzeit 3 Werte: 1, alle Schreibvorgänge werden an den konfigurierten ersten For gesendet ein writeHost, der erste hängt und wechselt zum zweiten verbleibenden writeHost. Der Wechsel wird in derKonfigurationsdatei aufgezeichnet .
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. Die Konfiguration des Master-Slave-Servers wird hier nicht behandelt. Blog Es gibt 4, echten Benutzer hinzufügengrant all privileges on test.* to tank@"192.168.%" identified by '123456'; flush privilegesauf zwei Maschinen 213 und 214
Benutzer hinzufügen .
5. Testen Sie die reale Benutzerverbindung, um sicherzustellen, dass der in schema.xml konfigurierte reale Benutzer eine Verbindung zur realen Datenbank herstellen kann. Achten Sie auf Firewalls.Viertens, starte mycat
1, gemeinsame Parameter./mycat start start
./mycat s
top stop./mycat console läuft im Vordergrund
./mycat restart startet den Dienst neu
./mycat pause pausiert
./mycat status Startup-
Status anzeigen
# ./mycat start Starting Mycat-server... # netstat -tpnl |grep 8066 tcp 0 0 :::8066 :::* LISTEN 31728/java # ./mycat status Mycat-server is running (31726).
Fünf, Lese- und Schreibtrennung testen
# mysql -u tankzhang -p -P 8066 -h 127.0.0.1 //一定要带上127.0.0.1 Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.6.29-mycat-1.6-RELEASE-20161028204710 MyCat Server (OpenCloundDB) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +----------+ | DATABASE | +----------+ | mytest | //虚拟数据库 +----------+ 1 row in set (0.00 sec) mysql> use mytest; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A mysql> CREATE TABLE IF NOT EXISTS `user` ( -> `id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'ID', -> `name` varchar(20) NOT NULL DEFAULT '' COMMENT '姓名', -> `create_time` int(10) NOT NULL DEFAULT '0' COMMENT '创建时间', -> PRIMARY KEY (`id`) -> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; Query OK, 0 rows affected (0.08 sec) Database changed mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | user | +----------------+ 1 row in set (0.01 sec) mysql> INSERT INTO `user` (`id` ,`name`)VALUES ('1', 'tank'); Query OK, 1 row affected (0.00 sec) mysql> select * from user; //修改从数据库的user表中的name,会发现读是从从数据库读取的 +----+-----------+-------------+ | id | name | create_time | +----+-----------+-------------+ | 1 | tankzhang | 0 | +----+-----------+-------------+ 1 row in set (0.01 sec)
Sechs, Zusammenfassung
mycat Unterstützt MySQL-Tabellen-Sharding, Sharding usw., seine Verwendung wird jedoch nicht empfohlen. Mycat unterstützt nicht viele Cluster. Es wäre großartig, wenn es mit MHA verwendet werden könnte.Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung zur Installation und Verwendung der Mycat-Middleware für MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!