更多的介紹能夠去官網:html
http://www.mycat.io/
複製代碼
開始以前要啓動mysql, 這裏就不贅述了, 能夠參考以前的《Docker實戰及經常使用服務安裝》 mysql
2.一、新建目錄linux
mkdir -p /srv/mycat
mkdir -p /usr/local/mycat
複製代碼
2.二、下載mycat安裝包sql
cd /srv/mycat
wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
mv Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz mycat.tar.gz
複製代碼
2.三、解壓文件,複製配置文件docker
tar -zxvf mycat.tar.gz
cp -r /srv/mycat/conf/ /usr/local/mycat/conf/
複製代碼
2.四、建立Dockerfile數據庫
cd /srv/mycat
vim Dockerfile
複製代碼
Dockerfile 文件內容vim
FROM openjdk:8
ADD mycat.tar.gz /usr/local/
VOLUME /usr/local/mycat/conf
ENV MYCAT_HOME=/usr/local/mycat
EXPOSE 8066 9066
CMD ["/usr/local/mycat/bin/mycat", "console","&"]
複製代碼
2.五、建立mycat鏡像bash
Dockerfile所在目錄下執行服務器
docker build -t mycat-1.6 .
複製代碼
構建過程可能須要一些時間, 若是以前沒有jdk8的鏡像它會爲咱們自動下載學習
構建完成以後能夠經過docker images 進行查看
2.六、修改mycat配置文件
以前已經將配置文件都copy到咱們新建的目錄
cd /usr/local/mycat/conf
ls
複製代碼
mycat 主要的應該就是配置文件的配置了,主要如下三個須要熟悉。
server.xml是Mycat服務器參數調整和用戶受權的配置文件
schema.xml是邏輯庫定義和表以及分片定義的配置文件
rule.xml是分片規則的配置文件
配置文件更詳細的介紹能夠百度找找, 別的我也是剛接觸不是很清楚
server.xml 裏面能夠修改root 的密碼,默認是123456,這裏爲了和以前MySQL數據庫一致我就改爲root了
schema.xml:
這裏沒用的我已經都刪除了,配置了3個分片,這樣簡單的一個分庫分表就配置完了
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
<!-- auto sharding by id (long) -->
<table name="user_table" dataNode="dn1" primaryKey="id"/>
<table name="test_table" dataNode="dn1,dn2,dn3" rule="mod-long" autoIncrement="true" primaryKey="id"/>
<table name="db_table" dataNode="dn1,dn2,dn3" rule="mod-long" autoIncrement="true" primaryKey="id"/>
</schema>
<dataNode name="dn1" dataHost="localhost1" database="db1"/>
<dataNode name="dn2" dataHost="localhost1" database="db2"/>
<dataNode name="dn3" dataHost="localhost1" database="db3"/>
<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="192.0.0.131:3307" user="root" password="root">
<readHost host="hostS1" url="192.0.0.131:3307" user="root" password="root" />
</writeHost>
</dataHost>
</mycat:schema>
複製代碼
更多詳細的配置能夠參考:
https://www.cnblogs.com/icebutterfly/p/9505624.html
複製代碼
2.七、建立數據庫和表
我這裏只經過docker啓動了一個數據庫實例, 因此新建三個數據庫
建庫,db一、db二、db3:
CREATE DATABASE IF NOT EXISTS db1 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE DATABASE IF NOT EXISTS db2 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE DATABASE IF NOT EXISTS db3 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
複製代碼
表test_table:
CREATE TABLE `test_table` (
`id` smallint(6) NOT NULL,
`name` varchar(500) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
複製代碼
表user_table:
CREATE TABLE `user_table` (
`id` smallint(6) NOT NULL,
`user_name` varchar(100) DEFAULT NULL,
`password` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
複製代碼
2.八、啓動mycat
docker run --name mycat -p 8066:8066 -p 9066:9066 -v /usr/local/mycat/conf/:/usr/local/mycat/conf -d mycat-1.6
複製代碼
啓動成功以後, 會返回容器id
這裏能夠經過docker logs mycat,進行日誌的查看
docker logs mycat
複製代碼
2.九、測試
可使用Navicat 進行鏈接, ip地址就是服務器的ip,端口是8066, 用戶名密碼都是root
mycat虛擬表:
MySQL數據庫,其中db1有本身單獨的user_table表:
mycat中執行插入語句
INSERT INTO test_table(id, name) VALUES (1, '測試1');
INSERT INTO test_table(id, name) VALUES (2, '測試2');
INSERT INTO test_table(id, name) VALUES (3, '測試3');
INSERT INTO test_table(id, name) VALUES (4, '測試4');
INSERT INTO test_table(id, name) VALUES (5, '測試5');
INSERT INTO test_table(id, name) VALUES (6, '測試6');
INSERT INTO user_table(id, user_name, password) VALUES (1, 'zhangsan', '123456');
INSERT INTO user_table(id, user_name, password) VALUES (2, 'lisi', '123456');
複製代碼
查看3個庫的數據
查看mycat虛擬表數據
修改一條試一下
update test_table set name = '測試修改' where id = 1
複製代碼
沒有問題, 這樣一個簡單的分庫分表就實現了, 僅限於學習, 真正運用到生產要考慮的事情還有不少。
須要注意的是,表的新增、刪除都須要先修改schema.xml,要想在加入讀寫分離的話,能夠參考以前的MySQL主從複製的配置