【Mysql】数据库主从搭建-基于docker

后台可回复【1024】即可获取相关宝藏内容分享 :)


 

 

为什么基于Docker搭建?

  • 资源有限

  • 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐

  • 一台机器上可以运行多个Docker容器

  • Docker容器之间相互独立,有独立ip,互不冲突

  • Docker使用步骤简便,启动容器在秒级别

 


 

 

今天文章分为两部分 :)

PART1 Docker搭建MySQL主从数据库技术分享 / 

PART2 关于习惯杂谈

 

   

 

PART 1 Docker搭建主从数据库

学长五分钟带你走进docker主从搭建的世界  :)

通过Docker搭建主从服务器

首先我们需要拉取docker镜像,我们使用5.7版本的MySQL:

docker pull mysql:5.7

然后使用此镜像启动容器,这里需要分别启动主从两个容器

创建Master(主数据库):

docker run -p 3339:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=000000 -d mysql:5.7

创建Slave(从数据库):

docker run -p 3340:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=000000 -d mysql:5.7

Master对外映射的端口是3339,Slave对外映射的端口是3340。因为docker容器是相互独立的,每个容器有不同的ip,所以不同容器使用相同的端口是不会冲突的。这里我们应该尽量使用mysql默认的3306端口,否则可能会出现无法通过ip连接docker容器内mysql的问题。

使用docker ps命令查看正在运行的容器:

还可以通过Navicat等工具测试连接mysql是否正常

配置Master(主)

通过docker exec -it 627a2368c865 /bin/bash命令进入到Master容器内部,注意:我们创建的时候容器id627a2368c865并不相同,这里需要换成自己的容器id。也可以通过容器名docker exec -it mysql-master /bin/bash命令进入。

cd /etc/mysql切换到/etc/mysql目录下,然后vi my.cnf对my.cnf进行编辑。此时会报出bash: vi: command not found,需要我们在docker容器内部自行安装vim。使用apt-get install vim命令安装vim

可能会出现如下问题:

  •  
  •  
  •  
  •  
 

Reading package lists... DoneBuilding dependency treeReading state information... DoneE: Unable to locate package vim

执行apt-get update,然后再次执行apt-get install vim即可成功安装vim。然后我们就可以使用vim编辑my.cnf,在my.cnf中添加如下配置:

 

[mysqld]
## 同一局域网内注意要唯一
server-id=100
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin

配置完成之后,需要重启mysql服务使配置生效。使用service mysql restart完成重启。重启mysql服务时会使得docker容器停止,我们还需要docker start mysql-master启动容器。

下一步在Master数据库创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

配置Slave(从)

和配置Master(主)一样,在Slave配置文件my.cnf中添加如下配置:

 

[mysqld]
## 设置server_id,注意要唯一
server-id=101
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin

配置完成后也需要重启mysql服务和docker容器,操作和配置Master(主)一致。

链接Master(主)和Slave(从)

在Master进入mysql,执行show master status;

File和Position字段的值后面将会用到,在后面的操作完成之前,需要保证Master库不能做任何操作,否则将会引起状态变化,File和Position字段的值变化。

在Slave 中进入 mysql,执行change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 2830, master_connect_retry=30;

命令说明:

master_host :Master的地址,指的是容器的独立ip,可以通过docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id查询容器的ip

master_port:Master的端口号,指的是容器的端口号

master_user:用于数据同步的用户

master_password:用于同步的用户的密码

master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值

master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值

master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒

在Slave 中的mysql终端执行show slave status \G;用于查看主从同步状态。

正常情况下,SlaveIORunning 和 SlaveSQLRunning 都是No,因为我们还没有开启主从复制过程。使用start slave开启主从复制过程,然后再次查询主从同步状态show slave status \G;

SlaveIORunning 和 SlaveSQLRunning 都是Yes,说明主从复制已经开启。此时可以测试数据同步是否成功。

主从复制排错:

使用start slave开启主从复制过程后,如果SlaveIORunning一直是Connecting,则说明主从复制一直处于连接状态,这种情况一般是下面几种原因造成的,我们可以根据 Last_IO_Error提示予以排除。

  1. 网络不通-检查ip,端口

  2. 密码不对-检查是否创建用于同步的用户和用户密码是否正确

  3. pos不对-检查Master的 Position

测试主从复制

测试主从复制方式就十分多了,最简单的是在Master创建一个数据库,然后检查Slave是否存在此数据库。

关于Mysql主从配置的分享就到这里;

看到这里的同学有福啦,学长分享一波宝藏收藏资源

后台可回复【数据库】即可获取相关内容分享 :)

 

 

好!回归每周的闲言碎语!

PART2 >今天来解决一下生活的迷茫

学长随心分享-

 

 

我知道有人21岁毕业27岁还没找到工作。

我也知道有人25岁毕业,毕业就工作。

我知道有人从没上过大学却在18岁找到热爱的事业。

我知道有人大学毕业后找到了收入不错的工作,却不喜欢他们的工作。

我知道有人经历了间隔年,然后确定了他们的目标。

生活是多元的,每个人的生命轨迹都是独一无二的。

你的生活不该由别人的版图来决定,你也有自己的时间表。

所以,朋友放耐心点,只要付出,早晚收获 

 

你还年轻,仍燃怀有梦想。

Always young, always beautiful.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

塑料封装可靠性问题浅析

塑料封装可靠性问题浅析 摘 要: 塑料封装器件在现在的封装产业中具有无可比拟的优势,诸如成本、可靠性、尺寸以及重量等.但是还是有相当一部分人对于塑封器件的可靠性持怀疑态度.文章的目的就是使读者能够更深入地了解到塑封器件的可靠性,尤其是在塑封器件应用于高…

java创建对象new后面为啥可以传入参数_你有认真了解过自己的“Java对象”吗?渣男...

对象在 JVM 中是怎么存储的对象头里有什么?作为一名 Javaer,生活中的我们可能暂时没有对象,但是工作中每天都会创建大量的 Java 对象,你有试着去了解下自己的“对象”吗?我们从四个方面重新认识下自己的“对象”创建对…

【技术+某度面经】Jenkins 内容+百度面经分享

后台可回复【1024】即可获取相关宝藏内容分享 :) Q1: Jenkins是什么?? A:Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。 今天文章分为两部分 :) PART1 Jenkins技术分享 / PART2 关…

xcode多工程联编 - 详细教程

2019独角兽企业重金招聘Python工程师标准>>> 一、创建workspace (MyProject)放入MyProject文件夹内 二、先 打开workspace 创建app1工程 点击next之后注意选择 workspace 同理创建app2 或者更多的工程 完成之后的工作 重新打开workspace的样子 三、使用pod 库 首先…

动态规划入门 合并石子 COGS1660 石子合并

1660. 石子合并(加强版) ★★ 输入文件:stone3.in 输出文件:stone3.out 简单对比时间限制:1 s 内存限制:256 MB 【题目描述】 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定…

python实现百钱买百鸡

个人博客点这里 Python语言基础(百元买百鸡) 需求分析 百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单: 公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱, 用100文钱买一百只鸡,其中公鸡,母鸡…

实数是不是python数据类型_python 基本数据类型

一、数据类型及操作 #整数类型,和数学中整数的一样,可正可负 *十进制:210 *二进制:以0B或者0b开头:0b1010 *八进制:以0O或者0o开头:0o123 *十六进制:以0x或者0X开头:0x9a…

python之用循环实现五子棋小程序

在python中我们学过流程控制中的循环结构,现在我们来进行一个小应用的练习 本程序是通过循环控制结构来实现五子棋小程序的 游戏规则 五子棋的规则如下: 对局双方各执一色棋子。空棋盘开局。黑先、白后,交替下子,每次只能下一子。棋子下在棋盘的空白点…

Principle of Computing (Python)学习笔记(7) DFS Search + Tic Tac Toe use MiniMax Stratedy

1. Trees Tree is a recursive structure. 1.1 math nodes https://class.coursera.org/principlescomputing-001/wiki/view?pagetrees 1.2 CODE无parent域的树 http://www.codeskulptor.org/#poc_tree.py class Tree:"""Recursive definition for tree…

C#线程篇---Task(任务)和线程池不得不说的秘密

我们要知道的是,QueueUserWorkItem这个技术存在许多限制。其中最大的问题是没有一个内建的机制让你知道操作在什么时候完成,也没有一个机制在操作完成是获得一个返回值,这些问题使得我们都不敢启用这个技术。 Microsoft为了克服这些限制&…

关于编译FFMPEG的初级教程

关于编译FFMPEG的初级教程1.首先我们要下载相关工具,这里不多说,大家按照我的地址去下载文件就好了 MINGW下载地址:http://prdownloads.sourceforge.net/mingw/MinGW-3.1.0-1.exe?download 然后在下载MSYS :http://prdownloads.…

电子科学与技术相关索引汇总

电子科学与技术相关索引汇总 关于安装deepinwindow10双系统有时没有声音的问题关于deepin系统安装design compiler的问题解答基于51单片机的交通灯控制设计基于物联网的智能垃圾桶设计基于FPGA 的8b10b编解码电路前端电路设计金属磁记忆传感器封装集成电路版图与工艺课程设计之…

【百度面试】闸机测试场景

面试被问到这一题思路想法: 自己找了相关内容充实自我。内容分享如下: 随着人脸识别技术的成熟,闸机行业大量应用人脸识别算法,只因现今的人脸识别算法也已经能够保证识别率、识别速度、误识率和拒识率等各项指标的优异性&#x…

前后端分离项目如何部署_前后端分离项目,如何解决跨域问题?

跨域资源共享(CORS)是前后端分离项目很常见的问题,本文主要介绍当SpringBoot应用整合SpringSecurity以后如何解决该问题。01 什么是跨域问题?CORS全称Cross-Origin Resource Sharing,意为跨域资源共享。当一个资源去访问另一个不同域名或者同…

使用模板引擎artTemplate的几个问题总结

一、Template not found 有的时候模板写的并没有问题&#xff0c;可就是找不到。这时候可能是<script>加载顺序问题&#xff0c;模板渲染在模板加载完成之前先执行了&#xff0c;调整<script>的顺序。 二、模板中将字符串转化成数字 利用html中的表单来转化&#x…

Android报“android.content.res.Resources$NotFoundException: String resource ID #0x2”错误

Android报“android.content.res.Resources$NotFoundException: String resource ID #0x2”错误 当调用setText()方法时如果传入int型是不会被当成内容而是resourceID来使用&#xff01; 所以报错&#xff01; 解决方法&#xff1a;TextView.setText("" arg) 转为St…

时间戳问题汇总

大家好 我刚接触流媒体不久&#xff0c; 现在遇到一个非常奇怪的问题&#xff0c;向各位大侠请假&#xff0c;请你们指点。 问题是这样的 用一个 VLC(流媒体客户端) 去请求流媒体服务器上的数据&#xff0c; 但是获得的数据播放速度明显快于1倍速&#xff0c;大概是 timest…

如何实现 C/C++ 与 Python 的通信?

如何实现 C/C 与 Python 的通信&#xff1f; 想在 C 中用 Python 进行数值计算&#xff0c;Python 需要访问 C 的变量并计算后返回数值。有什么好办法呢&#xff1f; 参考https://www.zhihu.com/question/23003213

前端相关索引汇总

前端相关索引汇总 HTML相关 HTML概述和基本结构HTML中Head头HTML标题 HTML段落,换行,字符实体HTML块,含样式的标签HTML中的图片HTML中的链接HTML中的列表HTML中的表格HTML中的表单 CSS相关 Css基本语法及页面引用Css中的选择器Css颜色和文本字体CSS边框,背景,边距,溢出CSS中的…