Chinaunix首页 | 论坛 | 博客
  • 博客访问: 371333
  • 博文数量: 166
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1640
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-05 11:44
个人简介

文章不在长,坚持不懈记录下努力前行的脚步

文章分类

全部博文(166)

文章存档

2017年(19)

2016年(59)

2015年(88)

我的朋友

分类: Mysql/postgreSQL

2016-12-29 17:38:38

MySQL通过三个线程来实现复制功能,一个在master server上,两个在slave server上:
1.binlog dump thread 当slave连接到master之后,master server会创建一个线程来发生binlog到slave,在主库上执行show processlist能够看到Binlog Dump这样一个线程。

在master server上,这个dump线程会将每一个将要发送到slave的event加一把锁,一旦读完这个event,甚至该event在被发送到该slave server之前这个锁就被释放掉了。

2.slave I/O thread 如果你在slave server上执行start slave语句,那么同时slave server会创建一个I/O线程,这个线程连接到主库并请求主库发送binlog

slave I/O线程会读master server的binlog dump线程发送的binlog event,并且复制这些event到该slave server本地的relay log文件中。

通过show slave status语句查看slave_IO_running,或者show status查看slave_running记录来获取该slave上当前io线程的状态。

Slave SQL thread读relay log并应用event.

前面提到的三个线程,在每一对master/slave连接上都存在,





阅读(636) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~