Dieser Artikel zeigt Ihnen hauptsächlich Beispiele für die Installation und Verwendung der MySQL-Middleware Mycat. MyCAT ist eine MySQL-Middleware, die früher als Alibabas berühmtes Cobar bekannt war. 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
Ein neuer SQL Server, der Speicher-Caching-Technologie und NoSQL-Technologie integriert. und HDFS 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 das offizielle Beschreibung. 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, Download-Adresse Mycat
http://dl.mycat.io/
2 , mycat installieren
# tar zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
Drei, mycat konfigurieren
1, server.xml konfigurieren
# 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 der standardmäßige virtuelle Datenname TESTDB ist. Wenn testdb nicht in schema.xml konfiguriert ist, muss testdb in schema.xml geändert werden . Einige virtuelle Datennamen. 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 ziemlich viele Konfigurationsparameter für mycat. Konzentrieren Sie sich auf balance="1" und writeType="0"
a. Balance-Attribut-Lastausgleichstyp, es gibt derzeit 4 Werte:
1“, Wenn der Lesevorgang erfolgt -Write-Trennmechanismus ist nicht aktiviert, 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 Lesehost verteilt, der dem WriterHost entspricht. 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 A gesendet writeHost, der erste hängt und der zweite
writeHost ist noch aktiv. Derjenige, der nach dem Neustart umgeschaltet wurde, 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. Die Konfiguration des Master-Slave-Servers wird hier nicht besprochen im Blog 🎜>4. Echte Benutzer hinzufügen
grant all privileges on test.* to tank@"192.168.%" identified by '123456'; flush privileges
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: Starten Sie mycat1, allgemeine Parameter
./mycat start start./mycat stop stop
./mycat Console Front schreibtisch Ausführen
./mycat restart Starten Sie den Dienst neu
./mycat pause Pause
./mycat status Überprüfen Sie den Startstatus
2, starten und überprüfen Sie mycat
# ./mycat start Starting Mycat-server... # netstat -tpnl |grep 8066 tcp 0 0 :::8066 :::* LISTEN 31728/java # ./mycat status Mycat-server is running (31726).
# 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)
mycat unterstützt die Untertabellen, Sharding usw. von MySQL, es wird jedoch nicht empfohlen, es zu verwenden. Mycat unterstützt nicht viele Cluster. Es wäre großartig, wenn es mit MHA verwendet werden könnte.
Verwandte Empfehlungen:
Ein Beispiel für die Mycat-Lese-/Schreibtrennung basierend auf der MySQL-Master-Slave-ReplikationSo konfigurieren Sie MyCatMySQL Distributed Cluster-MyCAT (1) kurze EinführungDas obige ist der detaillierte Inhalt vonBeispielfreigabe für die Installation und Verwendung der MySQL-Middleware Mycat. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!