centOs7 基于docker 安装mysql主从复制mysql数据库

1 首先拉取mysql镜像 我选择的是mysql5.7

docker pull mysql:5.7

2 在宿主机上准备挂载的目录

  我的准备截图:

    centOs7 基于docker 安装mysql主从复制mysql数据库_第1张图片

mkdir /dockerData/mysqlData -p
cd /dockerData/mysqlData
mkdir mysqlMaster
mkdir mysqlSlave
cd mysqlMaster
mkdir data conf logs
cd  ../mysqlSlave
mkdir data conf logs

(打错了 是创建confs不是conf 请注意   如果上面是conf  那么下面容器启动的挂载目录需要保持一致)

3 准备mysql配置文件

进入 /dockerData/mysqlData/mysqlMaster/confs

创建  my.cnf

内容如下:

[mysqld]
server-id=3306   #任意自然数n,只要保证两台MySQL主机不重复就可以了。
log-bin=mysql-bin   #开启二进制日志
#auto_increment_increment=2   #步进值auto_imcrement。一般有n台主MySQL就填n
#auto_increment_offset=1   #起始值。一般填第n台主MySQL。此时为第一台主MySQL
#binlog-ignore=mysql   #忽略mysql库【我一般都不写】
#binlog-ignore=information_schema   #忽略information_schema库【我一般都不写】
#replicate-do-db=aa   #要同步的数据库,默认所有库

 

进入 /dockerData/mysqlData/mysqlSlave/confs

创建  my.cnf

内容如下:

[mysqld]
server-id=3307   #任意自然数n,只要保证两台MySQL主机不重复就可以了。
log-bin=mysql-bin   #开启二进制日志
#auto_increment_increment=2   #步进值auto_imcrement。一般有n台主MySQL就填n
#auto_increment_offset=1   #起始值。一般填第n台主MySQL。此时为第一台主MySQL
#binlog-ignore=mysql   #忽略mysql库【我一般都不写】
#binlog-ignore=information_schema   #忽略information_schema库【我一般都不写】
#replicate-do-db=aa   #要同步的数据库,默认所有库

 

4 准备工作做完了  现在开始启动容器

master 启动指令

 docker run 
 --privileged=true 
 --name mysqlmaster -d
 -v /dockerData/mysqlData/mysqlMaster/data:/var/lib/mysql
 -v /dockerData/mysqlData/mysqlMaster/confs:/etc/mysql/conf.d 
 -v /dockerData/mysqlData/mysqlMaster/logs:/logs -e MYSQL_ROOT_PASSWORD=pps123
 -p 3306:3306 mysql:5.7

--privileged==true   赋予权限 避免一些奇妙问题

--name  给容器起名

-v 将mysal数据挂载到宿主机上的相应目录

-e mysql root用户的密码设置

-p 宿主机的端口对应容器的端口  

slave 启动指令

​
 docker run 
 --privileged=true 
 --name mysqlslave -d
 -v /dockerData/mysqlData/mysqlSlave/data:/var/lib/mysql
 -v /dockerData/mysqlData/mysqlSlave/confs:/etc/mysql/conf.d 
 -v /dockerData/mysqlData/mysqlSlave/logs:/logs
 -e MYSQL_ROOT_PASSWORD=pps123 
 -p 3307:3306 mysql:5.7 //注意

​

5 ok 如果你的配置文件没乱写 那么都会启动成功了

docker ps

如果两个都正常运行了 那么就会显示

三  开始配置主从设置

1  进入mysqlmaster容器内部

docker exec -it mysqlmaster /bin/bash

2 登录mysql

mysql -uroot -ppps123

3

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
GRANT REPLICATION SLAVE ON *.* to 'root'@'%' identified by 'pps123'; --主机赋权限给root用户这个用户可以通过密码pps123 复制我的数据
flush privileges; --刷新权限

4 执行 show master status  

记住这个结果 等会要用   file  表示 主机的二进制日志文件叫什么   position 从机应该从什么开始地方复制

5 进入从机mysqlslave容器 同样的操作 进入 mysql

执行指令:

change master to 
master_host='172.17.0.2',     --master的ip ! 请注意这个ip不是宿主机的 是mysqlmaster主机器的
master_user='root',           --master的帐号密码
master_password='pps123',
master_log_file='mysql-bin.000003', --master 查询的file名  注意上面!
master_port=3306,                   --master 端口 !!!为容器端口 不是宿主机端口
master_log_pos=1269;             

请注意ip不是宿主机的  是主机容器的  可以通过docker insepct mysqlmaster获得  

端口也不是宿主机的  是主机容器的  

centOs7 基于docker 安装mysql主从复制mysql数据库_第2张图片
 

6 执行指令

start slave;
show slave status;

7 查看是否成功

 

 

画红线的都是yes 才算成功!!!!
8 ok 大功告成

你可能感兴趣的:(centOs7 基于docker 安装mysql主从复制mysql数据库)