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的问题
来源:CSDN
作者:落魄陶陶
链接:https://blog.csdn.net/luopotaotao/article/details/79128009