1 安装mysql的镜像

如果服务器较少,为了充分发挥现有服务器的利用率,可以使用容器化技术来安装mysql。

如果服务器没有docker,需要先安装docker

yum install -y docker

docker安装后,启动服务

service docker start

下载mysql 5.7 版本的docker镜像

docker pull mysql:5.7

MyCat05——基于Docker搭建MySQL主从复制_docker

2 启动mysql服务

启动主节点的mysql服务

--name 指定容器名

-p 指定端口,作为数据库3306 的映射端口

-e 设置环境变量,在这里为数据库root指定密码

-d 在后台运行容器

docker run --name master -p 3366:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

启动从节点的mysql服务

docker run --name slave -p 3377:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

通过命令 docker ps 可以查看到当前两个节点的 mysql 服务都已启动。

MyCat05——基于Docker搭建MySQL主从复制_mysql_02

3 主从配置

3.1 修改主节点配置

进入到容器内部

docker exec -it master /bin/bash

进入容器后,因为要修改配置文件内容,而容器中默认没有 vim 编辑器,需要手动进行安装,在容器中可以直接执行

yum install -y vim

修改配置文件,有些地方的配置文件可能位置不同,猜测可能是因为容器的版本不同。

vim /etc/my.cnf

在[mysqld]下增加以下两项配置

log-bin=bin_log

server-id=1

MyCat05——基于Docker搭建MySQL主从复制_docker_03

修改完成并保存。 然后退出容器,并使用 docker 指令重启容器。

docker restart master

3.2 修改从节点配置

进入容器内部

docker exec -it slave /bin/bash

安装vim编辑器,与master部分相同,因为是来自同一个镜像包,所以默认也没有该编辑器。

yum install -y vim

修改配置文件

vim /etc/my.cnf

在[mysqld]下增加以下两项配置,这里的 server-id 和 master 必须不同。

log-bin=bin_log

server-id=2

修改完成并保存。 然后退出容器,并使用 docker 指令重启容器。

docker restart slave

4 创建主从复制

4.1 查看主节点IP地址

通过 docker inspect 指令查看 master 节点的IP地址

docker inspect master

MyCat05——基于Docker搭建MySQL主从复制_vim_04

4.2 主节点配置

进入到主节点mysql命令行,创建用于同步binlog文件的用户并分配权限 进入容器

docker exec -it master /bin/bash

进入mysql命令行

mysql -uroot -p123456

创建同步binlog的用户,并分配权限

grant replication slave on *.* to 'slave_user'@'%' identified by '123456';

查看主节点binlog信息

show master status;

MyCat05——基于Docker搭建MySQL主从复制_mysql_05

4.3 从节点配置

进入容器

docker exec -it slave /bin/bash

进入mysql

mysql -uroot -p123456

使用4.1得到的master节点IP地址,及4.2中得到的master节点binlog信息,在从节点中进行同步设置

change master to master_host='172.17.0.2',master_user='slave_user',master_password='123456',master_log_file='bin_log.000001',master_log_pos=443;

MyCat05——基于Docker搭建MySQL主从复制_vim_06

启动主从复制

start slave;

查看从节点主从复制的状态

show slave status \G;

可以看到主从复制机制已经建立成功。

MyCat05——基于Docker搭建MySQL主从复制_vim_07

5 验证主从复制

在主节点创建数据库、数据表,并插入一条记录

MyCat05——基于Docker搭建MySQL主从复制_vim_08

在从节点中查询该条记录

MyCat05——基于Docker搭建MySQL主从复制_docker_09