1.Mysql集群------Docker下的Mysql主从复制

前言:

实话说,我想做的是Mysql集群架构。

我的计划是:

1.实现Docker下的Mysql主从复制

2.实现MyCat基于Mysql的读写分离

3.实现MyCat的分库分表

4.实现pxc集群

5.综合MyCat和pxc实现高可用、高并发的数据库集群架构

当然,现在的我还是一个小菜鸟,尤其是第一次上手docker上配置Mysql的主从复制,

自己一路跳坑,终于走出了黑暗。

这里,我就带领大家进入我的坑计划。

开始搬砖:

1.安装docker

(1)登录linux

(2)下载docker

命令:yum install docker

就这么简单

2.安装mysql镜像

(1)开启docker

命令:service docker start

(2)拉取Mysql,注意Mysql5以后的版本才支持主从复制

我这里是去网易蜂巢取得镜像:https://c.163yun.com/hub#/m/home/

命令:docker pull hub.c.163.com/library/mysql:latest

拉取完之后查询镜像

命令:docker images

1.Mysql集群------Docker下的Mysql主从复制

3.配置主从复制

(1)创建配置文件

目录:/usr/local/mysql/   注意:目录你个人设定,这不过是我自己的爱好

主数据库(master)配置文件/usr/local/mysql/master/my.cnf:

[mysqld]

log-bin=mysql-bin

server-id=1     #注意这个id>0且要唯一

从数据库(slave)配置文件/usr/local/mysql/slave/my.cnf:

[mysqld]

log-bin=mysql-bin

server-id=2     #注意这个id>0且要唯一

注意:我是在容器外部进行的配置,喜欢进入容器内部配置的请稍等。

(2)开启主从数据库

开启主数据库:

1.Mysql集群------Docker下的Mysql主从复制

开启从数据库:

1.Mysql集群------Docker下的Mysql主从复制

查看容器状态:

1.Mysql集群------Docker下的Mysql主从复制

在这里,容器就正常打开了。

喜欢进入容器内部修改配置文件的注意了:

进入主数据库命令:docker exec -it mysql /bin/bash

1.Mysql集群------Docker下的Mysql主从复制

修改my.cnf配置文件命令:vi /etc/mysql/my.cnf

1.Mysql集群------Docker下的Mysql主从复制

oh my 上帝!里面的vi、vim命令都不能用!!!

上天难不倒有心之人,我装一个vim(实话说,vi是怎么装怎么失败,vim偶尔成功,但老子用的是集群啊,对,每一个容器都得装一遍vim,so,我启用外部的配置文件)

命令:apt-get update

1.Mysql集群------Docker下的Mysql主从复制

命令:apt-get install vim

1.Mysql集群------Docker下的Mysql主从复制

(这一次神奇的装成功了)

照着上边修改配置文件修改下my.cnf就可以了。

命令:vim /etc/mysql/my.cnf

1.Mysql集群------Docker下的Mysql主从复制

配置成功的同学,保存,重启容器,照此再配置从服务器。

(3)重中之重的主从配置环节

---------------------------------------------------------------------------------------------------------------------------------master数据库配置-----------------------------------------------------------------------------------------------------------------------

master数据库创建授权用户:

grant all privileges on *.* to 'username'@'ip' identified by 'password' with grant option;

flush privileges;

1.Mysql集群------Docker下的Mysql主从复制

%是统配字符,表示所有ip都可以连接,这个ip主要是从数据库的ip

喜欢进入容器内部进行黑窗操作的同学请不要介意,我是喜欢这样用客户端哈哈。

查询用户,host:select user,host from mysql.user;

1.Mysql集群------Docker下的Mysql主从复制

查看master状态:show master status;

1.Mysql集群------Docker下的Mysql主从复制

主数据库的配置环节到此就完成了。

---------------------------------------------------------------------------------------------------------------------------------slave数据库配置-----------------------------------------------------------------------------------------------------------------------

停止slave:stop slave;

配置连接master数据库:

change master to master_host=’ip’, master_user=’username’, master_password=’password’, master_log_file=’log_file_name’;

1.Mysql集群------Docker下的Mysql主从复制

开启slave:start slave;

查询slave状态:show slave status;

1.Mysql集群------Docker下的Mysql主从复制

当你的Slave_IO_State也是这样就完成了。

但是可惜的是,如果你不知道这个细节,你永远是完不成的。

注意:上面填写的ip,一定一定是docker容器的ip,而不是虚拟机的ip。

来查看下,docker容器的ip:

1.Mysql集群------Docker下的Mysql主从复制

上一篇:yii2整理


下一篇:CentOS7下部署rsync服务