搭建Mycat環境
1.2 搭建Mycat環境
1.2.1 獲取資源
#先獲取mycat包(其他版本下載地址:http://dl.mycat.org.cn/1.6.7.1/)
mkdir -p /data/mycat cd /data/mycat wget http://dl.mycat.org.cn/1.6.7.1/Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz
1.2.2 編寫Dockerfile
FROM java:8 USER root COPY Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz / RUN tar -zxf /Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz ENV MYCAT_HOME=/mycat ENV PATH=$PATH:${MYCAT_HOME}/bin WORKDIR $MYCAT_HOME/bin RUN chmod u+x ./mycat EXPOSE 8066 9066 CMD ["./mycat", "console"]
1.2.3 獲取配置文件
tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz mv mycat/conf/ conf
目錄結構如下:
1.2.4 修改mycat配置文件
真正需要修改的只有三個文件,具體官方文檔寫的很詳細;
(1):schema.xml ,(2):server.xml,(3):rule.xml;
現在搭建的是Mysql讀寫分離,修改schema.xml、server.xm即可。rule.xml用於分表分庫配置文件。
schema.xml文件代碼:
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="mycat" checkSQLschema="false" sqlMaxLimit="100"> <table name="user" primaryKey="ID" dataNode="dn1,dn2" /> </schema> <dataNode name="dn1" dataHost="localhost1" database="demo2" /> <dataNode name="dn2" dataHost="localhost1" database="demo3" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="172.18.0.10:3306" user="root" password="root"> <readHost host="hostM1" url="172.18.0.11:3306" user="root" password="root"> </readHost> </writeHost> </dataHost> </mycat:schema>
server.xm文件代碼:
<?xml version="1.0" encoding="UTF-8"?> <!-- - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --> <!DOCTYPE mycat:server SYSTEM "server.dtd"> <mycat:server xmlns:mycat="http://io.mycat/"> <!-- 讀寫都可用的用戶 --> <user name="root" defaultAccount="true"> <property name="password">123456</property> <property name="schemas">mycat</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="user"> <property name="password">user</property> <property name="schemas">mycat</property> <property name="readOnly">true</property> </user> </mycat:server>
1.2.5 執行Dockerfile生成鏡像
cd /data/mycat/ docker build -t mycat:1.6 .
1.2.6 編寫mycat啟動腳本($PWD表示當前目錄)
docker run -d -p:8066:8066 --name mysql-mycat --net docker-network --ip 172.18.0.20 -p 9066:9066 -v $PWD/logs:/mycat/logs -v $PWD/conf:/mycat/conf mycat:1.6
效果如下:
有時候 docker run 啟動容器失敗,需要刪除以下自動生成的logs文件夾,再重新docker run
或使用 docker logs mysql-mycat 查看報錯原因
docker logs mysql-mycat
1.2.7 驗證效果