1. Téléchargez et décompressez mycat
2. Vérifiez la structure du répertoire mycat
[root @ aliyun-ecs mycat] # ll
total 24
racine racine drwxr-xr-x 2 4096 18 avril 10:28 bin
drwxrwxrwx 2 racine racine 4096 22 octobre 21:26 catlet
drwxrwxrwx 4 racine racine 4096 février 22h21 la conf. 9
drwxr XR-2 X-18 est la racine de la racine 4096 avril 10h28 lib
drwxrwxrwx la racine 2 23h04 le 16 janvier 4096 journaux la racine
-rwxrwxrwx la racine. 1. 9 le févr 22:22 version.txt la racine 227
que sur les structures complété macategorie À propos, notez que mycat est développé en langage java.
L'installation de mycat nécessite donc un environnement jdk
3. Configurer mycat
3.1 Modifier wrapper.conf
[root @ aliyun-ecs mycat] # vim conf / wrapper.conf Dans
un environnement informel, modifiez les deux paramètres suivants à 256 Mo, sinon la mémoire
avant la modification sera insuffisante :
wrapper.java.additional.10 = -Xmx4G
wrapper.java.additional.11 = -Xms1G
après modification:
wrapper.java.additional.10 = -Xmx256M
wrapper.java.additional.11 = -Xms256M
3.2 Configurer server.xml
[root @ aliyun-ecs mycat] # vim conf / server.xml
ajouter un utilisateur mycat: scwyfy
et définir la bibliothèque logique correspondante: admin_db, order_db, product_db
<user name = "scwyfy">
<property name = "mot de passe"> 123456 </ property>
<property name = " schemas "> admin_db , order_db, product_db </ property>
<property name = "readOnly"> true </ property>
</ user>
3.3 Configurer le schéma de
configuration schema.xml -> table-> dataNode-> dataHost-> writeHost-> readHost
[root @ aliyun-ecs mycat] # vim conf / schema.xml
<! - nom: configurez la bibliothèque logique correspondante pour l'utilisateur mycat nouvellement ajouté->
<schema name = " admin_db " checkSQLschema = "false" sqlMaxLimit = "100">
<! - partitionnement automatique par id (long): Plage conventionnelle 0-1k = 0 1k-10k = 1 10k-100k = 2->
<! - Nom: nom de la table de données->
<! - DataNode: nœud réel où la table de données est stockée (serveur réel + base de données) ->
<table name = "travelrecord" dataNode = "dn1, dn2, dn3" rule = "auto-sharding-long" />
<! - la table globale est clonée automatiquement sur tous les nœuds de données définis, donc peut se joindre à n'importe quelle table dont le nœud de partage se trouve dans le même nœud de données ->
<table name = "company" primaryKey = "ID" type = "global" dataNode = "dn1, dn2, dn3" />
<! - partitionnement aléatoire en utilisant la règle mod sharind->
<table name = "hotnews" primaryKey = "ID" autoIncrement = "true" dataNode = "dn1, dn2, dn3" rule = "mod-long" />
<!
--Les données de table configurées avec une relation de table de contingence sont stockées sur le même fragment- > <nom de la table = "client" primaryKey = "ID" dataNode = "dn1, dn2" rule = "sharding-by-intfile">
<! -Associer le client_id de la table des commandes à l'id de la table client, de sorte que lorsque la table des commandes est insérée, il déterminera d'abord quel fragment le client_id est activé, puis insérera les données dans le fragment
afin que les données associées soient stockées dans un fragment Le but
de-
> <childTable name = "commandes" primaryKey = "ID" joinKey = "customer_id" parentKey = "id"> <childTable name = "order_items" joinKey = " order_id
" parentKey = "id "/> </childTable>
<childTable name = "customer_addr" primaryKey = "ID" joinKey = "customer_id" parentKey = "id" />
</table>
</schema>
<! - 配置 数据 节点 信息 ->
<dataNode name = "dn1" dataHost = "localhost1" database = "db1" />
<dataNode name = "dn2" dataHost = "localhost1" database = "db2" />
< dataNode name = "dn3" dataHost = "localhost1" database = "db3" />
<! - Configurer les informations du serveur de base de
données- > <dataHost name = "localhost1" maxCon = "1000" minCon = "10" balance = "0"
writeType = "0" dbType = "mysql" dbDriver = "native" switchType = "1" slaveThreshold = "100">
<! - Utilisé pour détecter le rythme cardiaque->
<rythme cardiaque> sélectionner l'utilisateur () </ rythme cardiaque>
<! - peut avoir plusieurs hôtes d'écriture: 配置 写 库 ->
<writeHost host = "hostM1" url = "localhost: 3306" user = "root" password = "123456">
<! - peut avoir plusieurs hôtes de lecture : 配置 从 库 ->
<readHost host = "hostS2" url = "192.168.1.200:3306" user = "root" password = "xxx" />
</writeHost>
</dataHost>