在以下部分中,我们为最常见的问题提供了关于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。如何防止授予和撤消对副本计算机复制的陈述?
- A.14.13。在混合操作系统上是否对复制工作(例如,源在Linux上运行,而副本在OS X和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。 |
如何使用复制来提高系统的性能? |
将一个服务器设置为源,并将所有写操作直接写入该服务器。然后,根据预算和机架空间配置尽可能多的副本,并将读取分发到源和副本中。还可以使用 |
|
A.14.7。 |
我该如何做准备在我自己的应用程序中的客户端代码来使用性能增强复制? |
请参阅使用复制作为扩展解决方案的指南,第16.3.4节“使用缩放的复制”。 |
|
A.14.8。 |
MySQL Replication的何时以及多么能力提高我系统的性能? |
MySQL Replication对处理频繁读取和不常写的系统最有利。从理论上讲,通过使用单源/多副本设置,可以通过添加更多副本来扩展系统,直到您的网络带宽耗尽,或者您的更新负载增长源无法处理它的点。 确定多少副本可以使用增加的好处开始之前水平,多少你可以提高你的网站的性能,你必须知道你的查询模式,确定基准测试吞吐量之间的关系经验的读和写在一个典型的源和一个典型的复制品。这里的示例显示了一个相当简化的计算,即通过复制一个假设系统可以得到什么。让 假设系统负载由10%的写和90%的读组成,我们已经通过基准测试确定了这一点
9 *
最后一个等式表示最大的写入次数 分析得出以下结论:
这些计算假设无限的网络带宽,忽略了系统上可能很重要的其他因素。在许多情况下,您可能无法执行类似于刚刚显示的计算,该计算可以准确地预测系统在系统上发生的情况(如果添加)
|
|
A.14.9。 |
如何使用复制来提供冗余或高可用性? |
如何实现冗余完全取决于应用程序和环境。高可用性解决方案(具有自动故障转移)需要主动监控和自定义脚本或第三方工具来提供从原始MySQL服务器到副本的故障转移支持。 要手动处理这个过程,您应该能够将应用程序更改为与新服务器通信,或者将MySQL服务器的DNS从故障服务器调整到新服务器,从而从一个失败的源切换到预先配置的副本。 有关更多信息和一些示例解决方案,请参阅第16.3.7节“故障转移期间的切换来源”。 |
|
A.14.10。 |
如何判断复制源服务器是否使用基于语句的或基于行的二进制记录格式? |
检查的值
所示的值始终是其中一个 |
|
A.14.11。 |
如何讲述副本使用基于行的复制? |
副本会自动知道要使用的格式。 |
|
A.14.12。 |
|
使用 |
|
A.14.13。 |
在混合操作系统上是否对复制工作(例如,源在Linux上运行,而副本在OS X和Windows上运行)? |
是的。 |
|
A.14.14。 |
是否对混合硬件架构进行复制工作(例如,源在64位计算机上运行,而副本在32位机器上运行)? |
是的。 |