MySQL-Replication
深入浅出的讲解MySQL复制相关的技术
sunashe
这个作者很懒,什么都没留下…
展开
-
Replication进阶(九) MySQL如何自动清理过期binlog
文章目录Replication进阶(九) MySQL如何自动清理过期的binlogReplication进阶(九) MySQL如何自动清理过期的binlog可以通过expire_logs_days设置binlog的过期时间,超过此天数的binlog会被自动purge掉,这个purge的动作是怎么完成的呢?难道MySQL单独开辟了一个线程来不停的看binlog是不是过期了?如果是你,又会如何设计...原创 2018-11-21 18:37:55 · 455 阅读 · 0 评论 -
Replication进阶(八) 半同步复制状态切换
文章目录半同步复制状态切换一、简介二、状态切换半同步切换异步状态异步切换到半同步半同步复制状态切换一、简介假设当前m-s处于半同步复制状态,这个状态在某些情况下可能会发生切换。通过status而不是variables去查看当前复制状态mysql> show global status like 'Rpl_semi_sync_master_status';+------------...原创 2018-11-19 15:51:21 · 529 阅读 · 0 评论 -
半同步复制中可能出现的异常情况以及应该如何应对?
文章目录半同步复制如何应对各种异常情况?一、准备知识事务提交会经历哪些阶段何为半同步复制二、可能出现哪些异常以及如何解决master 在flush binlog之前宕机master 在flush binlog 之后,send binlog之前宕机master 在send binlog之后,收到ack之前宕机半同步复制如何应对各种异常情况?全篇以MySQL-5.7 after_sync模式半同...原创 2018-11-15 19:03:07 · 1028 阅读 · 0 评论 -
Replication进阶(五) 复制中的ACK详解
ack是什么?什么时候slave会返回ack给master带有ack请求的binlog和不带ack的有区别吗?首先来解释第一个问题,什么是ackack全称为Acknowledgement,中文翻译为确认字符,应用在网络通信中的很多地方,比如TCP/IP协议中。MySQL复制中的ACK指的是,master发送binlog给slave后,slave发送消息给master,通知master已...原创 2018-10-24 17:08:09 · 1375 阅读 · 0 评论 -
Replication基础(八) 半同步复制参数简析
文章目录半同步复制参数解析rpl_semi_sync_master_enabledrpl_semi_sync_master_timeoutrpl_semi_sync_master_trace_levelrpl_semi_sync_master_wait_for_slave_countrpl_semi_sync_master_wait_no_slaverpl_semi_sync_master_wai...原创 2018-10-08 14:36:31 · 2579 阅读 · 0 评论 -
Replication基础(七) 复制参数简介.md
简介本文只是复制参数的一个简单介绍,而针对每一种或者没一类相关的参数,都需要一篇文章来详细描述。本文不包含半同步复制参数log_slave_updates控制从实例在回放主实例数据时,是否也写binlog,默认为false,不写binlog日志,并且不能动态修改。log_slow_slave_statements控制从实例在回放时,是否记录超过 long_query_time的sql语句...原创 2018-10-08 14:39:34 · 315 阅读 · 0 评论 -
Replication基础(六) 复制中的三个线程(IO/SQL/Dump)
简介在MySQL复制技术中,涉及到三个线程,分别为binlog Dump线程,IO线程,SQL回放线程。本文针对于这三个线程,简要说明。 I/O线程上图所示,IO线程位于从实例,其作用就是作为一个客户端,建立到master实例上的TCP链接,并且发送认证信息,bingbinlog同步协议信息,然后实时的去同步阻塞的读取master发送的binlog,并且设置有超时时间,为slav...原创 2018-08-29 13:27:55 · 1635 阅读 · 0 评论 -
Replication基础(五) 多源复制
简介多源复制是指一个从实例指向多个主实例,相当于把多个MySQL实例的数据汇聚到一个实例上面,这是MySQL 5.7版本开始支持的新的复制功能。搭建步骤MySQL5.7版本中增加了多源复制的功能,其中每一个复制关系,叫做一个复制通道,channel,这点从执行change master命令的时候可以看出来,如下:mysql> change master to ...原创 2018-08-29 10:00:16 · 780 阅读 · 0 评论 -
Replication基础(四) 复制拓扑分类
简介我们可以利用MySQL复制技术,构造各种各样的复制拓扑。一般可能会有如下几类主从复制(1对1)这是最简单的复制拓扑关系,如下图所示 主从复制 (1对多)多个从实例可以同时指向一个主实例,如下图所示 主从级连复制从实例依然可以作为另外一个实例的主机,形成主-从-从的拓扑结构,如下图所示 主主复制从实例可以作为主实例的主实例,如下所示: ...原创 2018-08-28 19:00:11 · 278 阅读 · 0 评论 -
Replication基础(三) 复制协议分类
复制协议分类关于如何搭建主从复制,请看上一篇Replication基础(二) 搭建主从复制 MySQL复制技术,从协议上来划分,分为两类,一类是基于文件+位点的复制,一种是基于GTID的复制。在Replication基础(二) 搭建主从复制一文中,我们通过指定master_auto_position=1,告诉主库使用GTID自动找点的方式进行binlog传输。如果不指定master_auto...原创 2018-08-28 18:46:36 · 872 阅读 · 0 评论 -
Replication基础(二) 搭建主从复制
简介本文接上一篇文章,[Replication基础(一) MySQL数据库单机多实例安装][1] 在已经存在的单机多实例环境中搭建主从复制,假设以13307端口的实例为主机,13308端口的实例为从机,搭建主从复制。步骤 在主库上创建复制账号,从机使用此账号进行复制链接。如下: grant replication slave,replication cli...原创 2018-08-28 18:28:50 · 369 阅读 · 0 评论 -
Replication基础(一) MySQL数据库单机多实例安装
此文章适用于linux操作系统,win的话,没怎么玩过呢。数据库版本其实没太大的差别,比如说目前最新的MySQL-5.7.23,使用二进制安装包文件进行安装。 官网下载,如下: 目录其实目录也无所谓,但是,总是应该规整一些,比如可以参照如下base目录也就是存放数据库二进制文件,lib库,头文件,等等的地方,如下ashe@ubuntu:/da...原创 2018-08-27 20:06:36 · 528 阅读 · 0 评论 -
Replication进阶(二) 半同步复制-间隔事务提交
如下场景:1, master gtid_executed uuid:1 gtid_owned uuid:2-32, slave gtid_executed uuid:1-2 停止从机io thread,uuid:2事务未返回ack 3, 启动从机器 io thread后,会接收主机uuid:3binlog,并且返回此事务的uuid此时2-3事务在主机上的表现4, ...原创 2018-09-06 20:44:41 · 237 阅读 · 0 评论 -
Replication进阶(三) 复制心跳详解
心跳心跳,这个词在不同人的脑袋里,第一反应会想到不同的东西,比如说医护人员,想到的是 ‘砰~砰~砰~’;linux网络编程的人想到可能是客户端与服务端的探活机制,比如TCP协议的心跳,或者应用层自己构建的心跳机制。那今天说的MySQL的复制心跳其实就属于应用层自己构建的一种探活机制。TCP协议心跳做MySQL相关的工作,无论是哪个方向,都需要多多少少去了解TCP相关的知识,比如下面一大...原创 2018-07-15 14:53:18 · 1132 阅读 · 0 评论 -
Replication进阶(四) 从bug-92252来看GTID复制协议
文章目录从bug92252来看GTID复制协议简介问题原因解决办法从bug92252来看GTID复制协议简介最近搜索MySQL bug系统,发现5.7.23存在复制相关的bug https://bugs.mysql.com/bug.php?id=92252大概意思如下在使用GTID协议协议进行复制时,slave设置了复制错误跳过选项,当出现相应的错误时,并不会中断sql回放线程,于是会出...原创 2018-09-19 13:18:22 · 254 阅读 · 0 评论 -
详解MySQL-5.7.18多线程复制可能会导致主从数据不一致的bug
bug概述从MySQL-5.7.19的Release Notes 中可以看到其修复了如下这个bug Replication: In certain cases, the master could write to the binary log a last_committed value which was smaller than it should have been...原创 2018-08-05 15:44:39 · 1383 阅读 · 0 评论 -
Waiting for dependent transaction to commit/Waiting for preceding transaction to commit
简介首先说明的是这并不是多线程复制中的问题,而是一个现象,这里来解释说明这个现象。 开启多线程回放的同学如果经常执行show slave status命令的话,应该对这两个信息不陌生。出处开启多线程回放后,回放控制线程会根据既定的规则,进行并发回放。因此,后续事务如果不可以跟正在回放的事务并发的话,就必须要进行等待。如果开启了slave_preserve_commit_order...原创 2018-08-21 11:05:30 · 7734 阅读 · 0 评论