MySQL复制是指从一个mysql服务器(MASTER)将数据通过日志的方式经过网络传送到另一台或多台mysql服务器(SLAVE),然后在slave上重放(replay或redo)传送过来的日志,以达到和master数据同步的目的。MySQL复制属于比较成熟的技术,在MySQL数据库中得到广泛使用,下面我们一起来了解一下MySQL复制的优点。
MySQL 内建的复制功能是构建大型、高性能应用程序的基础。将 MySQL 的数据分布到多个系统上去,这种分布的机制是通过将 MySQL 的某一台主机的数据复制到其他主机(Slaves)上,并重新执行一遍来实现的。在复制过程中,一台服务器充当主服务器,而另一台或多台其他服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器,从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。
结合上述的MySQL复制的基本原理,总结出下面5个MySQL复制的优点:
1.提供了读写分离的能力。
MySQL复制让所有的slave都和master保持数据一致,因此外界客户端可以从各个slave中读取数据,而写数据则从master上操作。也就是实现了读写分离。
需要注意的是,为了保证数据一致性,写操作必须在master上进行。
通常说到读写分离这个词,立刻就能意识到它会分散压力、提高性能。
2.为MySQL服务器提供了良好的伸缩(scale-out)能力。
由于各个slave服务器上只提供数据检索而没有写操作,因此"随意地"增加slave服务器数量来提升整个MySQL群的性能,而不会对当前业务产生任何影响。
之所以"随意地"要加上双引号,是因为每个slave都要和master建立连接,传输数据。如果slave数量巨多,master的压力就会增大,网络带宽的压力也会增大。
3.数据库备份时,对业务影响降到最低。
由于MySQL服务器群中所有数据都是一致的(至少几乎是一致的),所以在需要备份数据库的时候可以任意停止某一台slave的复制功能(甚至停止整个mysql服务),然后从这台主机上进行备份,这样几乎不会影响整个业务(除非只有一台slave,但既然只有一台slave,说明业务压力并不大,短期内将这个压力分配给master也不会有什么影响)。
4.能提升数据的安全性。
这是显然的,任意一台MySQL服务器断开,都不会丢失数据。即使是master宕机,也只是丢失了那部分还没有传送的数据(异步复制时才会丢失这部分数据)。
5.数据分析不再影响业务。
需要进行数据分析的时候,直接划分一台或多台slave出来专门用于数据分析。这样OLTP和OLAP可以共存,且几乎不会影响业务处理性能。
MySQL复制的优点决定了MySQL数据库中复制技术存在的必然性,MySQL复制不仅仅对数据安全和业务提升有很大帮助,同时也为MySQL数据库的发展提供了更多的可能。想要学好MySQL数据库,我们必须掌握MySQL中的许多核心技术,在本站的MySQL教程中对这些MySQL核心技术都有很好的剖析,小伙伴们不要错过哦!