在以下部分中,我们为最常见的问题提供了关于MySQL复制的问题的答案。
- A.14.1。副本必须一直连接到源吗?
- A.14.2。我必须在源和副本上启用网络以启用复制吗?
- A.14.3。我如何知道副本与源进行比较的时间延迟?换句话说,我如何知道副本复制的最后一个语句的日期?
- A.14.4。我如何迫使源阻止更新,直到副本跟上?
- A.14.5。在设置双向复制时,我应该注意哪些问题?
- A.14.6。如何使用复制来提高系统的性能?
- A.14.7。我该如何做准备在我自己的应用程序中的客户端代码来使用性能增强复制?
- A.14.8。MySQL Replication的何时以及多么能力提高我系统的性能?
- A.14.9。如何使用复制来提供冗余或高可用性?
- A.14.10。如何判断复制源服务器是使用基于语句的二进制日志记录格式还是基于行的二进制日志记录格式?
- A.14.11。如何告诉副本使用基于行的复制?
- A.14.12。如何防止GRANT和REVOKE语句复制到复制机器?
- A.14.13。在混合操作系统上是否对复制工作(例如,源在Linux上运行,而副本在麦斯卡斯和Windows上运行)?
- A.14.14。复制是否可以在混合硬件架构上工作(例如,源代码运行在64位机器上,而副本运行在32位机器上)?
A.14.1。 |
副本必须一直连接到源吗? |
不,它不是。该副本可以停止运行或在数小时甚至数天内保持断开连接,然后重新连接并赶上更新。例如,您可以在拨号链接上建立源/副本关系,而该链接只是偶尔和短时间内出现。这意味着,在任何给定时间,副本都不能保证与源同步,除非采取一些特殊措施。 为确保捕获可能已断开连接的副本,您不得从包含尚未复制到副本的信息的源中删除二进制日志文件。仅当副本可以从上次读取事件的点继续读取二进制日志时,才能使用异步复制。 |
|
A.14.2。 |
我必须在源和副本上启用网络以启用复制吗? |
是的,必须在源和副本上启用网络。如果没有启用网络,副本将无法连接到源并传输二进制日志。验证 |
|
A.14.3。 |
我如何知道副本与源进行比较的时间延迟?换句话说,我如何知道副本复制的最后一个语句的日期? |
检查 当复制SQL线程执行从源读取的事件时,它将自己的时间修改为事件时间戳。(这就是为什么 |
|
A.14.4。 |
我如何迫使源阻止更新,直到副本跟上? |
使用以下步骤:
|
|
A.14.5。 |
在设置双向复制时,我应该注意哪些问题? |
MySQL Replication目前不支持源和副本之间的任何锁定协议,以保证分布式(交叉服务器)更新的原子性。换句话说,客户端A可以使更新成为共同源1,并且在此期间,在传播到Co-Source 2之前,客户端B可以对具有更新的CO-Source 2进行更新客户端的工作与CO-Source 1不同1.因此,当客户端A的更新使其成为共源2时,它会产生与您在CO-Source 1中拥有的表不同的表,即使在所有更新之后来自共源2也传播。这意味着您不应该以双向复制关系将两个服务器一起连锁,除非您确定您的更新可以在任何顺序中安全地发生,或者除非您在客户端代码中以某种方式处理错误订购的更新。 您还应该意识到双向复制实际上并不是在更新所关注的情况下非常出现每个服务器必须执行相同数量的更新,就像您的单个服务器一样。唯一的区别是锁定争用较少,因为源自另一服务器上的更新在一个复制线程中序列化。即使是这种好处也可能被网络延迟抵消。 |
|
A.14.6。 |
如何使用复制来提高系统的性能? |
将一个服务器设置为源并指导所有写入它。然后在您拥有预算和Rackspace的情况下配置多种副本,并在源和副本中分发读取。您还可以使用副本启动 |
|
A.14.7。 |
我该如何做准备在我自己的应用程序中的客户端代码来使用性能增强复制? |
请参阅使用复制作为横向扩展解决方案的指南,第17.4.5节“使用缩放的复制”. |
|
A.14.8。 |
MySQL Replication的何时以及多么能力提高我系统的性能? |
MySQL复制对于处理频繁读和不频繁写的系统来说是最有益的。从理论上讲,通过使用单源/多副本设置,您可以通过添加更多副本来扩展系统,直到耗尽网络带宽,或者更新负载增长到源无法处理的程度。 要确定在添加的好处开始级别之前可以使用多少副本,以及您可以改进网站的性能,您必须知道您的查询模式,并通过基于基准测试读取和写入之间的关系来确定凭经验典型的源和典型的副本。此处的示例显示了对假设系统的复制可以获得的相当简化的计算。让 假设系统负载由10%的写入和90%的读数组成,我们通过基准测试了
9 *
最后一个公式表示最大写次数 该分析产生以下结论:
这些计算假定有无限的网络带宽,忽略了其他一些对您的系统可能很重要的因素。在许多情况下,您可能无法执行类似于刚才所示的计算,该计算可以准确地预测添加后系统上发生的情况
|
|
A.14.9。 |
如何使用复制来提供冗余或高可用性? |
如何实现冗余,完全取决于您的应用和情况。高可用性解决方案(具有自动故障转移)需要主动监控和自定义脚本或第三方工具,以将原始MySQL服务器的故障转移支持提供给副本。 要手动处理此过程,您应该能够通过更改应用程序与新服务器通信或将MySQL服务器的DNS从故障服务器调整到新服务器来将故障源从故障源切换到预配置的副本。 有关更多信息和一些示例解决方案,请参见第17.4.8节,“故障切换时切换源”. |
|
A.14.10。 |
如何判断复制源服务器是使用基于语句的二进制日志记录格式还是基于行的二进制日志记录格式? |
检查价值
显示的值总是其中之一 |
|
A.14.11。 |
如何告诉副本使用基于行的复制? |
副本自动知道使用哪种格式。 |
|
A.14.12。 |
|
使用该服务器启动服务器 |
|
A.14.13。 |
在混合操作系统上是否对复制工作(例如,源在Linux上运行,而副本在麦斯卡斯和Windows上运行)? |
是的。 |
|
A.14.14。 |
复制是否可以在混合硬件架构上工作(例如,源代码运行在64位机器上,而副本运行在32位机器上)? |
是的。 |