原文地址:

CSDN:SophiaLeo:Docker安装mysql5.7并且配置主从复制



一、拉取mysql镜像

docker pull mysql:5.7

二、创建文件docker.cnf

我采用的方式,是使用虚拟机,搭建docker环境,在Docker李新建了两个数据库,端口分别为3307和3308。其中3307为模拟master,3308为模拟slave。

2.1 mysql主机(192.168.21.55:3307)

2.1.1 创建文件夹

原教程方式是这样

mkdir /usr/local/mysql
cd mysql/
mkdir conf data

我的实现方式是这样,直接合并了第一步,直接通过docker构建,相较于他的操作,更为简单粗暴。

docker run -p 3307:3306 --name mysql_3308 -v /root/mysql/mysql_3308/conf:/etc/mysql/conf.d -v /root/mysql/mysql_3308/logs:/logs -v /root/mysql/mysql_3308/data:/var/lib/mysql -v /etc/localtime:/etc/localtime -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --lower_case_table_names=1

2.1.2 创建docker.cnf

vim /usr/local/mysql/conf/docker.cnf
  • 具体添加:
[mysqld]
server-id=1
log-bin=master-bin #只是读写,就只要主库配置即可.如果要做主从切换,那么主库和从库都需要开启.
skip-host-cache
skip-name-resolve
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8

2.2 mysql从机(192.168.21.55:3308)

2.2.1 创建文件夹

mkdir /usr/local/mysql
cd mysql/
mkdir conf data

2.2.2 创建docker.cnf

vim /usr/local/mysql/conf/docker.cnf
  • 具体添加:
[mysqld]
server-id=2
log-bin=master-bin
skip-host-cache
skip-name-resolve
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8

三、创建容器并运行

3.1 放行端口号

此步操作,我并没有放行,因为本地虚拟机环境端口号都是开放的。

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

3.2 mysql主机

docker run --name mysqlmaster -p 3307:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --privileged=true -d mysql:5.7

3.3 mysql从机

docker run   --name mysqlslave  -p 3308:3306  -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root  --privileged=true -d mysql:5.7

四、开启主从复制

4.1 mysql主机

  • 进入Mysql容器:
docker exec -it mysqlmaster /bin/bash
  • 启动mysql
mysql -uroot -proot
  • 创建用户
create user  'lhl'@'%'  identified by 'root';
  • 权限
grant replication slave on *.* to 'lhl'@'%';
  • 刷新权限
flush privileges;
  • 查看状态
show master status;

4.2 mysql从机

  • 进入mysql容器
docker exec -it mysqlslave /bin/bash
  • 启动mysql
mysql -uroot -proot
  • 执行主从
change master to master_host='192.168.21.55',master_port=3307,master_user='lhl',master_password='root',master_log_file='master-bin.000003',master_log_pos=745;
  • 如果报错,执行下面命令并再次执行上面的命令
 stop slave;
  • 开启复制
start slave;
  • 查看主从是否成功
show slave status \G;

以下两个都为yes就代表成功了!!!!

  Slave_IO_Running: Yes
Slave_SQL_Running: Yes
说明主从成功

PS:若直接按其教程走,应该是没有问题,能够直接成功的!感谢原文博主的分享!

Docker安装mysql5.7并且配置主从复制的更多相关文章

  1. CentOS7利用docker安装MySQL5.7

    CentOS7利用docker安装MySQL5.7 前提条件 centos7 且内核版本高于3.10, 可通过以下命令查看内核版本 uname -r 利用yum 安装docker 安装一些必要的系统工 ...

  2. win8安装mysql5.5最后配置没有反应

    win8安装mysql5.5最后配置没有反应 win8下安装mysql5.5一路顺利,可是到最后一步配置mysql服务及登录password后.注冊服务并启动服务界面一直没有不论什么反应: 本来以为是 ...

  3. Docker 安装MySQL5.7(三)

    Docker 安装MySQL5.7 1.搜索docker镜像(可以看到搜索的结果,这个结果是按照一定的星级评价规则排序的) docker search mysql 2.拉取docker的mysql镜像 ...

  4. docker安装mysql5.7 数据挂载

    docker安装mysql5.7,并数据卷挂载到主机 # docker 中下载 mysql docker pull mysql:5.7 #启动 docker run --name mysql3306 ...

  5. docker安装mysql5.6和redis3.2

    环境:centos 6.8, docker version 1.7.1 1.docker安装mysql5.6 第一步:拉取镜像 docker pull mysql:5.6 第二步:docker run ...

  6. Linux安装MySql5.7及配置(yum安装)

    Linux安装MySql5.7及配置(yum安装) [root@xld ~]# rpm -q centos-release centos-release-7-7.1908.0.el7.centos.x ...

  7. docker安装MySQL5.7示例!!坑

    docker  pull  mysql 一.错误的启动 [root@localhost  ~]#  docker  run  ‐‐name  mysql01  ‐d  mysql 42f0981990 ...

  8. docker安装mysql5.6镜像并进行主从配置

    docker安装mysql镜像并进行主从配置 1.去DaoCloud官网(dockerhub可能因为网速问题下载的慢)查找需要的mysql版本镜像 docker pull daocloud.io/li ...

  9. centos7用docker安装mysql5.7.24后配置主从

    1)使用docker安装完成mysql5.7.24,我规划的是3台: 192.168.0.170(Master) 192.168.0.169(Slave) 192.168.0.168(Slave) 2 ...

随机推荐

  1. Javascript 获得数组中相同或不同的数组元素   

    Javascript 获得数组中相同或不同的数组元素 在Javascript中,偶尔会用到获取数组中相同或不同的元素值的情况,以下提供了获得数组中相同或不同的 元素函数供参考学习使用. // 数字类型 ...

  2. LayUI表单提交不走ajax原因

    在使用layui的时候.遇到一个问题.提交表单,没有走ajax,直接提交了表单页面. 原因是因为JQuery未引入 解决办法.引入JQuery或者使用layui自带Jquery var $ = lay ...

  3. 图解HTTP权威指南(四)| 代理

    作者简介 李先生(Lemon),高级运维工程师(自称),SRE专家(目标),梦想在35岁买一辆保时捷.喜欢钻研底层技术,认为底层基础才是王道.一切新技术都离不开操作系统(CPU.内存.磁盘).网络等. ...

  4. 短信平台软件开发,短信发送平台销售,短信软件源码,G客短信发送平台

    一:web短信平台组成  需要短信软件平台源码的联系QQ:290615413 vx:290615413  整套短信系统平台还是由B/S(客户端+后台,取消了以前C/S的管理后台) ,C/S发送服务端和 ...

  5. 树莓派-4WD智能小车操作小结

    树莓派-4WD智能小车操作小结 树莓派4B-4WD智能小车,双层结构,第一层结构为:小车扩展板(底层)+树莓派主板,通过铜柱隔离固定,小车扩展板相当于计算机的外设扩展板:上面一层为第二层,是三个舵机承 ...

  6. TCP/IP五层模型-传输层-UDP协议

    ​1.定义:UDP:是非面向连接.不可靠的用户数据包协议. 2.应用场景:适合对数据完整性要求不高,但对延迟很敏感,比如即时通信(语音视频聊天等). 3.UDP报文格式: 4.用UDP传输数据的应用层 ...

  7. 转载 - Ubuntu源改国内源 与 批量更改ubuntu机器apt源

    change_apt_source.sh # !/bin/bash # 备份原来的源文件 cp /etc/apt/sources.list /etc/apt/sources.list.bak # 获取 ...

  8. SQL中的主键,候选键,外键,主码,外码

    1.码=超键:能够唯一标识一条记录的属性或属性集. 标识性:一个数据表的所有记录都具有不同的超键 非空性:不能为空 有些时候也把码称作"键" 2.候选键=候选码:能够唯一标识一条记 ...

  9. 关联实现下-jsonpath取值(有难度!!耗时长)

    re的使用参考:正则表达式基础及re模块:https://www.cnblogs.com/dream66/p/12953729.html import restr1 = '{"access_ ...

  10. redis持久化怎么选?成年人从来不做选择...

    前言 面试官:你知道 redis 是的怎么做持久化的吗? 我:我知道 redis 有两种方式,一种是 RDB,一种是 AOF. 面试官:那这两种方式具体是怎么做的,它们的区别是什么,生产环境中到底应该 ...