本文由陳超允修改於2017-09-23
本文作者:陳超允chenchaoyun0
- 前置條件
前一篇文章寫過mysql的主從同步,在此基礎上搭建mysql中間件
mysql安裝在兩臺服務器:ccy001、ccy002,端口都爲3306。ccy001爲主庫,ccy002爲從庫
- 安裝mycat
#下載
cd /u01/soft
#解壓
tar -zxvf Mycat-server-1.5.1-RELEASE-20161130213509-linux.tar.gz
mv mycat /u01/
cd /u01/mycat/
#創建啓停、查看日誌腳本
touch start.sh stop.sh tailLog.sh
vim start.sh
cd /u01/mycat/bin
./mycat start
vim stop.sh
cd /u01/mycat/bin/
./mycat stop
vim tailLog.sh
cd /u01/mycat
tail -100f logs/wrapper.log
- 修改基本配置
cd /u01/mycat/conf/
#vim schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
<!-- schema 中可以有多個table節點,列幾個在Navicat中就能看到幾個,庫裏有這裏沒有的話客戶端中也看不到 -->
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema>
<!-- 數據節點 -->
<dataNode
name="dn1"
dataHost="ccy001"
database="bookmanager" />
<!-- 節點主機信息 -->
<dataHost
name="ccy001"
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="root123">
<!-- 指定讀取數據的主機,可以有多個 -->
<readHost
host="hostS1"
url="118.89.222.115:3306"
user="root"
password="root123" />
</writeHost>
</dataHost>
<!-- <dataHost name="ccy002" maxCon="1000" minCon="10" balance="0" writeType="0"
dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select
user()</heartbeat> <writeHost host="hostM2" url="127.0.0.1:3306" user="root"
password="root123"> can have multi read hosts <readHost host="hostS2" url="123.206.68.97:3306"
user="root" password="root123" /> </writeHost> </dataHost> -->
</mycat:schema>
#vim server.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
<system>
<property name="defaultSqlParser">druidparser</property>
<!-- <property name="useCompression">1</property>--> <!--1爲開啓mysql壓縮協議-->
<!-- <property name="processorBufferChunk">40960</property> -->
<!--
<property name="processors">1</property>
<property name="processorExecutor">32</property>
-->
<!--默認是65535 64K 用於sql解析時最大文本長度 -->
<!--<property name="maxStringLiteralLength">65535</property>-->
<!--<property name="sequnceHandlerType">0</property>-->
<!--<property name="backSocketNoDelay">1</property>-->
<!--<property name="frontSocketNoDelay">1</property>-->
<!--<property name="processorExecutor">16</property>-->
<!--
<property name="mutiNodeLimitType">1</property> 0:開啓小數量級(默認) ;1:開啓億級數據排序
<property name="mutiNodePatchSize">100</property> 億級數量排序批量
<property name="processors">32</property> <property name="processorExecutor">32</property>
<property name="serverPort">8066</property> <property name="managerPort">9066</property>
<property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property>
<property name="frontWriteQueueSize">4096</property> <property name="processors">32</property> -->
</system>
<user name="admin">
<property name="password">admin</property>
<property name="schemas">TESTDB</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>
<user name="mycat">
<property name="password">mycat</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>
<user name="ccyusr">
<property name="password">ccyusr</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">false</property>
</user>
<!--
<quarantine>
<whitehost>
<host host="127.0.0.1" user="mycat"/>
<host host="127.0.0.2" user="mycat"/>
</whitehost>
<blacklist check="false"></blacklist>
</quarantine>
-->
</mycat:server>
#有可能出現啓動異常,內存不夠,修改
vim 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=2G
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=-Xms200M
#啓動
sh start.sh
#查看日誌
sh tailLog.sh
- 測試
用navicat連接,插入數據
分別在ccy001 ccy002 數據庫查看
mycat很多詳細配置需要學習下
關於配置文件,conf目錄下主要以下三個需要熟悉。
server.xml是Mycat服務器參數調整和用戶授權的配置文件
schema.xml是邏輯庫定義和表以及分片定義的配置文件
rule.xml是分片規則的配置文件
連接
mysql -hccy001 -uccyusr -p -P 8066
插入數據 讀取數據測試即可