17.2 Replication Implementation

复制是基于master server 跟踪所有改变到他的数据库(更新,删除等等)在它的binary log.

binary log 作为些所有事件修改数据的结构或者内容从server 开始启动

典型的,SELECT 语句是不被记录的因为它们既不修改数据库也不修改内容

每个slave 连接到master 请求一个binary log的拷贝。

也就是说,它从master 拉数据,相比master 推数据到slave.

slave也执行从binary log 执行events 。 这个重复原始的改变 就像它们在master上一样。

表时被创建或者它们的结果修改,数据被插入,删除,和更新根据改变发生在master上一样

因为每个slave 是独立的,replay master 的binary log的改变发生在每个slave (slave是连接到Master)

此外,因为每个slave 接收一份Binary log的拷贝只要通过从master 请求,

slave 是可以读取和更新数据库的拷贝以自己的步伐可以启动和停止复制进程 不影响更新最新的数据库状态在主或者从一侧

master binary log 是些到一个本地的的relay log 在slave端在它被处理前。

Vsftp:/data01/mysql# ls -ltr *relay*
-rw-rw---- 1 mysql mysql 120 Nov 14 10:27 Vsftp-relay-bin.000001
-rw-rw---- 1 mysql mysql 25 Nov 14 10:27 Vsftp-relay-bin.index
-rw-rw---- 1 mysql mysql 221 Nov 14 21:59 mysqld-relay-bin.000006
-rw-rw---- 1 mysql mysql 52 Nov 14 21:59 mysqld-relay-bin.index
-rw-rw---- 1 mysql mysql 198021585 Nov 15 09:14 mysqld-relay-bin.000007 slave 也记录信息关于当前的master binary log和local relay log的位置 17.2.1 Replication Implementation Details 复制实现细节: MySQL 复制功能是实现使用3个进程,一个在master server和2个在slave上。 1.Binlog dump thread,master 创建一个线程来发送binary log 内容到一个slave 当slave连接时。 这个线程可以是被在SHOW PROCESSLIST 的输出在master上 zabbix:/data01/mysql# mysql -uroot -p1234567 -e "SHOW PROCESSLIST" | 198968 | backup | 192.168.11.187:45976 | NULL | Binlog Dump | 46595 | Master has sent all binlog to slave; waiting for binlog to be updated | NULL |
| 204759 | root | localhost | NULL | Query | 0 | init | SHOW PROCESSLIST | binary log dump thread 需要一个lock 在master的binary log 对于读取每个event 发送到slave. 当event 被读取,lock是被释放,甚至在event被发送到slave之前 Slave I/O thread. 当一个START SLAVE 语句是执行在一个slave server,slave 创建一个I/O thread, 连接到master 和告诉master 发送更新记录在master的binary logs. slave I/O thread 读取更新 master的Binlog Dump thread 发送的 复制他们到本地的文件 slave的relay log thread 的状态是显示为Slave_IO_running 在SHOW SLAVE STATUS的输出 或者SHOW STATUS. 的 Slave_running Slave SQL thread slave创建一个SQL thread 来读取relay log 被 slave I/O thread写入的, 执行其中包含的事件 在先前的描述,有三个线程么每个master/slave 连接。一个master 有多个slaves 创建一个binary log dump thread 对于米格连接的slave, 每个slave 有它自己的I/O和SQL threads. 一个slave 使用2个threads 来分别的读取更新从master 和执行它们到单独的任务。 因此,读取任务的语句是不会减慢如果语句执行是慢的, 例如,如果slave server 没有运行一段时间,它的I/O thread 可以快速的获取binary log 内容从master 当slave 开始后, 即使SQL thread 远远落后,如果slave 停止 在SQL thread 已经执行所有取得的SQL之前, I/O thread 已经至少获取了一切这样一个安全的语句的拷贝是存储在本地的slave的relay logs里, 准备用于执行 等下次slave 启动的时候 SHOW PROCESSLIST 语句提供了信息高速你 Master上发生了什么,slave上关于复制 slave:
mysql> SHOW PROCESSLIST ;
+----+-------------+-----------+------+---------+-------+-----------------------------------------------------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-------------+-----------+------+---------+-------+-----------------------------------------------------------------------------+------------------+
| 11 | system user | | NULL | Connect | 51213 | Waiting for master to send event | NULL |
| 12 | system user | | NULL | Connect | -140 | Slave has read all relay log; waiting for the slave I/O thread to update it | NULL |
| 14 | root | localhost | NULL | Query | 0 | init | SHOW PROCESSLIST |
+----+-------------+-----------+------+---------+-------+-----------------------------------------------------------------------------+------------------+
3 rows in set (0.00 sec) 下面的例子阐述3个线程在SHOW PROCESSLIST的输出 在master server上,SHOW PROCESSLIST 输出像这样: mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
Id: 2
User: root
Host: localhost:32931
db: NULL
Command: Binlog Dump
Time: 94
State: Has sent all binlog to slave; waiting for binlog to
be updated
Info: NULL 在这里, 线程2 是一个 Binlog Dump replication thread 服务一个连接的slave. 状态信息表明所有的更新已经发送到slave ,master是等待更多的更新发生。 如果你看到 no Binlog Dump threads 在master server上, 这意味着复制是没有被运行,没有slave 是当前连接的。 On a slave server, the output from SHOW PROCESSLIST looks like this: 在slave server上,SHOW PROCESSLIST 输出像这样: mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
Id: 10
User: system user
Host:
db: NULL
Command: Connect
Time: 11
State: Waiting for master to send event
Info: NULL
*************************** 2. row ***************************
Id: 11
User: system user
Host:
db: NULL
Command: Connect
Time: 11
State: Has read all relay log; waiting for the slave I/O
thread to update it
Info: NULL 状态信息表明 thread 10 是I/O thread 和master server通讯, 线程11是SQL thread 处理更新存储在relay logs.

17.2.1 Replication Implementation Details 复制实现细节:的更多相关文章

  1. 17.2?Replication Implementation 复制实施:

    17.2?Replication Implementation 复制实施: 17.2.1 Replication Implementation Details 17.2.2 Replication R ...

  2. 17.2.2 Replication Relay and Status Logs 复制Relay 和状态日志;

    17.2.2 Replication Relay and Status Logs 复制Relay 和状态日志: 17.2.2.1 The Slave Relay Log 17.2.2.2 Slave ...

  3. 17.1.4 Replication and Binary Logging Options and Variables 复制和Binary logging 选项和变量

    17.1.4 Replication and Binary Logging Options and Variables 复制和Binary logging 选项和变量 下面的章节包含信息关于mysql ...

  4. 17.1.2?Replication Formats 复制格式:

    17.1.2?Replication Formats 复制格式: 17.1.2.1 Advantages and Disadvantages of Statement-Based and Row-Ba ...

  5. 17.1.2 Replication Formats

    17.1.2 Replication Formats 复制格式 17.1.2.1 Advantages and Disadvantages of Statement-Based and Row-Bas ...

  6. Accessor Search Implementation Details

    [Accessor Search Implementation Details] Key-value coding attempts to use accessor methods to get an ...

  7. [Angular] Extract Implementation Details of ngrx from an Angular Application with the Facade Pattern

    Extracting away the implementation details of ngrx from your components using the facade pattern cre ...

  8. 第七篇 Replication:合并复制-订阅

    本篇文章是SQL Server Replication系列的第七篇,详细内容请参考原文. 订阅服务器就是复制发布项目的所有变更将传送到的服务器.每一个发布需要至少一个订阅,但是一个发布可以有多个订阅. ...

  9. 第六篇 Replication:合并复制-发布

    本篇文章是SQL Server Replication系列的第六篇,详细内容请参考原文. 合并复制,类似于事务复制,包括一个发布服务器,一个分发服务器和一个或多个订阅服务器.每一个发布服务器上可以定义 ...

随机推荐

  1. web开发学习之旅---html第二天

    一.转义符 一些字符在html中拥有特殊的含义,比如小于号(<)用于定义 HTML 标签的开始.如果我们希望浏览器正确地显示这些字符,我们必须在 HTML 源码中插入转义符. 分类 二.html ...

  2. Quartz Cron表达式生成器

    格式: [秒] [分] [小时] [日] [月] [周] [年]  序号 说明   是否必填  允许填写的值 允许的通配符   1  秒  是  0-59    , - * /  2  分  是  0 ...

  3. import com.sun.image.codec.jpeg.JPEGCodec不通过 Eclipse找不到包

    Eclipse默认把这些受访问限制的API设成了ERROR.只要把Windows-Preferences-Java-Complicer-Errors/Warnings里面的Deprecated and ...

  4. 20151212jquery学习笔记--工具函数

    工具函数是指直接依附于 jQuery 对象,针对 jQuery 对象本身定义的方法,即全局性 的函数.它的作用主要是提供比如字符串.数组.对象等操作方面的遍历. 一.字符串操作 在 jQuery 中, ...

  5. word公式图片显示不全的问题

    最近处理文档遇到比较棘手的问题,就是单行显示的公式和图片都显示不全,高度撑不起来,会被其他行的内容遮挡. 图片估计是对齐方式照成的,公式调了很久也没有办法.最后找了一个临时折衷的办法: 插入表格,然后 ...

  6. Candence下对“跨页连接器(off-page connector)”进行批量重命名的方法

    parts.ports.alias等等均可以在“属性编辑器(Property Editor)”中进行查看编辑,并通过复制到Excel等表格软件来进行批量修改.之后再粘贴回去的方法进行批量编辑.但是“跨 ...

  7. java经验总结二:ORA-08103: 对象不再存在

    问题发生的环境: 在springMvc+mybatis框架中,调用oracle的存储过程时,碰到的一个这样的异常: org.springframework.jdbc.UncategorizedSQLE ...

  8. Java工具类:获取long型唯一ID

    直接上代码: import java.text.SimpleDateFormat; import java.util.Date; /** * 获取long型唯一ID */ public class I ...

  9. Nuage SDN

    Nuage推出纯软件解决方案虚拟化业务平台(VSP)由三部分组成:虚拟化业务目录(VSD).虚拟化业务控制器(VSC)和虚拟路由与交换(VRS). VSD是业务/IT策略引擎,可提供业务模板与分析,每 ...

  10. windows phone 扫描二维码

    在网上找了找扫描二维码的例子,利用ZXing库实现(下载),提供的Silverlight版本的下载,在网上搜了一下已经有wp的dll可用了,不过网上实现的条码扫描的例子还都是用的Silverlight ...