Maison >base de données >tutoriel mysql >Installation du middleware Mysql mycat et partage d'exemples d'utilisation

Installation du middleware Mysql mycat et partage d'exemples d'utilisation

小云云
小云云original
2018-01-17 10:40:052768parcourir

Cet article partage principalement avec vous des exemples d'installation et d'utilisation du middleware mysql mycat. MyCAT est un middleware MySQL, anciennement connu sous le nom de célèbre Cobar d'Alibaba. Après que Cobar ait été open source pendant un certain temps, il s'est arrêté. MyCAT a donc repris cette bannière et, à l'ère du Big Data, son importance est devenue de plus en plus évidente. Cet article concerne principalement le déploiement d'introduction de MyCAT.

1. Qu'est-ce que mycat

Un grand cluster de bases de données entièrement open source pour le développement d'applications d'entreprise

Prend en charge les transactions, ACID et peut remplacer MySQL Une version améliorée de la base de données

Une base de données de niveau entreprise qui peut être considérée comme un cluster MySQL pour remplacer le coûteux cluster Oracle

Un nouveau serveur SQL qui intègre la technologie de mise en cache mémoire, la technologie NoSQL, et Big Data HDFS

Une nouvelle génération de produit de base de données de niveau entreprise qui combine des bases de données traditionnelles et de nouveaux entrepôts de données distribués

Un nouveau produit middleware de base de données

Ce qui précède est le produit officiel description. En fait, il s'agit du pool de connexions de la base de données. Le proxy MySQL est également un pool de connexions, mais son efficacité est très faible.

2, installation de mycat

1, adresse de téléchargement mycat

http://dl.mycat.io/

2 , installez mycat


# tar zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/

Trois, configurez mycat

1, configurez server.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>

Il convient de noter ici que le nom des données virtuelles par défaut est TESTDB Si testdb n'est pas configuré dans schema.xml, alors testdb doit être remplacé par schema.xml. . Quelques noms de données virtuelles. Le nom d'utilisateur, le mot de passe et le nom de la base de données virtuelle définis ici n'existent pas réellement dans MySQL.

2, configurez 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" />//定义虚拟数据库名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>

Il existe de nombreux paramètres de configuration pour mycat. Concentrez-vous sur balance="1" et writeType="0"

a. Le type d'équilibrage de charge de l'attribut balance, il y a actuellement 4 valeurs :

1. Le mécanisme de séparation -write n'est pas activé, toutes les opérations de lecture sont envoyées au writeHost actuellement disponible.

2. balance="1", tous les readHost et stand by writeHost participent à l'équilibrage de charge de l'instruction select, en termes simples, lorsque le mode double maître double esclave (M1 ->S1, M2->). ;S2 , et M1 et M2 sont mutuellement actifs et de sauvegarde). Dans des circonstances normales, M2, S1 et S2 participent tous à l'équilibrage de charge de l'instruction select.

3. balance="2", toutes les opérations de lecture sont distribuées aléatoirement sur writeHost et readhost.

4. balance="3", toutes les demandes de lecture sont distribuées de manière aléatoire au readhost correspondant àwriterHost pour l'exécution.writerHost ne supporte pas la pression de lecture. Notez que balance=3 n'est disponible que dans les versions 1.4 et ultérieures. , pas 1.3.

b. Attribut writeType

Type d'équilibrage de charge, il y a actuellement 3 valeurs :

1 writeType="0", toutes les opérations d'écriture sont envoyées au premier A configuré. writeHost, le premier raccroche et passe au deuxième survivant

writeHost Celui qui a été basculé après le redémarrage prévaudra. Le changement est enregistré dans le fichier de configuration : dnindex.properties.

2. writeType="1", toutes les opérations d'écriture sont envoyées de manière aléatoire au writeHost configuré.

3. writeType="2", non implémenté.

Paramètres spécifiques : http://mycat.io/document/Mycat_V1.6.0.pdf

3. La configuration du serveur maître-esclave ne sera pas abordée ici. Il y a

4. Ajouter de vrais utilisateurs



grant all privileges on test.* to tank@"192.168.%" identified by &#39;123456&#39;;
flush privileges
Ajouter des utilisateurs sur les machines 213 et 214.

5. Testez la connexion de l'utilisateur réel pour vous assurer que l'utilisateur réel configuré dans schema.xml peut se connecter à la base de données réelle. Faites attention aux pare-feu.

Quatre, démarrez mycat

1, paramètres communs

./mycat start start
./mycat stop stop
./mycat console front desk Exécuter
./mycat restart Redémarrer le service
./mycat pause Pause
./mycat status Vérifier l'état de démarrage

2, démarrer et vérifier mycat



# ./mycat start
Starting Mycat-server...

# netstat -tpnl |grep 8066
tcp 0 0 :::8066 :::* LISTEN 31728/java 

# ./mycat status
Mycat-server is running (31726).

Cinq, test de séparation en lecture et en écriture


# 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 &#39;help;&#39; or &#39;\h&#39; for help. Type &#39;\c&#39; 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 &#39;0&#39; COMMENT &#39;ID&#39;,
 -> `name` varchar(20) NOT NULL DEFAULT &#39;&#39; COMMENT &#39;姓名&#39;,
 -> `create_time` int(10) NOT NULL DEFAULT &#39;0&#39; COMMENT &#39;创建时间&#39;,
 -> 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 (&#39;1&#39;, &#39;tank&#39;);
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)

Six, Résumé

mycat prend en charge les sous-tables, le partitionnement, etc. de MySQL, mais il n'est pas recommandé de l'utiliser. Mycat ne prend pas en charge de nombreux clusters. Ce serait génial s'il pouvait être utilisé avec mha.

Recommandations associées :

Un exemple de séparation lecture-écriture Mycat basée sur la réplication maître-esclave MySQL

Comment configurer MyCat

Cluster distribué MySQL-MyCAT (1) brève introduction

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn