MyCat實現MySQL5.7讀寫分離與分庫分表

[環境]

MySQL主庫:192.168.92.201

MySQL從庫:192.168.92.202

MyCat:1.6.7.1

JDK:jdk-8u131-linux-x64.rpm

1.建立MySQL主從庫

--主庫操作
create user 'ms'@'192.168.92.202' identified by '密碼';
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO ms@'192.168.92.202' IDENTIFIED BY '密碼'; 
flush privileges;

--從庫操作
CHANGE MASTER TO MASTER_HOST='192.168.92.201', MASTER_USER='ms', MASTER_PASSWORD='密碼', MASTER_LOG_FILE='mysql-bin.000011', MASTER_LOG_POS=154;
start slave;

2.下載mycat 

安裝mycat之前,需要安裝jdk。

wget  http://dl.mycat.io/1.6.7.1/Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz
#解壓
tar -xzvf Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz

3.參數文件配置

3.1 wrapper.conf 內存調整

# Java Additional Parameters
#wrapper.java.additional.1=
wrapper.java.additional.1=-DMYCAT_HOME=.
wrapper.java.additional.2=-server
wrapper.java.additional.3=-XX:MaxPermSize=64M
wrapper.java.additional.4=-XX:+AggressiveOpts
wrapper.java.additional.5=-XX:MaxDirectMemorySize=1G
wrapper.java.additional.6=-Dcom.sun.management.jmxremote
wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=1984
wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.9=-Dcom.sun.management.jmxremote.ssl=false
wrapper.java.additional.10=-Xmx1G
wrapper.java.additional.11=-Xms512M

3.2 server.xml 配置白名單和用戶信息

        <firewall>
           <whitehost>
              <host host="172.*.*.*" user="root"/>
              <host host="192.168.*.*" user="root"/>
           </whitehost>
       <blacklist check="false">
       </blacklist>
        </firewall>

        <user name="root" defaultAccount="true">
                <property name="password">密碼</property>
                <property name="schemas">product</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>

3.3 schema.xml服務器節點

schema 邏輯彙總數據庫 ——> 數據庫分庫dataNode ——> 數據庫服務器節點dataHost

mod-long規則對t1表的主鍵進行求模,將記錄分散到3個庫的t1表中。

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


<schema name="product" checkSQLschema="false" sqlMaxLimit="100"  >
<table name="t1" primaryKey="id" dataNode="dn1,dn2,dn3" rule="mod-long"/>
</schema>

    <dataNode name="dn1" dataHost="node1" database="product01" />
    <dataNode name="dn2" dataHost="node1" database="product02" />
    <dataNode name="dn3" dataHost="node1" database="product03" />

    <dataHost name="node1" maxCon="3000" minCon="100" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="-1">
        <heartbeat>select user()</heartbeat>
        <writeHost host="mysql-master01" url="192.168.92.201:3306" user="root" password="密碼">
            <readHost host="mysql-slave01" url="192.168.92.202:3306" user="root" password="密碼" />
        </writeHost>
    </dataHost>
</mycat:schema>

3.4 rule.xml 修改表的主鍵名(如果不是id的話)

4.啓動與停止

cd /app/mycat/bin
./mycat start
./mycat stop

5.驗證

mycat啓動需要等待2分鐘左右,3306端口需要啓動。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章