使用Docker部署基於MyCat的MySql

Mysql已經提供了Docker image,可以很方便開啓一個mysql服務器。

1. Pull Mysql Image


$ docker pull mysql


前提是已經安裝Docker,這個可以參考docker官網,步驟很詳細。

2. 創建外部數據掛載點


$ sudo mkdir -p /var/docker/mysql/data_0
$ sudo mkdir -p /var/docker/mysql/data_1
$ sudo mkdir -p /var/docker/mysql/data_2
$ sudo chmod 775 -R /var/docker/mysql/


除了這種方式,也可選擇使用Docker數據卷。

3. 啓動Mysql容器

通過-e參數可以設定一下Mysql服務端的參數,這裏設置了root的密碼,並且創建了一個密碼爲dev的用戶dev。
CentOS 下需要加 --privileged=true  ,ubuntu 不需要


$ docker run --privileged=true -p 3307:3306 --name mysql-test0 -v /var/docker/mysql/data_0/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=dev -e MYSQL_PASSWORD=dev -d mysql
$ docker run --privileged=true -p 3308:3306 --name mysql-test1 -v /var/docker/mysql/data_1/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=dev -e MYSQL_PASSWORD=dev -d mysql
$ docker run --privileged=true -p 3309:3306 --name mysql-test2 -v /var/docker/mysql/data_2/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=dev -e MYSQL_PASSWORD=dev -d mysql

$ docker ps


4. 在宿主機安裝並配置MyCat


     或者創建MyCat鏡像,以Docker服務方式啓動(參見創建Docker鏡像部分)
     下載mycat
wget http://219.238.7.66/files/718600000960CC62/dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
 解壓至 /usr/local 目錄
tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz /usr/local/
        配置mycat
          主要在/usr/local/mycat/conf/server.xml 和 schema.xml中
               server.xml中,取消掉33-35行的註釋
               schema.xml中,其他部分不用修改,dataNode和dataHost部分修改爲以下內容,注意IP改爲相應主機IP


  <dataNode name="dn1" dataHost="localhost1" database="db1" />
    <dataNode name="dn2" dataHost="localhost2" database="db1" />
    <dataNode name="dn3" dataHost="localhost3" database="db1" />
    <!--<dataNode name="dn4" dataHost="sequoiadb1" database="SAMPLE" />
     <dataNode name="jdbc_dn1" dataHost="jdbchost" database="db1" />
    <dataNode    name="jdbc_dn2" dataHost="jdbchost" database="db2" />
    <dataNode name="jdbc_dn3"     dataHost="jdbchost" database="db3" /> -->
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM1" url="192.168.189.181:3306" user="root" password="root"></writeHost>
    </dataHost>
    <dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM1" url="192.168.189.181:3307" user="root" password="root"></writeHost>
    </dataHost>
    <dataHost name="localhost3" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM1" url="192.168.189.181:3308" user="root" password="root"></writeHost>
    </dataHost>


5.創建db,創建表

     依次連接三個mysql服務,創建名爲db1的數據
     連接mycat服務 注意端口爲8066,並執行建表語句
    


create table travelrecord (id bigint not null primary key,user_id varchar(100),traveldate DATE, fee decimal,days int);


執行插入操作,
執行查詢查看是否全部插入


insert into travelrecord(id,user_id,traveldate,fee,days)  values(1,'Victor',20160101,100,10);
insert into travelrecord(id,user_id,traveldate,fee,days)  values(5000001,'Job',20160102,100,10);
insert into travelrecord(id,user_id,traveldate,fee,days)  values(10000001,'Slow',20160103,100,10);
select * from travelrecord;


再依次到各個獨立的mysql服務中查詢,可以看到每個mysql中都有一個travelrecord表,每個表中都有一條記錄,組合起來恰好是mycat的查詢結果
CentOS下docker啓動mysql的問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章