没有夸大标题哈,能够成功的,实测后发文
本文主要讲怎么用Docker部署Mysql的主从复制,看起来很长,实际非常简单的,看一遍,立马就能懂的。

直接CV也能搭建起来,莫慌。

我们一起加油!!!


地点:泰山日出

一、拉取镜像

docker pull mysql:5.7

相关命令:

  • 查看镜像:docker images

二、启动镜像

先启动mysql01容器:(即之后的主机)

docker run -d -p 3310:3306 -v /home/mysql/node-1/config:/etc/mysql/ -v/home/mysql/node-1/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456  --name mysql01 mysql:5.7

再启动mysql02容器:(即之后的从机)

docker run -d -p 3311:3306 -v /home/mysql/node-2/config:/etc/mysql/ -v/home/mysql/node-2/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 mysql:5.7

命令解释:

  • -d: 后台运行容器,并返回容器ID
  • -p 3311:3306 :将容器的3306端口映射到宿主机3310端口
  • -e MYSQL_ROOT_PASSWORD=123456 :配置数据库连接密码
  • -v /home/mysql/node-2/config:/etc/mysql/ :将配置文件夹挂载到宿主机
  • –name mysql01(02):将容器命名为 mysql01(02)

相关命令:

docker ps -a #查看全部容器(运行中加未运行的)

都已正常启动。

三、连接测试

搭建过程中,为了减少错误的产生,就多了这一步的测试。

我们可以直接拿Navicat来进行连接测试。

注意事项: 记得打开安全组,虚拟机的话记得处理好防火墙。(另外我这里是3310,可根据自己需要更改端口)

测试启动成功后,我们再来进行下一步。


四、编写主从复制配置文件

之前我们启动的时候写了这句-v /home/mysql/node-1/config:/etc/mysql/,将mysql 的配置文件夹和宿主机的文件夹挂载起来的。

那么我们就可以直接在宿主机下的/home/mysql/node-1/config/编写配置文件了。

4.1、编写主机配置文件

我们先编写主机上的配置文件:

vim my.cnf

回车之后是这样的:

先按insert键,然后直接将下面主机的配置文件复制上去即可:

[mysqld]
#修改配置文件:vim /etc/my.cnf
#主服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库 需要复制的主数据库名字
binlog-do-db=testdb
#设置logbin格式
binlog_format=STATEMENT

退出方式

先按Esc键–>再按Shift+:键–>输入wq–保存退出。

4.2、编写从机配置文件

从机上的my.cnf也是同样的方式

[mysqld]
#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay

重新启动mysql容器

docker restart mysql01  mysql02

docker ps -a #查看容器

接下来就是搭建主从复制了。

五、搭建主从复制

5.1、主机设置

docker exec -it mysql01 /bin/bash #进入容器
mysql -uroot -p123456 #连接mysql

5.2、主机上建立帐户并授权 slave

给从机授权,为了让从机能够和主机连接起来。

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';

5.3、查询master状态

show master status; #查询master的状态

把这里的File和Position记下来哈,等下在从机上要用到。

File: mysql-bin.000003
Position: 438

Binlog_Do_DB:需要复制的数据库。

Binlog_Ignore_DB:不需要复制的数据库。

注意:此步骤后不要再操作主服务器MySQL,防止主服务器状态值变化

5.4、从机设置

进入mysql02容器

docker exec -it mysql02 /bin/bash
mysql -uroot -p123456

复制主机的命令

CHANGE MASTER TO MASTER_HOST='主机的ip地址',
MASTER_USER='slave',
MASTER_PASSWORD='123456',
MASTER_PORT=3310,
MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=438;
#解释:
#   CHANGE MASTER TO MASTER_HOST='主机的IP地址',
#   MASTER_USER='slave'(刚刚配置的用户名),
#   MASTER_PASSWORD='123456'(刚刚授权的密码),
#   master_port=主机开放的端口 我这里是3310端口,
#   MASTER_LOG_FILE='mysql-bin.具体数字',MASTER_LOG_POS=具体值(之前的Position);

注意事项:如果在这里出现错误,先重置。执行完下面两条命令。

stop slave;
reset master;

启动从服务器复制功能

start slave;

查看从服务器状态

show slave status\G

#下面两个参数都是Yes,则说明主从配置成功!

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

六、测试主从复制

6.1、主机新建库 -从机复制

在主机新建testdb后,从机也随之就有了。(这里的命名是确定的,因为在配置文件中说明了复制testdb数据库)。

6.1、新建表-从机复制

6.3、insert 记录-从机复制


当然这些还是有看不出到底有没有复制的话,咱们直接测试函数,就能知道啦。

insert into my_table01(id,name) VALUE(1,@@hostname);

这就可以看出主从复制确实是成功的,但是在使用函数上有数据不一致的问题。

七、重置配置主从

如何停止从服务复制功能

stop slave;

如何重新配置主从 (即清除之前的主从配置)

stop slave;
reset master;

八、自言自语

下一篇打算讲一下mysql的中间件mycat实现读写分离,或者说点理论

史上最详细Docker部署Mysql主从复制,带每一步骤图!!!相关推荐

  1. 史上最详细Docker安装Mysql 带每一步详图及解释 并教你Docker 打印容器日志!!!相信值得你的阅读!!!

    众所周知,如果我们要把项目放在服务器上运行,那么数据存储就是必需的,就用这篇小小文章记录一下我的经历吧. MySQL是一个关系型数据库管理系统,也是是最流行的关系型数据库管理系统之一,在 WEB 应用 ...

  2. 史上最详细Docker安装Redis (含每一步的图解)实战

    不仅教你安装,还教你删除. 每一行命令都带图解,绝对能懂. 大家对搭建Redis Clustr (Redis 集群)感兴趣的,可以看看这篇文章 Docker搭建Redis Cluster集群环境 希望 ...

  3. 不仅有史上最详细Docker 安装Minio Client,还附带解决如何设置永久访问和永久下载链接!!(详图)绝对值得收藏的哈!!!!

    背景: 这两天在整理知识点,然后在学习Minio,一开始遇到更新,整了我不少时间,之前用的太久了,改了不少东西.用了之后发现不知道怎么设置成永久访问,就出了这篇文章. 史上最详细Docker安装最新版 ...

  4. 史上最详细Docker安装最新版Minio 带详解 绝对值得收藏!!! 让我们一起学会使用minio搭建属于自己的文件服务器!!走上白嫖之路!解决启动了但是浏览器访问不了的原因

    让我们一起学会使用minio搭建属于自己的文件服务器!!走上白嫖之路! WARNING: Console endpoint is listening on a dynamic port (34451) ...

  5. 使用docker部署mysql主从复制集群

    一.环境搭建 虚拟机环境:centos7 IP:192.168.37.134 用户名:root 密码:123 启动3个容器,一个是master,端口是3307,另外两个是slaver,端口是3308和 ...

  6. 自动化部署mysql主从复制集群_使用docker部署mysql主从复制集群

    一.环境搭建 虚拟机环境:centos7 IP:192.168.37.134 用户名:root 密码:123 启动3个容器,一个是master,端口是3307,另外两个是slaver,端口是3308和 ...

  7. 基于Docker部署Mysql主从复制-实战详解篇

    一.前言 MySQL的主从复制详细讲解,根据网上教程也踩了很多坑,浪费了一些时间 ,特地全面的梳理下基于docker构建的mysql主从复制构建过程.遇到的问题以及提供安装包样例等 希望一篇文章足以解 ...

  8. 史上最详细Docker安装Elasticsearch、ik分词器、可视化工具,每一步都带有步骤图!!!

    对于标题我没有夸大哈,能成功的,每一步也有代码和图相结合的 最近在弄这个Elasticsearch,技术发展所要求,现在还有什么我不需要去学吗?麻了麻了. 沉下去,再浮上来,我想我们会变的不一样的.

  9. 史上最详细Docker搭建Redis Cluster集群环境 值得收藏 每步都有图,不用担心学不会

    之前无论学什么东西,总感觉只要会写小Demo就完事了.但随着学习的深入,(内卷)接触的越来越多,集群.JVM.数据结构.算法.底层.Liunx 系统,任重而道远啊. 分享一句很喜欢的话:"八 ...

最新文章

  1. Financiers Game CodeForces - 737D (博弈论,区间dp)
  2. 判断图有无环_萧阳环保教你判断布袋除尘器是否合格记住这3点
  3. 为什么Android项目mainactivity中有一个变量R_博客笔记大汇总,Android优化总结篇
  4. Docker 安装nginx,并挂载文件
  5. LeetCode 809. 情感丰富的文字
  6. 第一个Ajax.net程序的实现及心得。
  7. CAN笔记(9) 位填充
  8. word如何调整字间距离_大篇幅文字如何排版才能赏心悦目?
  9. RHEL 8 - 用VM Image Builder构建虚机镜像
  10. fseek函数与ftell函数使用例程
  11. 自己制做python3.6精简绿色版
  12. 在win7系统下使用TortoiseGit(乌龟git)简单操作Git@OSC
  13. SNES 与 NES 游戏模拟机区别与 SNES Classic界面实现,
  14. Codeforces 1146G Zoning Restrictions dp
  15. 使用addr2line 定位 FORTIFY: vsprintf: prevented write past end of buffer‘ 报错解决思路
  16. 开源一文多发平台ArtiPub,让文章随处可阅
  17. coreseek note
  18. php域名免备案转发,免备案高防CDN支持过墙域名跳转解决域名DNS污染
  19. 台式计算机内存条怎么装,台式电脑怎么装内存条_台式电脑加装内存条方法-win7之家...
  20. JavaScript的逆袭

热门文章

  1. 天合汽车安全技术(张家港)有限公司
  2. SD-SD用到的文本对象列表
  3. 全球最难翻译的十大单词
  4. user exits, customer exits, badi
  5. bat php 监控网站,HTML_进程监控实现代码[vbs+bat],运行后会在%windir%\system32\目录 - phpStudy...
  6. html5 video js控制摄像头的焦距,html 通过input video canvas 打开摄像头 定制相机
  7. 查看tomcat服务器返回的响应消息,Tomcat上的WebSocket握手返回意外响应代码500
  8. a as as big rat_你知道填空中as的这个变态用法吗?
  9. linux怎么永久保存,Linux系统中,让alias命令永久保存的方法!
  10. mysql的dml全,MySQL数据管理----DML语言(全记住)(示例代码)