1、環境及版本
操作系統: CentOS 7.5
MySQL:5.7.23
jdk:1.8.0_191
MyCat:1.6.6.1
cat /etc/centos-release mysql -V java -version
2、安裝包准備
下載網站:http://dl.mycat.io/1.6.6/
【2】上傳至linux服務器:
mkdir /home/rhr/soft/mycat cd /home/rhr/soft/mycat rz
3、開始安裝
【1】解壓
tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
【2】安裝tree(可選,使目錄結構更好看)
yum -y install tree
查看tree:
4、創建用戶並修改配置文件
【1】為了更好的進入mycat,設置MYCAT_HOME的變量
vim /etc/profile
添加綠色部分:
export JAVA_HOME=/home/rhr/soft/jdk/jdk1.8.0_191
export MYCAT_HOME=/home/rhr/soft/mycat/mycat
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:/usr/local/mysql/bin:$MYCAT_HOME/bin:$PATH
使得變量生效
source /etc/profile
檢查
【2】配置mycat文件
(1)修改server.xml
cd home/rhr/soft/mycat/mycat/conf cp server.xml server_bak.xml vim server.xml
修改前:
修改后:
(2)修改schema.xml
1) 修改schema 標簽
修改前:
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"> <!-- auto sharding by id (long) --> <table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" /> <!-- global table is auto cloned to all defined data nodes ,so can join with any table whose sharding node is in the same data node --> <table name="company" primaryKey="ID" type="global" dataNode="dn1,dn2,dn3" /> <table name="goods" primaryKey="ID" type="global" dataNode="dn1,dn2" /> <!-- random sharding using mod sharind rule --> <table name="hotnews" primaryKey="ID" autoIncrement="true" dataNode="dn1,dn2,dn3" rule="mod-long" /> <!-- <table name="dual" primaryKey="ID" dataNode="dnx,dnoracle2" type="global" needAddLimit="false"/> <table name="worker" primaryKey="ID" dataNode="jdbc_dn1,jdbc_dn2,jdbc_dn3" rule="mod-long" /> --> <table name="employee" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-intfile" /> <table name="customer" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-intfile"> <childTable name="orders" primaryKey="ID" joinKey="customer_id" parentKey="id"> <childTable name="order_items" joinKey="order_id" parentKey="id" /> </childTable> <childTable name="customer_addr" primaryKey="ID" joinKey="customer_id" parentKey="id" /> </table> <!-- <table name="oc_call" primaryKey="ID" dataNode="dn1$0-743" rule="latest-month-calldate" /> --> </schema>
修改后:
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"> <!-- auto sharding by id (long) --> <table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" /> <!-- global table is auto cloned to all defined data nodes ,so can join with any table whose sharding node is in the same data node --> <table name="company" primaryKey="company_id" type="global" dataNode="dn1,dn2,dn3" /> <table name="goods" primaryKey="goods_id" type="global" dataNode="dn1,dn2" /> <!-- random sharding using mod sharind rule --> <table name="hotnews" primaryKey="hotnews_id" autoIncrement="true" dataNode="dn1,dn2,dn3" rule="mod-long" /> <!-- <table name="dual" primaryKey="ID" dataNode="dnx,dnoracle2" type="global" needAddLimit="false"/> <table name="worker" primaryKey="ID" dataNode="jdbc_dn1,jdbc_dn2,jdbc_dn3" rule="mod-long" /> --> <table name="employee" primaryKey="employee_id" dataNode="dn1,dn2" rule="sharding-by-intfile" /> <table name="customer" primaryKey="customer_id" dataNode="dn1,dn2" rule="sharding-by-murmur"> <childTable name="orders" primaryKey="order_id" joinKey="customer_id" parentKey="customer_id"> <childTable name="order_items" joinKey="order_id" parentKey="order_id" /> </childTable> <childTable name="customer_addr" primaryKey="customer_addr_id" joinKey="customer_id" parentKey="customer_id" /> </table> <!-- <table name="oc_call" primaryKey="ID" dataNode="dn1$0-743" rule="latest-month-calldate" /> --> </schema>
2) 修改schema 標簽
修改前
<!-- can have multi write hosts --> <writeHost host="hostM1" url="localhost:3306" user="root" password="123"> <!-- can have multi read hosts --> <readHost host="hostS2" url="localhost:3306" user="root" password="123" /> </writeHost> <writeHost host="hostS1" url="localhost:3306" user="root" password="123" /> <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
修改后:
<!-- can have multi write hosts --> <writeHost host="hostM1" url="localhost:3306" user="root" password="YYBrhr_2018"> <!-- can have multi read hosts --> <!-- <readHost host="hostS2" url="localhost:3306" user="root" password="123" /> --> </writeHost> <!-- <writeHost host="hostS1" url="localhost:3306" user="root" password="123" /> --> <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> --> </dataHost>
(3)修改role.xml
修改前:
<tableRule name="sharding-by-intfile"> <rule> <columns>sharding_id</columns> <algorithm>hash-int</algorithm> </rule> </tableRule> <tableRule name="auto-sharding-long"> <rule> <columns>id</columns> <algorithm>rang-long</algorithm> </rule> </tableRule> <tableRule name="mod-long"> <rule> <columns>id</columns> <algorithm>mod-long</algorithm> </rule> </tableRule> <tableRule name="sharding-by-murmur"> <rule> <columns>id</columns> <algorithm>murmur</algorithm> </rule> </tableRule>
修改后:
<tableRule name="sharding-by-intfile"> <rule> <columns>employee_id</columns> <algorithm>hash-int</algorithm> </rule> </tableRule> <tableRule name="auto-sharding-long"> <rule> <columns>id</columns> <algorithm>rang-long</algorithm> </rule> </tableRule> <tableRule name="mod-long"> <rule> <columns>hotnews_id</columns> <algorithm>mod-long</algorithm> </rule> </tableRule> <tableRule name="sharding-by-murmur"> <rule> <columns>customer_id</columns> <algorithm>murmur</algorithm> </rule> </tableRule>
5、啟動mycat並測試
【1】啟動mycat
mycat start
mycat status
【2】測試
mysql -u root -p -P8066 -h 127.0.0.1
這里輸入的密碼,是在/home/rhr/soft/mycat/mycat/conf/server.xml里面看到的密碼
這樣就說明安裝成功了,安裝或者啟動mycat之前