搭建环境
搭建Mysql主从服务
下载Mysql镜像
1 | docker pull mysql:5.7 |
创建Mysql挂载目录
1 | mkdir -p /opt/mysql/master/{conf,data,logs} |
1 | mkdir -p /opt/mysql/slave/{conf,data,logs} |
进入conf目录中编辑my.cnf
主配置文件
1 | [client] |
从配置文件
1 | [client] |
运行Mysql容器
1 | docker run -it --name mysql-master -p 3308:3306 -e MYSQL_ROOT_PASSWORD=root --privileged=true -v /opt/mysql/master/conf/my.cnf:/etc/mysql/my.cnf -v /opt/mysql/master/data:/var/lib/mysql -v /opt/mysql/master/logs:/var/log/mysql -d --restart=always mysql:5.7 |
1 | docker run -it --name mysql-slave -p 3309:3306 -e MYSQL_ROOT_PASSWORD=root --privileged=true -v /opt/mysql/slave/conf/my.cnf:/etc/mysql/my.cnf -v /opt/mysql/slave/data:/var/lib/mysql -v /opt/mysql/slave/logs:/var/log/mysql -d --restart=always mysql:5.7 |
运行mysql容器也可用docker-compose启动yml
新建docker 网桥
1 | docker network create --subnet=172.101.0.0/16 Mycat-net |
主 Mycat-mysql57-master.yml
1 | #mkdir -p /data/Mycat-mysql57-master/{conf,data,logs,mysql} |
从 Mycat-mysql57-slave.yml
1 | #mkdir -p /data/Mycat-mysql57-slave/{conf,data,logs,mysql} |
查看容器
1 | [root@localhost ~]# docker ps |
连接到主服务器
查询主对应配置文件中的server_id,查询到了说明已经以上步骤ok。
1 | show variables like '%server_id%'; |
查询主状态信息
1 | show master status; |
连接从服务器
同步主服务器配置
1 | change master to master_host='172.101.0.10',master_user='root',master_password='root', master_log_file='mysql-bin.000005',master_log_pos=154; |
开始同步
1 | start slave; |
检查从服务器复制功能状态
1 | SHOW SLAVE STATUS; |
Slave_IO_Running 、Slave_SQL_Running 都为Yes说明配置成功,验证效果,在主节点,新建数据库,和表,从库自动生成。
注意:不要在从库操作,会造成同步不正常,主从配置失效;
解决办法,将从库同步配置停止,将主库数据重新导入从库,再次执行一次主从配置;
搭建Mycat环境
下载 mycat包
1 | wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz |
若出现 wget: unable to resolve host address ‘dl.mycat.io’
解决方案:
编辑/etc/hosts文件,添加 210.51.26.184 dl.mycat.io配置
1 | vim /etc/hosts |
1 | root@bigdata01 ~]# cat /etc/hosts |
编写Dockerfile
1 | FROM java:8 |
获取配置文件
1 | tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz |
1.2.4 修改mycat配置文件
真正需要修改的只有三个文件,具体官方文档写的很详细;
(1):schema.xml ,(2):server.xml,(3):rule.xml;
现在搭建的是Mysql读写分离,修改schema.xml、server.xm即可。rule.xml用于分表分库配置文件。
1 | <?xml version="1.0"?> |
1 | <?xml version="1.0" encoding="UTF-8"?> |
执行Dockerfile
1 | docker build -t mycat:1.6.5 . |
启动mycat
1 | docker run -d --rm -p:8066:8066 --name mycat-mysql -p 9066:9066 -v $PWD/logs:/mycat/logs -v $PWD/conf:/mycat/conf mycat:1.6.5 |
也可通过docker-compse启动yml
Mycat1.6.5.yml
1 | #mkdir -p /data/Mycat/{conf,logs} |
验证效果
连接这四个服务
在root服务修改数据,其他三个服务的数据自动同步相应的修改。
在user服务修改数据报错,只允许读数据。
说明:
8066为mycat 操作myslq 的端口,可查询库,和增删改查等操作
9066为mycat 管理myslq 的端口,可查询操作日志,操作用户,和用时等
一辈子很短,努力的做好两件事就好:
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱。