微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

四、mycat垂直分库

一、实验环境

垂直分库
实验环境      服务内容    datanode     
192.168.0.1 mycat         dn162
192.168.0.2 MysqL         dn163
192.168.0.3 MysqL         dn164

 

二、实验内容

1、数据库环境及用户名密码见mycat实验数据 
   
2、配置 schema.xml 

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYstem "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
        <schema name="demo_db" checksqlschema="false" sqlMaxLimit="100">
              <table name="order_master" primaryKey="order_id"   datanode="dn163"  />

              <table name="customer_inf" primaryKey="customer_inf_id"   datanode="dn164"  />
         </schema>
 
        <datanode name="dn163" dataHost="MysqL163" database="order_db" />
        <datanode name="dn164" dataHost="MysqL164" database="customer_db" />


        <dataHost name="MysqL163" maxCon="1000" minCon="10" balance="0"   writeType="0" dbType="MysqL" dbDriver="native" switchType="1" >
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="192.168.0.2" url="192.168.0.2:3306" user="im_mycat"   password="123456">
                </writeHost>
        </dataHost>

        <dataHost name="MysqL164" maxCon="1000" minCon="10" balance="0"   writeType="0" dbType="MysqL" dbDriver="native" switchType="1" >
                 <heartbeat>select user()</heartbeat>
                 <!-- can have multi write hosts -->
                <writeHost host="192.168.0.3" url="192.168.0.3:3306" user="im_mycat"   password="123456">
                </writeHost>
        </dataHost>


</mycat:schema>


3、配置service.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYstem "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
     <system>
        <property name="serverPort">8066</property>
            <property name="managerPort">9066</property>
            <property name="bindIp">0.0.0.0</property>
            <property name="nonePasswordLogin">0</property> <!-- 0为需要密码登陆、1为不需要密码登陆 ,认为0,设置为1则需要指定认账户-->
            <property name="charset">utf8</property>
            <property name="txIolation">2</property>
            <property name="processors">8</property>
            <property name="idleTimeout">300000</property>
            <property name="sqlExecuteTimeout">300</property>
            <property name="usesqlStat">0</property>  <!-- 1为开启实时统计、0为关闭 -->
            <property name="useGlobleTableCheck">0</property>  <!-- 1为开启全加班一致性检测、0为关闭 -->
            <property name="sequnceHandlerType">2</property>
            <property name="defaultMaxLimit">100</property>
           <property name="maxPacketSize">104857600</property> 
  </system>
  <user name="mycat_user" defaultAccount="true">
           <property name="password">123456</property>
           <property name="schemas">demo_db</property>
  </user>
</mycat:server>


4、启动mycat看是否正确
   [root@zhu MysqL]# su mycat
   [mycat@zhu MysqL]$ mycat start
   Starting Mycat-server...  
   
   192.168.0.1上使用root和mycat用户都可以
   >MysqL -h 192.168.0.1 -P 8066 -umycat_user -p123456 
   MysqL> show databases;
+----------+
| DATABASE |
+----------+
| demo_db  |
+----------+

MysqL> use demo_db
Database changed
MysqL> show tables;
+-------------------+
| Tables in demo_db |
+-------------------+
| customer_inf      |
| order_master      |
+-------------------+

插入数据
先清空192.168.0.2上order_master,192.168.0.3上customer_inf表的数据;
在192.168.0.1上插入数据
insert into order_master(order_id,order_sn,customer_id,shipping_user)values(1,'20190845125425',  1 ,'张三');
insert into order_master(order_id,order_sn,customer_id,shipping_user)values(2,'20190845125426',  2 ,'李四');
commit;

insert into customer_inf(customer_inf_id ,customer_id,customer_name)values('3','5','王五');
insert into customer_inf(customer_inf_id ,customer_id,customer_name)values('4','6','杨六');
commit;

插入的数据在192.168.0.1上都可以看到
order_master的数据在163上可以看到
customer_inf的数据在164上可以看到
说明垂直分库成功


5、配置全局表
之前region_info表在192.168.0.2,192.168.0.3上已经建立好了

配置 schema.xml 
添加
<table name="region_info" primaryKey="region_id"   datanode="dn163,dn164"  type="global" />

重启mycat
mycat stop
mycat start

192.168.0.1上登录mycat  插入数据
[mycat@zhu ~]$ MysqL -h 192.168.0.1 -P 8066 -umycat_user -p123456 
MysqL> use demo_db;
Database changed
MysqL> show tables;
+-------------------+
| Tables in demo_db |
+-------------------+
| customer_inf      |
| order_master      |
| region_info       |
+-------------------+
3 rows in set (0.01 sec)

insert into region_info(region_name )values('乌鲁木齐');
insert into region_info(region_name )values('昌吉');
commit;

之后在192.168.0.1,192.168.0.2,192.168.0.3都能查到数据说明配置成功

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐