1. 程式人生 > >Mycat快速入門(五): Mycat讀寫分離案例

Mycat快速入門(五): Mycat讀寫分離案例

一:mysql主從複製

在這裡插入圖片描述

參考 Centos7安裝MySQL5.7和主從複製配置

二:Mycat配置

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="defaultSqlParser"
>
druidparser</property> <property name="mutiNodeLimitType">1</property> <!-- mycat服務的埠號 --> <property name="serverPort">8066</property> <!-- mycat管理的埠號 --> <property name="managerPort"
>
9066</property> </system> <!-- 配置連線Mycat的使用者名稱, 密碼, 邏輯資料庫名稱 --> <user name="root"> <property name="password">root123</property> <property name="schemas">testdb</property> </user> <
user
name="guest">
<property name="password">guest123</property> <property name="schemas">testdb</property> <property name="readOnly">true</property> </user> </mycat:server>

conf/schema.xml

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

    <schema name="testdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="dataNode1">
    </schema>  

    <dataNode name="dataNode1" dataHost="dataHost1" database="db1" />
 
    <dataHost name="dataHost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100">  
        <heartbeat>show slave status</heartbeat>  
        <writeHost host="hostMaster" url="172.16.128.152:3306" user="root" password="root123">
            <readHost host="hostSlave1" url="172.16.128.153:3306" user="root" password="root123" />
        </writeHost>
        <writeHost host="hostSlave2" url="172.16.128.148:3306" user="root" password="root123" />
    </dataHost>
</mycat:schema>

重啟mycat

bin/mycat restart

三:資料庫準備

-- 連線mycat,在mycat上建立資料庫master、slave1、slave2都會建立db1資料庫
mysql> CREATE DATABASE `db1` DEFAULT CHARACTER SET utf8mb4;

mysql> CREATE TABLE `tbl_order` (
  `id` bigint(20) NOT NULL,
  `order_code` varchar(25) DEFAULT NULL,
  `user_id` bigint(20) DEFAULT NULL,
  `amount` bigint(20) DEFAULT NULL,
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

mysql> INSERT INTO tbl_order(id, order_code, user_id, amount)VALUES(1, '20181027160000000001', 1, 100);

mysql> select * from tbl_order;

master
在這裡插入圖片描述

slave1
在這裡插入圖片描述

slave2
在這裡插入圖片描述

mycat 查詢走從節點
在這裡插入圖片描述