您的位置:首页 > 数据库 > MySQL

MySQL学习笔记(五)扩展性设计之Replication

2012-03-27 10:58 381 查看

MySQL学习笔记(五)扩展性设计之Replication

1.Replication的意义

首先,我们需要清楚一个数据库据系统的扩展性实际上是主要体现在两个方面,一个是横向扩展,另一个则是纵向扩展,也就是我们常说的Scale Out 和Scale Up。

Scale Out 就是指横向的扩展,向外扩展,也就是通过增加处理节点的方式来提高整体处理能力,说的更实际一点就是通过增加机器来增加整体的处理能力。

Scale Up 则是指纵向的扩展,向上扩展,也就是通过增加当前处理节点的处理能力来提高整体的处理能力,说白了就是通过升级现有服务器的配置,如增加内存,增加CPU,增加存储系统的硬件配置,或者是直接更换为处理能力更强的服务器和更为高端的存储系统。

Replication可以将一台MySQL中的数据完整的复制到多台MySQL主机上面去,而且这样的复制延时还不长,这样数据访问就分散到多台主机上面,这样访问集群中的任何一台机器就可以取到数据了。

2.Replication机制的实现原理

MySQL的Replication过程是一个异步过程,从一个MySQL的instance(Master)复制到另一个MySQL(Slave),实现整个复制过程需要通过三个线程来完成,其中两个是SQL线程和IO线程,在Slave端,另外一个是IO线程在Master端。

要实现Replication,必须打开Master端的Binary Log,因为整个复制过程就是Slave从Master端获取日志,然后根据日志信息,执行相应的操作。

MySQL的复制过程如下:

1.Slave上面的IO线程连接上Master,然后请求从指定日志位置读取日志;

2.Master端收到请求后,通过负责复制的IO线程读取指定的日志,返回给Slave端的IO线程;

3.Slave端IO线程接收的信息后,将日志内容写入reply log中

4.Slave端的SQL线程发现replay log发生变化后,解析log,然后执行sql

复制的实现级别包括:

1.Row Level:每一行数据发生修改,然后下slave进行相应的修改。(缺点是alter,update语句的执行)

2.Statement Level:每一条修改数据的Query都会被放到Binary Log中,Slave在复制的时候就会执行这些Query进行同步。(缺点,记录上下文信息,新功能加入)

3.Mix

3.常用架构

1.常规Master-Slave



2.Dua Master(Master-Master)



3.级联复制(Master - Slaves - Slaves)



4.Dual Master 与级联复制结合架构(Master - Master - Slaves)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: