10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 36.3 mb
PDF (A4)- 36.3 mb
手册页(TGZ)- 235.6 kb
手册页(邮政编码)- 347.1 kb
信息(Gzip)- 3.3 mb
信息(邮政编码)- 3.3 mb
本手册摘录

16.3.9 Semisynchronous复制

除了内置的异步复制,MySQL 5.7支持semisynchronous复制一个接口,由插件实现。本节讨论semisynchronous复制是什么以及它是如何工作的。下面的章节涵盖了管理界面semisynchronous复制和如何安装、配置和监控。

MySQL复制默认情况下是异步的。源将事件写入二进制日志和副本请求他们当他们准备好了。源不知道或当一个复制品检索和处理事务,并不能保证任何事件到达任何副本。使用异步复制,如果源崩溃,交易已承诺可能没有被传输到任何副本。故障转移从源复制在这种情况下可能导致故障转移服务器,缺少交易相对于源。

使用完全同步复制,当源提交事务,所有副本之前还必须提交事务源返回的会话执行事务。完全同步复制意味着故障转移从源到任何复制品是可能的。完全同步复制的缺点是,可能会有很多的延迟来完成一个事务。

Semisynchronous复制介于完全异步和同步复制。源等待,直到至少有一个副本已经收到并记录事件(所需数量的副本是可配置的),然后提交事务。源不等待所有副本收据,它只需要一个确认的副本,不是事件已经充分执行和提交副本。Semisynchronous复制源崩溃,因此保证如果它已承诺的所有事务,一直传送到至少一个复制品。

异步复制相比,semisynchronous复制提供改进的数据完整性,因为当提交成功返回,众所周知,至少存在于两个地方的数据。直到semisynchronous源接收确认所需数量的副本,事务,不是承诺。

完全同步复制相比,semisynchronous复制更快,因为它可以配置为平衡你要求数据完整性(副本承认收到事务)的数量和提交的速度,这是由于需要等待副本慢。

重要的

对于semisynchronous复制,如果源崩溃和副本进行故障转移,失败的来源不应该重用复制源服务器,并且应该被丢弃。它可以交易不承认任何复制品,所以之前没有提交故障转移。

如果你的目标是实现一个容错复制拓扑结构,所有的服务器接收相同的交易秩序,和服务器崩溃可以加入该组织,将自动更新,您可以使用复制来实现这一目标。信息,请参阅17章,组复制

semisynchronous复制相比,异步复制的性能影响是增加数据完整性的权衡。放缓的数量至少是TCP / IP的往返时间发送副本提交,等待确认收据的副本。这意味着semisynchronous复制最适合在快速关闭服务器通信网络,和最遥远的服务器在网速较慢时沟通。Semisynchronous复制也忙会议通过约束地方速度限制的速度可以发送二进制日志事件从源复制。当一个用户是太忙,这减缓了下来,可以在某些部署情况下有用。

Semisynchronous源及其之间的复制副本操作如下:

  • 副本表明无论是semisynchronous-capable连接到源。

  • 如果启用了semisynchronous复制源端和至少有一个semisynchronous副本,一个线程执行一个事务提交源块和等待,直到至少有一个semisynchronous副本承认已收到所有事件的事务,或者直到超时。

  • 事务的副本承认收到的事件只有在事件写入它的中继日志和刷新到磁盘。

  • 如果超时没有任何副本承认事务,源返回异步复制。当至少一个semisynchronous副本追上了,源返回semisynchronous复制。

  • 必须启用Semisynchronous复制源和复制品。如果禁用semisynchronous复制源,或者启用源而是没有副本,源使用异步复制。

在源阻塞(等待确认的副本),它不返回会话执行事务。当块结束时,源返回的会话,然后可以继续执行其他语句。此时,在源端事务已经提交,并收到其事件至少承认了一个副本。复制品的数量确认源每个事务必须接受返回会话之前使用的是可配置的rpl_semi_sync_master_wait_for_slave_count系统变量,默认值是1。

阻塞也会发生回滚后写入二进制日志,它发生在一个修改nontransactional表回滚的事务。回滚事务记录,尽管它对于事务性表没有影响,因为修改nontransactional表不能回滚,必须发送到副本。

因为语句不发生在事务上下文(也就是说,当没有事务开始开始事务设置自动提交= 0每条语句),启用了自动提交和提交隐式。源块semisynchronous复制,对于每一次这样的声明,就像它的明确的事务提交。

rpl_semi_sync_master_wait_point系统变量控制在哪个点semisynchronous复制源等待副本承认交易收据返回一个状态给客户端之前,提交事务。这些值是允许的:

  • AFTER_SYNC(默认):源将每个事务写入二进制日志和复制品,和同步二进制日志到磁盘。源等待副本承认交易收据后同步。收到确认,提交事务存储引擎,将结果返回给客户端,然后才能进行。

  • AFTER_COMMIT:源将每个事务写入二进制日志和复制品,同步二进制日志,并提交事务存储引擎。源等待副本承认交易收据后提交。一旦收到确认,源返回结果给客户端,然后才能进行。

这些设置不同的复制特点如下:

  • AFTER_SYNC,所有客户看到提交的事务的同时,承认后的副本和源致力于存储引擎。因此,所有客户看到相同的数据来源。

    在源出现故障时,所有交易承诺在源已经复制到副本(保存到它的中继日志)。源和故障转移的意外退出副本是无损的,因为是最新的复制品。如上所述,来源不应该被重用在故障转移之后。

  • AFTER_COMMIT,客户端发出事务服务器返回状态后才提交到存储引擎和接收副本承认。提交后在副本承认之前,其他客户可以看到提交的事务提交之前的客户。

    如果出现错误,复制不处理事务,然后在一个意想不到的来源退出副本和故障转移,这是可能的,这样的客户看到的损失数据相对于他们所看到的来源。