当前位置 博文首页 > 韩超的博客 (hanchao5272):MySql: 浅谈主从复制简介、原理、方
随着技术的发展,在实际的生产环境中,由单台
MySQL数据库服务器不能满足实际的需求。
此时数据库集群
就很好的解决了这个问题。
采用MySQL分布式集群,能够搭建一个高并发、负载均衡的集群服务器。
在此之前我们必须要保证每台MySQL服务器里的数据同步
。
数据同步我们可以通过MySQL内部配置就可以轻松完成,主要有主从复制
和主主复制
。
MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展。
多个数据备份不仅可以加强数据的安全性
,通过实现读写分离
还能进一步提升数据库的负载性能。
下图就描述了一个多个数据库间主从复制与读写分离的模型(来源网络):
在一主多从的数据库体系中,多个从服务器采用异步的方式更新主数据库的变化。
业务服务器在执行写或者相关修改数据库的操作是在主服务器上进行的,读操作则是在各从服务器上进行。
读写分离
在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务。
使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。
数据热备
架构扩展
异步复制
过程(虽然一般情况下感觉是实时的)。三个线程
参与完成的。SQL线程
和I/O线程
)在Slave端,另一个线程(I/O线程
)在Master端。binlog: binary log
,是主库中保存所有更新事件日志的二进制文件。MySql的复制方式分为以下几种:
基于SQL语句的方式是最古老的方式,也是目前默认的复制方式,后来的三种是MySQL 5以后才出现的复制方式。
优点:
历史悠久,技术成熟
binlog文件较小
binlog中包含了所有
数据库更改信息,可以据此来审核数据库的安全等情况
binlog可以用于实时的还原
,而不仅仅用于复制
主从版本可以不一样
,从服务器版本可以比主服务器版本高
缺点:
不是所有
的UPDATE语句都能被复制,尤其是包含不确定操作的时候耗资源情况会更严重
,而 RBR 模式下,只会对那个发生变化的记 录产生影响优点:
任何情况
都可以被复制,这对复制来说是最安全可靠的缺点:
binlog 大了很多
回滚时
binlog 中会包含大量的数据发生变化的记录
都会写到 binlog 中,而 SBR 只会写一次,这会无法从 binlog 中看到都复制了写什么语句
混合方式就是有mysql自动选择RBR方式和SBR方式,能够充分发挥两种方式的优点,一般情况下都使用该种方式实现主从复制。
这种方式虽然能够大大提高主从复制的效率,减小主从复制的延时,但也存在问题,具体请参看下面的博客。