[環境]
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端口需要啓動。