初学mycat ,非分片表使用mycat

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wll_1017/article/details/82388441

数据库层面配置
非分片表
mysql> use db1
Database changed
mysql> CREATE TABLE `travelrecord` (
       `id` bigint(20) NOT NULL AUTO_INCREMENT,
       `name` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
       PRIMARY KEY (`id`)
     ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Query OK, 0 rows affected (0.12 sec)

mysql> show create table travelrecord\G;
*************************** 1. row ***************************
       Table: travelrecord
Create Table: CREATE TABLE `travelrecord` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 row in set (0.00 sec)

MyCAT 配置
1、在 resources 目录下新建文件夹 backups ,将原 resources 下的所有文件移到 backups 下,这样我们的环境就干干净了。
2、在 resources 目录下新建 schema.xml 文件,配置 MyCAT 的逻辑库、表、数据节点、数据源。


[root@anedbtest01 conf]# cat server.xml 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
    <system>
    <property name="useSqlStat">0</property>  <!-- 1为开启实时统计、0为关闭 -->
    <property name="useGlobleTableCheck">0</property>  <!-- 1为开启全加班一致性检测、0为关闭 -->

        <property name="sequnceHandlerType">2</property>
        <property name="processorBufferPoolType">0</property>
        <property name="handleDistributedTransactions">0</property>
        <property name="useOffHeapForMerge">1</property>
        <property name="memoryPageSize">1m</property>
        <property name="spillsFileBufferSize">1k</property>
        <property name="useStreamOutput">0</property>
        <property name="systemReserveMemorySize">384m</property>
        <property name="useZKSwitch">true</property>

    </system>
    <user name="root">
        <property name="password">qwe123</property>
        <property name="schemas">TESTDB</property>
    </user>


</mycat:server>

[root@anedbtest01 conf]# cat  schema.xml 
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

    <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100">
        <table name="travelrecord" dataNode="dn1" autoIncrement="true" primaryKey="ID"  /> 
    </schema>
    <dataNode name="dn1" dataHost="shard" database="db1" />
    <dataHost name="shard" maxCon="1000" minCon="10" balance="0"  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <writeHost host="hostM1" url="127.0.0.1:3306" user="root"  password="qwe123">
            <readHost host="hostS2" url="127.0.0.1:3306" user="root" password="qwe123" />
        </writeHost>
    </dataHost>
</mycat:schema>

启动mycat
[root@anedbtest01 bin]# ./mycat  start
Starting Mycat-server...


8066 数据访问端口,即进行 DML 和 DDL 操作。
9066 数据库管理端口,即 mycat 服务管理控制功能。


登陆:
[root@anedbtest01 bin]# /mnt/mysql5641/bin/mysql -uroot -pqwe123 -P8066 -h127.0.0.1
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.29-mycat-1.6-RELEASE-20161028204710 MyCat Server (OpenCloundDB)

Copyright (c) 2000, 2018, 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 |
+----------+
| TESTDB   |
+----------+
1 row in set (0.00 sec

mysql> show tables;
+------------------+
| Tables in TESTDB |
+------------------+
| travelrecord     |
+------------------+
1 row in set (0.00 sec)

mysql> insert into travelrecord(name) values ('haha');
Query OK, 1 row affected (0.11 sec)

mysql> select * From travelrecord;
+---------------------+------+
| id                  | name |
+---------------------+------+
| 1036914193321824256 | haha |
+---------------------+------+
1 row in set (0.12 sec)

mysql> insert into travelrecord(name) values ('ha');
Query OK, 1 row affected (0.00 sec)

mysql> select * From travelrecord;
+---------------------+------+
| id                  | name |
+---------------------+------+
| 1036914193321824256 | haha |
| 1036914296250044416 | ha   |
+---------------------+------+
2 rows in set (0.01 sec)


mysql> use test
在mysql 库里面创建表,插入数据,可以看到id是从1开始的,但是在mycat里面 id是个随机数
mysql> CREATE TABLE travelrecord (
           `id` bigint(20) NOT NULL AUTO_INCREMENT,
            `name` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
           PRIMARY KEY (`id`)
          ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Query OK, 0 rows affected (0.02 sec)

mysql> select * from travelrecord;
+----+------+
| id | name |
+----+------+
|  1 | ha   |
+----+------+
1 row in set (0.00 sec)

参考:https://mp.weixin.qq.com/s/MeZXt2ePT95vWDygv98wPA

猜你喜欢

转载自blog.csdn.net/wll_1017/article/details/82388441