mysql主从复制

来源:互联网 发布:淘宝导航制作 编辑:程序博客网 时间:2024/06/04 18:23

  

主从复制原理:

整体上来说,复制有3个步骤:   

(1)master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events)
(2)slave将master的binary log events拷贝到它的中继日志(relay log)

(3)slave重做中继日志中的事件,将改变反映它自己的数据。


随着数据量不断的增加,由单台Mysql作为独立的数据库有的时候是不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面。因此,一般来说都是通过主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力这样的方案来进行部署与实施的。

   使用mysql主从复制的好处有

   1、(服务可靠性)采用主从服务器这种架构,稳定性得以提升。如果主服务器发生故障,我们可以使用从服务器来提供服务。

   2、(服务效率)在主从服务器上分开处理用户的请求,可以提升数据处理效率。

   3、(数据安全)将主服务器上的数据复制到从服务器上,保护数据免受意外的损失。

MySQL-Proxy:MySQL Proxy是基于MySQL Client 和 MySQL Server之间的代理程序,能够完成对Client所发请求的监控、修改。从Client角度看,通过Proxy访问Server和直接访问 Server没有任何区别。对于既有的程序而言,只要把直接被访问的Server的IP地址和端口号换成Proxy的IP地址和端口号就可以。当 Proxy接收到Client请求时,我们可以截取出当前的请求是insert、update还是select,然后把 insert和update请求发送到Master中,把select请求发送到Slave中,这样就解决了读写分离的问题。

MySQL的主从同步机制非常方便的解决了高并发读的应用需求,给Web方面开发带来了极大的便利。但这种方式有个比较大的缺陷在于MySQL的同步机制是依赖Slave主动向Master发请求来获取数据的,而且由于服务器负载、网络拥堵等方面的原因,Master与Slave 之间的数据同步延迟是完全没有保证的。由于数据延迟问题的存在,当应用程序在Master 上进行数据更新,然后又立刻需要从数据库中读取数据时,这时候如果应用程序从Slave上取数据,就可能出现读取不到期望的数据,造成程序运行异常。

在解决了读写分离后,如何解决同步延迟呢? 

方法是在Master上增加一个自增表Count_table,这个表仅含有1个的字段。当Master接收到任何数据更新的请求时,均会触发这个触发器,该触发器更新自增表中的记录。由于Count_table也参与Mysq的主从同步,因此在Master上作的 Update更新也会同步到Slave上。当Client通过Proxy进行数据读取时,Proxy可以先向Master和Slave的 Count_table表发送查询请求,当二者的数据相同时,Proxy可以认定 Master和Slave的数据状态是一致的,然后把select请求发送到Slave服务器上,否则就发送到Master上。








原创粉丝点击