MyCat 별도의 읽기 및 쓰기 하위 라이브러리 + + 글로벌 테이블의 서브 테이블

머리말

: mycat 강력하고 간단한 구성, 데이터베이스 미들웨어로, MyCat 설치에 배포 된 아주 좋은 오픈 소스 제품, 보웬를 참조입니다 MyCat 배포 설치 .

이 포스팅은 다음과 같은 기능 mycat를 표시합니다 :

  • 별도의 읽기 및 쓰기;
  • 하위 라이브러리 하위 테이블;
  • 글로벌 테이블;

다음과 같이 환경은 다음과 같습니다 :

체계 IP 호스트 이름 서비스
CentOS는 7.5 192.168.20.2 mysql01 MySQL은 5.7.24
CentOS는 7.5 192.168.20.3 mysql02 MySQL은 5.7.24
CentOS는 7.5 192.168.20.3 mysql03 MySQL은 5.7.24
CentOS는 7.5 192.168.20.4 내 고양이 내 고양이

참고 : 호스트 mysql01 및 mysql02 마스터 - 슬레이브 복제 관계 , 당신은 보웬 참조 할 수 MySQL의 고 가용성 솔루션 - 이중 주 (참고 : 당신은 주요의 영향에서 참조 보웬을해야, 당신은 keepalived 필요는 주님을 두 배로하지 않는 필요가 없습니다 빌드로 고 가용성). mycat 서비스 보웬를 참조하십시오 MyCat의 배포 설치를 그냥 좋은 MySQL의 서버를 구축하려면 여기를, 빌드에 새 호스트 mysql03을, 당신은 보웬 참조 할 수 있습니다 를 CentOS 배포 MySQL은 5.7 빌드로.

1, mycat 별도의 읽기 및 쓰기

이 별도의 읽기 및 쓰기로 사용 된 호스트 mysql03은 쉽게 구현하는 것입니다 구성 파일 mycat의 다음과 같은 두 가지 수정이 필요합니다. 으로는 다음과 같습니다 :

1) server.xml 파일을 수정

[root@mycat mycat]# pwd
/usr/local/mycat   <!--此处为mycat的家目录-->
[root@mycat mycat]# vim conf/server.xml
<!--指定client连接mycat的用户名及密码,此处的账号密码与MySQL数据库无关-->
[root@mycat mycat]# vim conf/server.xml    <!--定位到80行左右,修改如下-->
        <user name="mycat" defaultAccount="true">  <!--mycat为用户名-->
                <property name="password">pwd@123</property>   <!--此处为用户mycat的登录密码-->
                <property name="schemas">test_mycat</property>    <!--此处为逻辑库名--

                <!-- 表级 DML 权限设置 -->
                <!--            
                <privileges check="false">
                        <schema name="TESTDB" dml="0110" >
                                <table name="tb01" dml="0000"></table>
                                <table name="tb02" dml="1111"></table>
                        </schema>
                </privileges>           
                 -->
        </user>

2) 파일의 schema.xml을 수정

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--下面的schema必须和第一个文件中的schema name(逻辑库名)一致。-->
        <schema name="test_mycat" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
        </schema>
        <dataNode name="dn1" dataHost="host1" database="test" />    <!--这里的database是指定要连接后端的哪个数据库,这里连接的是test库-->
                <!--下面是指定后端真实的MySQL主机,关于下面的balance值,有三个可选值,将在下面写下来-->
        <dataHost name="host1" maxCon="1000" minCon="10" balance="3"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                                <!--指定后端哪台主机用来写数据-->
                <writeHost host="hostM1" url="192.168.20.2:3306" user="root"
                                   password="123.com">
                        <!-- can have multi read hosts -->
                                                <!--指定后端哪台主机用来读数据-->
                        <readHost host="hostS2" url="192.168.20.3:3306" user="root" password="123.com" />
                </writeHost>
        </dataHost>
</mycat:schema>

참고 : DataHost 필드 밸런스로드 밸런싱 유형은 현재 네 개의 값이 따르고, 위에서 언급 한 :

  1. 균형 = "0", 별도의 읽기 및 쓰기 메카니즘을 사용할 수없는, 모두가 현재 사용 가능한 writeHost (기본값)로 전송됩니다 읽습니다.
  2. 밸런스 = "1"을 선택 문장을 분산 및 readHost가 writeHost 대기 모든 부하에 참여 단순히 때 이중 마스터 - 슬레이브 모드 비스 (M1-> S1, M2-> S2, M1 및 M2와 상호 백업) 정상적인 상황 하에서, M2, S1, S2는 부하 밸런싱에 SELECT 문에 관여한다.
  3. 균형 = "2"모든 읽기 작업은 writeHost, 배포 readhost 무작위입니다.
  4. 균형 = "3", wiriterHost readhost 해당하는 임의의 유통에 대한 모든 읽기 요청이없는 균형 = 3 이상 버전 1.4, 1.3 읽기에만 관심을 지불의 부담없이, writerHost 압력을 시행 하였다.

writeTyep 필드 3 다음 값 :

1, writeType = "0", 상기 제 1 전송 writeHost 구성 모든 기입 동작은, 상기 제 절단 아직도 중단하도록 재시작 된 후에 후 중, 제 writeHost 존재 전환, 전환은 구성 파일에 기록되고 에서 : dnindex.properties.
2, writeType = "1", 모든 쓰기는 권장하지 않습니다 1.5을 폐기 한 후, writeHost 임의의 구성으로 전송됩니다. switchType 속성

  • -1 자동 전환을 의미한다.
  • 디폴트 값, 자동 전환.
  • 2 주 MySQL은 동기화의 상태로 전환할지 여부를 결정에 따라.

개정 된 전체 구성 파일은 다음 (피하기 중복하기 위해, 몇 가지 주석을 제거)

server.xml의 설정 파일은 다음과 같습니다 :

[root@mycat mycat]# vim conf/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="mycat" >
                <property name="password">pwd@123</property>
                <property name="schemas">test_mycat</property>
        </user>
</mycat:server>

의 schema.xml 구성 파일은 다음과 같습니다 :

[root@mycat mycat]# vim conf/schema.xml

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

        <schema name="test_mycat" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
        </schema>
        <dataNode name="dn1" dataHost="host1" database="test" />
        <dataHost name="host1" maxCon="1000" minCon="10" balance="3"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="hostM1" url="192.168.20.2:3306" user="root"
                                   password="123.com">
                        <!-- can have multi read hosts -->
                        <readHost host="hostS2" url="192.168.20.3:3306" user="root" password="123.com" />
                </writeHost>
        </dataHost>
</mycat:schema>

참고 : 나는 datahost 필드 writehost 이상 지정 readhost 필드, 루트 계정 데이터베이스에 로그온 권한을 해당 한 (기본 루트 루트 등이 시점에서, 백 엔드 데이터베이스는 사용자가 자신의 사용자와 관련된 권한을 만들 수 있습니다 만) 그래서 자신의 루트 권한을 수정하거나 다른 승인 된 사용자로 대체하기 위해, 사용자가 로컬 호스트에 로그인 할 수 있습니다.

요약 :
백 엔드 데이터베이스 로그인 사용자를 지정 1. 적절한 권한이 있어야합니다 수 있습니다
2. 테스트가 백 엔드 데이터베이스가 있어야하므로, 실제 시험을위한 백 엔드 데이터베이스 위 지정;

3) 시작 및 테스트 쓰기 분리 mycat

[root@mycat mycat]# mycat start       #启动mycat
[root@mycat mycat]# mysql -umycat -ppwd@123 -h 192.168.20.4 -P 8066   #登录到mycat
#192.168.20.4为mycat主机IP,mycat监听端口为8066,使用的登录用户为server.xml文件中创建的用户
#创建表并插入一些测试数据
mysql> use test_mycat;
mysql> create table t1 (id int,name varchar(4));
mysql> insert into t1 values(1,'张三'),(2,'李四'),(3,'王五');
#此时,去后端数据库上查看,应该是有上面这些数据的。
#现在可以暂时关闭后端数据库的主从复制,然后再mycat主机上继续插入数据,测试是否可以读到
#关闭主从复制命令:stop slave;
#以下操作还是在mycat主机进行
mysql> insert into t1 values(4,'赵六');    #插入一条数据
Query OK, 1 row affected (0.01 sec)

mysql> select * from t1;      #查询不到刚插入的数据,说明读写操作没有在同一台主机上进行
+------+--------+
| id   | name   |
+------+--------+
|    1 | 张三   |
|    2 | 李四   |
|    3 | 王五   |
+------+--------+
#可以去后端两个数据库分别进行查看数据
#mysql01主机的数据如下(说明写操作是在mysql01):
mysql> select * from t1;
+------+--------+
| id   | name   |
+------+--------+
|    1 | 张三   |
|    2 | 李四   |
|    3 | 王五   |
|    4 | 赵六   |
+------+--------+
4 rows in set (0.00 sec)
#mysql02主机的数据如下:
mysql> select * from t1(说明读操作是在mysql02);
+------+--------+
| id   | name   |
+------+--------+
|    1 | 张三   |
|    2 | 李四   |
|    3 | 王五   |
+------+--------+
3 rows in set (0.00 sec)

읽고이를 쓰기 분리 효과. (합니까는 나중에 테스트, 최고의 복구 및 호스트 복제에서 mysql02 주요 mysql01 영향을 미치지 않습니다).

(2) 서브 - 라이브러리를 달성 mycat

데이터베이스는 여러 테이블로 구성, 다른 사업에 각 테이블의 대응은, 소위 하위 라이브러리는 이렇게 데이터를 공유 또는 다른 저장소 위의 압력이, 다른 데이터베이스 위에서 아무것도하지 않는, 비즈니스 표에 따라 분류된다 서브 - 라이브러리의 원리 : 밀접한 관계가 도서관, 작은 테이블에서 연결되어야 않거나 상호 관계 테이블이 다른 라이브러리에 할당 할 수있다.

예를 들어 하위 라이브러리 :

가정 네 개의 테이블이 있습니다 : 고객, 주문, orders_detail, dict_order_type, 각 테이블의 데이터 수백만, 다음으로이 테이블이 다른 세 가지가 별도의 고객 데이터베이스 테이블에 분리 될 수 있고, 4 개의 하위 라이브러리를 달성 할 수있다 다른 데이터베이스에 별도의 테이블.

1) (비트를 논리적 라이브러리 이름을 변경하려면) server.xml 파일을 수정

[root@mycat mycat]# cat conf/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="mycat" >
        <property name="password">pwd@123</property>
        <property name="schemas">test_db</property>
    </user>
</mycat:server>

2) 파일의 schema.xml을 수정

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

    <schema name="test_db" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
        <table name="customer" dataNode="dn2"/>   <!--这里指定customer在dn2节点上-->
    </schema>
    <dataNode name="dn1" dataHost="host1" database="test" />
    <dataNode name="dn2" dataHost="host2" database="test" />
    <dataHost name="host1" maxCon="1000" minCon="10" balance="3"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM1" url="192.168.20.2:3306" user="root"
                   password="123.com">
            <!-- can have multi read hosts -->
            <readHost host="hostS2" url="192.168.20.3:3306" user="root" password="123.com" />
        </writeHost>
    </dataHost>
    <!--下面添加host2主机字段,指定的主机就是mysql03-->
    <dataHost name="host2" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM2" url="192.168.20.21:3306" user="root"
                   password="123.com">
        </writeHost>
    </dataHost>
</mycat:schema>

3) 다시 시작 mycat

[root@mycat mycat]# mycat restart

참고 :의 schema.xml 파일 위의 데이터 노드 필드 테스트를 지정하기 때문에 백 엔드 데이터베이스가 실제 테스트 데이터베이스를 지정해야합니다은 연결 백 엔드 데이터베이스이다.

4) 서브 - 라이브러리의 효과를 테스트

#登录到mycat
[root@mycat mycat]# mysql -umycat -ppwd@123 -h 192.168.20.4 -P 8066
#创建相应的表
mysql> use test_db;
mysql> CREATE TABLE customer(
    -> id_a INT AUTO_INCREMENT,
    -> NAME VARCHAR(200),
    -> PRIMARY KEY(id_a)
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql> CREATE TABLE orders(
    -> id_b INT AUTO_INCREMENT,
    -> order_type INT,
    -> customer_id INT,
    -> amount DECIMAL(10,2),
    -> PRIMARY KEY(id_b)
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE TABLE orders_detail(
    -> id_c INT AUTO_INCREMENT,
    -> detail VARCHAR(2000),
    -> order_id INT,
    -> PRIMARY KEY(id_c)
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql> CREATE TABLE dict_order_type(
    -> id_d INT AUTO_INCREMENT,
    -> order_type VARCHAR(200),
    -> PRIMARY KEY(id_d)
    -> );
Query OK, 0 rows affected (0.01 sec)

#登录到后端数据库上,查看表是否按照预计的效果拆分
[root@mycat mycat]# mysql -uroot -p123.com -h 192.168.20.2
mysql> use test;

mysql> show tables;             #可以看到主机mysql01这里有三个表
+-----------------+
| Tables_in_test  |
+-----------------+
| dict_order_type |
| orders          |
| orders_detail   |
+-----------------+
3 rows in set (0.00 sec)

#登录到mysql03上查看
[root@mycat mycat]# mysql -uroot -p123.com -h 192.168.20.21
mysql> use test;

mysql> show tables;     #可以看到这里只有customer表
+----------------+
| Tables_in_test |
+----------------+
| customer       |
+----------------+
1 row in set (0.00 sec)

지금까지 라이브러리를 달성했다 점,하지만 mycat을 통해 로그인 고객을위한 다른 라이브러리에서 여러 테이블 (밤 위, 실현이 여러 테이블이 다른 호스트에 배치 있음) 또는 라이브러리, 라이브러리는 네 개의 테이블이 있습니다.

(3) 서브 테이블을 달성 mycat

여기에 새 테이블 EMP로 분할됩니다.

(전체 프로필) 다음 1)의 schema.xml 파일 수정

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

    <schema name="test_db" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
        <table name="customer" dataNode="dn2"/>
        <!--只需要在原来的配置文件中增加下面一行即可,表示将emp表分在了dn1和dn2这两个节点上-->
        <table name="emp" dataNode="dn1,dn2" rule="mod_rule"/>
    </schema>
    <dataNode name="dn1" dataHost="host1" database="test" />
    <dataNode name="dn2" dataHost="host2" database="test" />
    <dataHost name="host1" maxCon="1000" minCon="10" balance="3"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM1" url="192.168.20.2:3306" user="root"
                   password="123.com">
            <!-- can have multi read hosts -->
            <readHost host="hostS2" url="192.168.20.3:3306" user="root" password="123.com" />
        </writeHost>
    </dataHost>
    <dataHost name="host2" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM2" url="192.168.20.21:3306" user="root"
                   password="123.com">
        </writeHost>
    </dataHost>
</mycat:schema>

2) rule.xml 파일에 다음을 추가

[root@mycat mycat]# vim conf/rule.xml      #修改rule.xml文件
        <tableRule name="mod_rule">    <!--这里指定的name必须和schema.xml中指定的name一致-->
                <rule>
                        <columns>id</columns>    <!--这里指定的是以哪里列进行分表的-->
                        <algorithm>mod_long</algorithm>  <!--这里指定的是分片方法-->
                </rule>
        </tableRule>
                        ...................
                                                <!--下面的name必须和上面的分片方法一致-->
        <function name="mod_long" class="io.mycat.route.function.PartitionByMod">
                <!-- how many data nodes -->
                <property name="count">2</property>    <!--这里指定的是node节点数量-->
        </function>

mycat에 3) 다시 시작 mycat 및 로그

[root@mycat mycat]# mycat restart

4) 상기 테스트 로그 데이터 삽입 mycat 효과 서브 테이블에

[root@mycat mycat]# mysql -umycat -ppwd@123 -h 192.168.20.4 -P 8066
mysql> use test_db;
#创建emp表(后端两个数据库节点上都会有这张表)
mysql> create table emp (
    -> id int,
    -> name varchar(10)
    -> );
Query OK, 0 rows affected (0.41 sec)
#插入多条数据(对于这种分表,插入数据需要指定列名,否则会报错)
mysql> insert into emp(id,name) values(1,'张三'),(2,'李四'),(3,'王五'),(4,'赵六');
#查询新插入的数据
mysql> select * from emp;    
+------+--------+
| id   | name   |
+------+--------+
|    2 | 李四   |
|    4 | 赵六   |
|    1 | 张三   |
|    3 | 王五   |
+------+--------+
4 rows in set (0.04 sec)
mysql> select * from emp order by id;    #对结果进行排序
+------+--------+
| id   | name   |
+------+--------+
|    1 | 张三   |
|    2 | 李四   |
|    3 | 王五   |
|    4 | 赵六   |
+------+--------+
4 rows in set (0.01 sec)

#后端mysql01主机查询到该表的数据如下:
mysql> select * from emp;
+------+--------+
| id   | name   |
+------+--------+
|    2 | 李四   |
|    4 | 赵六   |
+------+--------+
2 rows in set (0.00 sec)
#mysql03主机查询到的数据如下:
mysql> select * from emp;          
+------+--------+
| id   | name   |
+------+--------+
|    1 | 张三   |
|    3 | 王五   |
+------+--------+
2 rows in set (0.00 sec)

당신은 데이터를 저장하는 서로 다른 노드의 평균 스프레드입니다 볼 수 있습니다.

그러나 일반 테이블 분할 한 후, 직접 다른 테이블에 참가할 수 없습니다.

가입 멀티 테이블의 문제를 해결하기 위해,의 schema.xml 또한, 구성 파일을 수정 여전히 공부, 특정을 달성하는 방법, 테이블 필드 포인트 테이블에 childTable 필드를 추가해야합니다. 그러나, 파트 테이블의 종류 글로벌 테이블에 설정 될 수 있고, 비교적 간단한 구현이다.

3, 글로벌 테이블

포인트 테이블 후, 다른 테이블에 가입하는 방법은 더 어려운 문제가되었다, 우리는 테이블 조인을 해결하는 방법 (그러나 유일한 방법)는 글로벌 테이블을 설정 나누어 선택할 수 있지만 특정 제한 글로벌 테이블이 있습니다 성별로 다음과 같습니다 :

  • 글로벌 테이블은 자주 변경;
  • 데이터의 전체 양에 작은 변화;
  • 데이터 레코드의 수천의 작은, 몇 초 수백입니다.

글로벌 테이블에는 다음과 같은 기능이 있습니다 :

  • 글로벌 테이블을 삽입, 업데이트 작업은 모든 노드, 각 조각의 데이터 일관성에 실시간으로 수행됩니다;
  • 글로벌 테이블 쿼리 만 노드에서 얻을;
  • 글로벌 표는 작업이 어느 하나 개의 테이블을 수행 할 수 있습니다 가입.

당신이 글로벌 테이블을 만들려면 테이블 필드는 단지 유형을 증가 = "세계"가 될 수 있습니다. 으로는 다음과 같습니다 :

1) 글로벌 테이블을 정의

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

    <schema name="test_db" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
        <table name="customer" dataNode="dn2"/>
        <!--在下面的table字段增加global属性即可-->
        <table name="emp" dataNode="dn1,dn2" type="global">
        </table>
    </schema>
    <dataNode name="dn1" dataHost="host1" database="test" />
    <dataNode name="dn2" dataHost="host2" database="test" />
    <dataHost name="host1" maxCon="1000" minCon="10" balance="3"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM1" url="192.168.20.2:3306" user="root"
                   password="123.com">
            <!-- can have multi read hosts -->
            <readHost host="hostS2" url="192.168.20.3:3306" user="root" password="123.com" />
        </writeHost>
    </dataHost>
    <dataHost name="host2" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM2" url="192.168.20.21:3306" user="root"
                   password="123.com">
        </writeHost>
    </dataHost>
</mycat:schema>

2) 확인이 글로벌 테이블

mysql> drop table emp;    #需要删除之前创建的emp表
Query OK, 0 rows affected (0.03 sec)
#重新创建emp表
mysql> create table emp(
    -> id int,
    -> name varchar(10)
    -> );
Query OK, 0 rows affected (0.38 sec)
#插入数据测试
mysql>  insert into emp(id,name) values(1,'张三'),(2,'李四'),(3,'王五'),(4,'赵六');
#在mycat上查询插入的数据如下:
mysql> select * from emp;
+------+--------+
| id   | name   |
+------+--------+
|    1 | 张三   |
|    2 | 李四   |
|    3 | 王五   |
|    4 | 赵六   |
+------+--------+
4 rows in set (0.02 sec)
#在后端主机上分别查看emp表中的数据:
#mysql01主机上数据如下:
mysql> select * from emp;
+------+--------+
| id   | name   |
+------+--------+
|    1 | 张三   |
|    2 | 李四   |
|    3 | 王五   |
|    4 | 赵六   |
+------+--------+
4 rows in set (0.00 sec)
#mysql03主机上数据如下:
mysql> select * from emp;
+------+--------+
| id   | name   |
+------+--------+
|    1 | 张三   |
|    2 | 李四   |
|    3 | 王五   |
|    4 | 赵六   |
+------+--------+
4 rows in set (0.00 sec)

추천

출처blog.51cto.com/14154700/2470283