分类目录归档:Mysql

简要剖析Mysql主从复制

1.1 产生背景

随着系统数据量的不断增加,由单台Mysql作为独立数据库无法满足业务需求,无论是在安全性(数据备份),高可用性(容错能力)及高并发(负载均衡)等各个方面。

因此,针对查询为主系统(select查询),可以采用主从复制策略。通过Mysql的主从复制(Master-Slave)来同步数据,再通过读写分离来提升数据库的并发负载能力,这样就可以得到更好的客户端响应时间。

1.2 工作原理

主从复制通过三个过程实现,其中一个发生在主服务器上,另外两个发生在从服务器上。

1.主服务器将用户对数据库的更新操作以二进制文件保存到BinaryLog日志文件中,然后由BinlogDump线程将BinaryLog日志文件传输给从服务器。

2.从服务器通过一个I/O线程将主服务器的BinaryLog日志文件中的更新操作复制到一个叫RelayLog的中继日志文件中。

3.从服务器通过另一个SQL线程将RelayLog中继日志文件中的操作依次在本地执行,从而实现主从之间数据的同步。

三个线程

1.BinLog Dump线程

BinLog Dump线程运行在主服务器上,主要工作是把BinaryLog二进制文件的数据发送到从服务器。使用SHOWPROCESSLIST语句查看该线程状态。

2.I/O线程

从服务器执行STARTSLAVE语句后,创建一个I/O线程。此线程运行在从服务器上,与主服务器建立连接,然后向主服务器发送更新请求。之后,I/O线程将主服务器的BinLogDump线程发送的更新操作,复制到本地RelayLog日志文件中。

3.SQL线程

SQL线程运行在从服务器上,主要工作是读取RelayLog日志文件中的更新操作,将这些操作依次执行,从而使主从服务器数据得到同步。

当有多台从服务器时,主服务器为每个当前连接的从服务器创建一个线程,每个从服务器有自己的I/O线程和SQL线程。关于这三个线程运行过程中可能出现的一些状态,可以参考… 阅读全文