在以下部分中,我们为最常见的问题提供了关于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上运行,而副本在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。 |
我如何使用复制来提高系统的性能? |
将一台服务器设置为源服务器,并将所有写操作都指向它。然后,根据您的预算和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上运行,而副本在OS X和Windows上运行)? |
是的。 |
|
A.14.14。 |
复制是否可以在混合硬件架构上工作(例如,源代码运行在64位机器上,而副本运行在32位机器上)? |
是的。 |