docker mysql日志_面试官问:了解Mysql主从复制原理么?我呵呵一笑

搭建Mysql主从同步之前,我们先来说他们之间同步的过程与原理:

同步复制过程

献上一张图,这张图诠释了整个同步过程

52b7df74c5ff58272c2205fb3d6ed28a.png

主从复制过程:

  • slave节点与主节点进行连接,建立主从关系,并把从哪开始同步,及哪个日志文件都一并发送到master
  • master将修改的数据保存到binlog中
  • master开启binlog dump线程,将binlog日志推送到连接的slave中
  • slave接受到推送的binlog,slave开启IO线程将数据写到中继日志(relay log)中
  • slave同时还会开启一个SQL线程,对比中继日志中新增的内容,并且解析SQL,回放数据到从数据库中

好的,复制过程已经说完了,我们现在实践下,快速搭建一个mysql主从架构。

没错,我这里还是使用docker搭建,因为它很香啊!

搭建Mysql 主从

创建mysql网络

docker network create mysqlNet

安装mysql

  • 运行mysql主节点
docker run -p 3306:3306 --name mysql_master -h mysql_master --net=mysqlNet -v ~/docker/mysql/mysql_master/log:/var/log/mysql -v ~/docker/mysql/mysql_master/data:/var/lib/mysql -v ~/docker/mysql/mysql_master/conf:/etc/mysql  -e lower_case_table_names=1 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
  • 修改配置文件
# 编辑文件vim ~/docker/mysql/mysql_master/conf[client]default-character-set=utf8[mysql]default-character-set=utf8[mysqld]init_connect='SET collation_connection=utf8_unicode_ci'init_connect='SET NAMES utf8'character-set-server=utf8collation-server=utf8_unicode_ciskip-character-set-client-handshakeskip-name-resolve## 同一局域网内注意要唯一server-id=1  ## 开启二进制日志功能,可以随便取(关键)log-bin=mysql-bin
  • 重启mysql_master
docker restart mysql_master
  • 在master节点上 创建给从节点进行复制的用户
docker exec -it mysql_master mysql -uroot -proot# 创建用户CREATE USER 'mysql_slave'@'%' IDENTIFIED BY '111111';# 授权GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'mysql_slave'@'%';
  • 运行mysql从节点
docker run -p 33306:3306 --name mysql_slave -h mysql_slave --net=mysqlNet -v ~/docker/mysql/mysql_slave/log:/var/log/mysql -v ~/docker/mysql/mysql_slave/data:/var/lib/mysql -v ~/docker/mysql/mysql_slave/conf:/etc/mysql  -e lower_case_table_names=1 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
  • 编辑从节点配置文件
# 编辑文件vim ~/docker/mysql/mysql_master/conf[client]default-character-set=utf8[mysql]default-character-set=utf8[mysqld]init_connect='SET collation_connection=utf8_unicode_ci'init_connect='SET NAMES utf8'character-set-server=utf8collation-server=utf8_unicode_ciskip-character-set-client-handshakeskip-name-resolve## 设置server_id,注意要唯一server-id=2 ## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用log-bin=mysql-slave-bin   ## relay_log配置中继日志relay_log=edu-mysql-relay-bin## 设置只读权限read_only = 1innodb_read_only## 使得更新的数据写进二进制日志中log_slave_updates = 1#如果master库名与salve库名不同,使用以下配置[需要做映射]#replicate-rewrite-db = [主库名] -> [从库名]#如果不是要全部同步[默认全部同步],则指定需要同步的表#replicate-wild-do-table=库名.表1#replicate-wild-do-table=库名.表2

现在主从节点已经安装完成,我们接下来需要让他们建立关系:

先查看master节点当前的状态,主要看下日志文件和当前的位置

docker exec -it mysql_master mysql -uroot -prootshow master status;exitexit

结果如下:文件为mysql-bin.000001 位置为629

d89f44bc3bbee63c96ab0d6610faf52c.png

拿到这些信息之后,我们现在就可以让从节点与主节点建立关系,并执行同步了:

docker exec -it mysql_slave mysql -uroot -prootchange master to master_host='mysql_master', master_user='mysql_slave', master_password='111111', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 629, master_connect_retry=30;

我们继续看下slave节点的状态

show slave statusG;1
4e6bd75e148b131e484819f6fdfd6330.png

我们看到我们在文首提到的两个线程并没有启动,所以我们需要手动启动着两个线程,一个命令就好了

start slave;
312e09fc2cf2ffc368382e9d77d21619.png

现在可以看到两个线程已经在运行了。
到此,已经搭建完成了

测试

这个我就不演示了,大家可以在mysql_master上创建一个数据库,看看是不是会同步到mysql_slave上。

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

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

相关文章

python 文件加密_python实现文件快照加密保护的方法

本文实例讲述了python实现文件快照加密保护的方法。分享给大家供大家参考。具体如下:这段代码可以对指定的目录进行扫描,包含子目录,对指定扩展名的文件进行SHA-1加密后存储在cvs文件,以防止文件被篡改调用方法:python…

查看socket缓冲区数据_什么是socket缓冲区?

Socket 就是发送和接收网络数据,Socket 有发送缓冲也有接收缓冲,这些缓冲区有什么作用?1、什么是Socket缓冲区?熟悉 Socket 的读者都知道,Socket 的发送和接收,就是调用 send 和 recv 函数。实际操作中&…

python登录并关注公众号_python微信公众号之关注公众号自动回复

我们知道一旦使用开发者模式,我们就无法使用公众号平台中的自动回复功能,也就是关注自动回复功能只有自己写才可以。如图所示,我们无法直接使用此功能。那么接着上一个博客,我们完成了关键词自动回复功能,博文地址实现…

哈工大大数据实验_科研常用 | 实验大数据分析方法

对于每个科研工作者而言,对实验数据进行处理是在开始论文写作之前十分常见的工作之一。但是,常见的数据分析方法有哪些呢?常用的数据分析方法有:聚类分析、因子分析、相关分析、对应分析、回归分析、方差分析。1、聚类分析(Cluste…

搭建github服务器_搭建一个属于自己的公网博客

相信每一位程序员都喜欢拥有一个属于自己的博客。当然,在我认为,内容以及模块都要自己进行可扩展定义才是真正属于自己的。那么想要一个博客就必须要有一个服务器和一个域名,这样的话才能让自己的博文内容发扬光大,但是服务器的性…

mysql超过1W条查询不显示_mysql 被写入1W数据后无法select*from table,但是加入limit参数后可以查询...

数据库表结构 innodbSELECT 查询错误提示ERROR 2013 (HY000): Lost connection to MySQL server during query我觉得可能是 SELECT 执行时间过长,所以报错.mysql 日志150414 03:11:26 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql150414 3:11:27 In…

python分支结构基础实训_零基础Python教程-分支结构

文章目录下面就让我们先一起学习单分支结构:单分支结构双分支结构多分支结构在日常生活中,我们会遇到很多选择类的问题。比如:午饭吃螺蛳粉还是生煎包?下班回家坐地铁还是公交车?这也就是我们编程语言中常说的“分支结构”,今天…

mysql修改级联表数据_MySQL数据库 外键,级联, 修改表的操作

1.外键: 用来建立两张表之间的关系- 一对多- 多对多- 一对一研究表与表之间的关系:1.定义一张 员工部门表id, name, gender, dep_name, dep_desc- 将所有数据存放在一张表中的弊端:1.结构不清晰 ---> 不致命2.浪费空间 ---> 不致命3.可扩展性极差 ---> 不可忽视的弊端…

python3 urllib安装_对python3 urllib包与http包的使用详解

urllib包和http包都是面向HTTP协议的。其中urllib主要用于处理 URL,使用urllib操作URL可以像使用和打开本地文件一样地操作。而 http包则实现了对 HTTP协议的封装,是urllib.request模块的底层。1.urllib包简介2. http 包简介1.urllib包简介urllib包主要模…

OpenCV学习笔记 - 使用密集光流检测运动的简单方法

一、简述 使用光流进行运动检测的方法与帧间差分方法类似。主要区别在于第一步,我们将从光流而不是帧差分中获取初始运动信息(一些神经网络模型也是基于光流和原始图像进行运动识别训练的)。 该算法概述如下: 1、计算密集光流 2、获得运动掩模的阈值光流 3、在运动蒙版中查…

mysql 5.6.27安装图解_Linux下MySQL 5.6.27 安装教程

本文实例为大家分享了Linux下MySQL 5.6.27 安装教程,供大家参考,具体内容如下1、下载地址2、将压缩包上传到服务器3、解压tar -zxf mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz4、移动压缩包至mysql文件夹下mp mysql-5.6.27-linux-glibc2.5-x86_64 /usr…

linux部署tomcat项目404_Tomcat部署项目的几种常见方式

点击蓝字“程序员考拉”欢迎关注!1 /直接将web项目文件件拷贝到webapps目录中这是最常用的方式,Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。如果你想要修改这个默认目录,…

mysql bug_MySQL 记一次 Bug发现过程

水平有限有误请谅解这个问题是一位朋友DBA-老庄的,他们使用的是PXC环境如下:MySQL:5.7.18-15wsrep:29.20os:Red Hat Enterprise Linux Server release 6.5实际上我对PXC并不是很熟,通过分析pstack还是找到了问题。并且提交Bug,percona确认了。虽然我不是…

用python将word文档导入数据库_python读取word文档,插入mysql数据库的示例代码

表格内容如下:1、实现批量导入word文档,取文档标题中的数字作为编号2、除取上面打钩的内容需要匹配出来入库入库,其他内容全部直接入库mysql# wuyanfeng# -*- coding:utf-8 -*-# 读取docx中的文本代码示例import docximport pymysqlimport re…

mysql编程语法_MYSQL语法(一)

数据表准备:CREATE TABLE student3 ( id int, name varchar(20), age int, sex varchar(5), address varchar(100), math int, english int);INSERT INTO student3(id,NAME,age,sex,address,math,english) VALUES(1,马云,55,男,杭州,66,78),(2,马化腾,45,女,深圳,98…

python绘制混淆矩阵_如何实现python绘制混淆矩阵?

大家从python基础到如今的入门,想必都对python有一定基础,今天小编给大家带来一个关于python的高阶内容——绘制混淆矩阵,一起来看下吧~介绍:混淆矩阵通过表示正确/不正确标签的计数来表示模型在表格格式中的准确性。计算/绘制混淆…

用python做舆情分析系统_科学网-如何用Python做舆情时间序列可视化?-王树义的博文...

如何批量处理评论信息情感分析,并且在时间轴上可视化呈现?舆情分析并不难,让我们用Python来实现它吧。痛点你是一家连锁火锅店的区域经理,很注重顾客对餐厅的评价。从前,你苦恼的是顾客不爱写评价。最近因为餐厅火了&a…

mysql load data outfile_mysql load data infile和into outfile的常规用法:

load data 可以将文件中的数据导入到表中,这种导入方法快速,高效.但是很容易出错,用法也比较复杂。需要额外定定义行分隔符,列分隔符.不同的格式文件,行,列分隔符的表示方式不一样。但是load data 的默认行列分隔符和txt的文件一样,所以为了少出错,最好使用与txt文件导入常规使…

tensorflow python3.6_[教程]Tensorflow + win10 + CPU + Python3.6+ 安装教程

由于各种原因,清华镜像源已经彻底挂掉了,但是目前网上的各种教程基本上都是采取设置清华镜像源来加快下载速度,所以这给小白带来了很大的困扰!这里我将通过合理上网工具来直接下载源镜像。注意:本次教程适用于Win10系统…

正则表达式 任意数字_作为运维还不会正则表达式?赶快看这篇学习一下

概述正则表达式是很多运维薄弱的一项技能。大家很多时候都会觉得正则表达式难记、难学、难用,但不可否认的是正则表达式是一项很重要的技能,所有今天将学习和使用正则表达式时的关键点整理如下,仅供参考。什么是正则表达式?正则表…