Maison > Article > base de données > Explication détaillée sur l'installation et l'utilisation du middleware mycat pour mysql
MyCAT est un MySQLmiddleware, anciennement connu sous le nom de 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
Une mémoire de fusion cache technologie, NoSQL technologie, HDFS Nouveau serveur SQL pour le Big Data
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 une illustration officielle. 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, mycat installation
1, adresse de téléchargement mycat
2, installez mycat
# tar zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
Trois, configurer mycat
1, configurer le serveur.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 la valeur par défaut virtual Le nom des données est TESTDB Si testdb n'est pas configuré dans schema.xml, alors testdb doit être remplacé par le nom des données virtuelles dans schema.xml. 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. balance attribut type d'équilibrage de charge, il y a actuellement 4 valeurs :
1. 0", le mécanisme de séparation lecture-écriture n'est pas activé et 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 en premier au For configuré. un writeHost, le premier se bloque et passe au deuxième
writeHost survivant Celui qui a été basculé après le redémarrage prévaudra. Le changement est enregistré dans le fichier de configuration : propriétés dnindex. .
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, configurez le serveur maître-esclave, je ne parlerai pas à ce sujet ici, blog Il y en a
4, ajoutez un utilisateur réel
grant all privileges on test.* to tank@"192.168.%" identified by '123456'; flush privileges
sur deux machines 213 et 214 ajoutez un utilisateur .
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
./la console mycat s'exécute au premier plan
./mycat restart redémarre le service
./mycat pause pauses
./mycat status Afficher le démarragestatus
2, démarrez et consultez 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, testez la 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 '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)
Six, résumé
mycat Prend en charge le partitionnement de table MySQL, le partitionnement, etc., mais son utilisation n'est pas recommandée. Mycat ne prend pas en charge de nombreux clusters. Ce serait génial s'il pouvait être utilisé avec mha.
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!