DBA10 - 分库分表概述 配置mycat

----------------重要配置文件说明-------------------------
ls /usr/local/mycat/conf
server.xml 设置连接mycat服务的账号 参数 等
schema.xml 配置mycat使用的真实数据库和表
rule.xml   定义mycat分片规则

配置文件标签说明:
<user>.......</user>  定义连接mycat服务时使用的用户和密码及逻辑库的名字
<datanode>......</datanode> 指定数据节点(物理库的主机名和存储分片数据的数据库名)
<datahost>......</datahost> 指定数据库服务器的IP地址 及连接数据库时使用的授权用户名及密码


名词解释:
逻辑库: 客户端连接mycat服务器后看到的库名
逻辑表: 客户端连接mycat服务器后看到表明,表明要与程序员存储数据用的表名相同。

编辑配置文件:

cd /usr/local/mycat/conf/server.xml

        <user name="admin">
                <property name="password">123456</property>
                <property name="schemas">TESTDB</property>
        </user>

        <user name="webuser">
                <property name="password">123456</property>
                <property name="schemas">TESTDB</property>
                <property name="readOnly">true</property>
        </user>
cat /usr/local/mycat/conf/schema.xml 

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">

          <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"> #逻辑库名 要与server.xml定义的一样
                 
         
                 <table name="travelrecord" dataNode="dn1,dn2" rule="auto-sharding-long" />  #定义分片的表
                
         
                 <table name="company" primaryKey="ID" type="global" dataNode="dn1,dn2" />  #定义分片的表
                
        
                 <table name="goods" primaryKey="ID" type="global" dataNode="dn1,dn2" /> #定义分片的表
                 
        
                 <table name="hotnews" primaryKey="ID" dataNode="dn1,dn2" rule="mod-long" /> #定义分片的表
                
        
                 <table name="employee" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-intfile" />   #定义分片的表
                
        
                 <table name="customer" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-intfile" /> #定义分片的表
                 
          </schema>
    
        <dataNode name="dn1" dataHost="c1" database="db1" /> 
        #定义分片使用的库,所在的物理主机 ,真正存储数据的db1库在物理主机c1上
    
        <dataNode name="dn2" dataHost="c2" database="db2" /> 
        #定义分片使用的库,所在的物理主机 ,真正存储数据的db2库在物理主机c2上
    
         #指定c1名称主机对应的ip地址
    <dataHost name="c1" maxCon="1000" minCon="10" balance="0"
        writeType="0" dbType="mysql" dbDriver="native" > 
        <heartbeat>select user()</heartbeat>
                <writeHost host="hostM1" url="192.168.4.55:3306" user="admin"    
            password="123456">   #访问数据时 mycat服务连接数据库服务器时使用的用户名和密码
        </writeHost>
    </dataHost>

         #指定c2名称主机对应的ip地址
    <dataHost name="c2" maxCon="1000" minCon="10" balance="0"
        writeType="0" dbType="mysql" dbDriver="native" >
        <heartbeat>select user()</heartbeat>
                <writeHost host="hostM2" url="192.168.4.54:3306" user="admin"
            password="123456">  #访问数据时 mycat服务连接数据库服务器时使用的用户名和密码
        </writeHost>
    </dataHost>
</mycat:schema>

++++++++++++++++++++启动服务
 [root@localhost ~]# sed -n  '4,5p' /usr/local/mycat/conf/wrapper.conf 
  # Java Application
  wrapper.java.command=java
 [root@localhost ~]#
 [root@localhost ~]# which java
  /usr/bin/java

 [root@localhost ~]#echo  "export PATH=/usr/local/mycat/bin"  >> /etc/profile
 [root@localhost ~]#source  /etc/profile

 [root@localhost ~]# mycat  --help
 Usage: /usr/local/mycat/bin/mycat { console | start | stop | restart | status | dump }
 [root@localhost ~]#

 [root@localhost ~]# mycat  start
 Starting Mycat-server...
 [root@localhost ~]# 
 [root@localhost ~]# netstat -utnalp  | grep :8066
 tcp6       0      0 :::8066                 :::*                    LISTEN      4524/java           
 [root@localhost ~]#


++++++++++++++++++++++++测试MyCAT
[root@room9pc17 ~]# mysql -h192.168.4.56 -P8066 -utest -ptest  //客户端连接mycat服务器,存储数据
MySQL [(none)]> show databases;
+----------+
| DATABASE |
+----------+
| TESTDB   |
+----------+
1 row in set (0.00 sec)
MySQL [(none)]> use TESTDB;
MySQL [TESTDB]> show tables;
+------------------+
| Tables in TESTDB |
+------------------+
| company          |
| customer         |
| employee         |
| goods            |
| hotnews          |
| travelrecord     |
+------------------+
6 rows in set (0.00 sec)

MySQL [TESTDB]> MySQL [TESTDB]> create table employee( id int not null primary key, name varchar(100), sharding_id int not null );

MySQL [TESTDB]> MySQL [TESTDB]> insert  into  employee(id,name,sharding_id)values(1,"bob",10000),(2,"lucy",10010),(3,"alice",10000),(4,"jerry",10010);

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
mysql> select  @@hostname;
+------------+
| @@hostname |
+------------+
| c1         |
+------------+
1 row in set (0.00 sec)

mysql> select  * from employee;
Empty set (0.00 sec)

mysql> select  * from employee;
+----+-------+-------------+
| id | name  | sharding_id |
+----+-------+-------------+
|  1 | bob   |       10000 |
|  3 | alice |       10000 |
+----+-------+-------------+
2 rows in set (0.00 sec)

mysql> 
++++++++++++++++++++++++++++++++++++++++++++++
mysql> select @@hostname;
+------------+
| @@hostname |
+------------+
| c2         |
+------------+
1 row in set (0.00 sec)

mysql> select * from employee;
Empty set (0.00 sec)

mysql> select * from employee;
+----+-------+-------------+
| id | name  | sharding_id |
+----+-------+-------------+
|  2 | lucy  |       10010 |
|  4 | jerry |       10010 |
+----+-------+-------------+
2 rows in set (0.00 sec)

mysql> 

猜你喜欢

转载自blog.csdn.net/qq_36441027/article/details/81282919