MySql复制介绍

复制的工作原理是将数据库修改事件记录到bin log中并传递到slave,然后slave在本地还原的过程。MySql复制的粒度可以是主库上的所有数据库也可以是指定的一个或多个数据库,也可以是一个数据库中的某些表。事件记录到bin log的格式有以下三种:

a、基于语句的复制statement(statement based replication):主库将sql语句写入到bin log中。

      优势:技术成熟,应用广泛,节省空间,可以查看sql语句;

      劣势:某些特定的语句容易出问题,比如在语句中包含自定义函数或者不确定性的存储过程,rand(),sysdate(),version()

b、基于行数据的复制row (row based replication):主库将每一行的数据变化信息(修改前和修改后的数据信息)作为事件写入到bin log中。

      优势:所有的数据库修改都可以被复制,是一种安全的复制方式,由于是行复制,某些语句在执行上需要较少的lock。

      劣势:bin log日志数据量会更大,有可能延迟时间更长。建议只对InnoDB表做行复制,MyISAM可能会出现异常。

c、混合复制mixed(mixed based replication):上面两者的结合,默认优先使用基于语句的复制,只有当部分语句如果基于语句复制不安全的情况下才会自动切换为基于行数据的复制。例如:同一条语句执行多次的结果可能不一致。

1、MySql复制的用途:

a、扩展能力(高性能):通过复制实现一主多从架构,分担主库压力;这要求所有的增删改操作在主库上操作。读操作在从库上执行,从而提升MySql的读写性能。

b、容灾能力(高可用):通过复制实现主备架构,当主库服务器宕机后立马切换到备库,从而降低对业务的影响。

c、数据库备份:通过复制实现主备架构(延迟复制),当主库误操作之后,可以在延迟复制时间内在备库找到原数据。

d、数据分析和报表:通过复制实现主从架构,将数据分析和报表等耗时、耗性能的操作在从库上执行。

2、MySql复制的两种方法:

a、传统方式:基于主库的bin log日志事件和事件位置复制到从库,从库再加以应用以达到主从同步的目的。

b、Gtid方式:global transaction identifers是基于事务来复制数据,不依赖日志文件,也能更好的保证主从库数据一致性。

3、MySQL复制的类型:

a、异步复制:一主多从,数据异步同步到从库。

b、同步复制:MySql Cluster中特有的复制方式,确保数据已经同步到至少一个从库上了。

c、半同步复制:在异步复制的基础上,确保任何一个主库上的事务在提交之前至少有一个从库已经收到该事务并以日志记录下来

d、延迟复制:在异步复制的基础上,人为设定主库和从库的数据同步延迟时间,即保证数据延迟至少是这个参数。如果不小心在主库上删了数据,可以在延迟时间之内根据从库找到删除掉的数据。

发布了65 篇原创文章 · 获赞 28 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_26900081/article/details/103176255