【问题标题】:How to mirror mysql database traffic to another server如何将mysql数据库流量镜像到另一台服务器
【发布时间】:2019-01-13 13:00:07
【问题描述】:

我在 Cent OS 7 中有两台服务器 Mysql 数据库。服务器 A(192.168.0.1) 是实时服务器,服务器 B(192.168.0.2) 是测试服务器。我想将服务器 A 的流量镜像到服务器 B。我使用了以下命令:

Server A) iptables -A PREROUTING -t mangle -p tcp --dport 3306  -j TEE --gateway 192.168.0.2
Server A) iptables -A POSTROUTING -t mangle -p tcp --dport 3306  -j TEE --gateway 192.168.0.2

Server B) iptables -t nat -A PREROUTING -p tcp -d 192.168.0.1 --dport 3306 -j DNAT --to 192.168.0.2

我的问题存在于服务器 B。在服务器 B 中,当我在端口 3306 上看到 tcpdump 时,我在服务器 A 上看到相同的数据包。换句话说,两台服务器上 tcpdump 的结果相同。

我在网上搜索了几天,并尝试了几种解决方案。解决方案之一是define lo 接口上服务器 B 中服务器 A 的地址 IP。我做到了,但没有工作。服务器 B 中的 Mysql 没有命中数据包,我看不到任何已建立的连接。

我看到this 页面并使用了它,但此解决方案在服务器 A 上有开销,并且连接数是 3 倍。

我的问题有解决方案吗?

【问题讨论】:

  • 您不能只是将流向一台服务器的流量复制/镜像到另一台服务器并希望它能正常工作。理论上,这只有在 MySQL 服务器处于 exact 相同状态时才有效,因此服务器 B 上接收到的 TCP 包对服务器 B 及其状态有意义。如果您想运行压力测试,请不要使用实时服务器上的实时流量,而是使用您可以使用的任何压力测试应用程序/工具。

标签: mysql iptables


【解决方案1】:

如果您只是想让两台服务器的数据库保持同步,为什么不直接使用 MySQL 复制,让服务器 B 成为服务器 A 的副本/从属服务器?

至少在那种情况下,如果连接出现故障并且复制停止(或暂时滞后),则可以修复它并且可以启动副本以与主节点同步。如果您失去了服务器 A 和服务器 B 之间的网络连接,而您只是用来自服务器 A 的重复网络流量“喷洒”服务器 B - 无法保证您的数据集将真正保持同步。

查看文档以配置两台服务器之间的复制: https://dev.mysql.com/doc/refman/8.0/en/replication.html

【讨论】:

  • 我想申请压力测试。在实时数据库中,同时有很多连接,但在复制模式下连接较少。 Live mysql 服务器版本是 5.5,测试服务器是 8。我想迁移到版本 8,但我想首先检查压力测试。对我来说,相同的连接很重要,与服务器实时响应和同步数据并不重要。
【解决方案2】:

您根本无法通过镜像 TCP 流来做到这一点。

您需要一个额外的“外部”工具,或者是为此目的而设计的代理(如果有这样的事情——我对这种策略持怀疑态度,因为这种方法会使生产环境不必要地复杂化,但它可以工作)或类似Percona Query Playback¹ 的东西,它使用 MySQL 慢查询日志在活动服务器完成后立即捕获每个查询,并在辅助服务器上重播。

之所以使用Slow Query Log——我怀疑——是因为它比General Query Log 具有更简洁、更易于解析的格式,而General Query Log 很难机器解析并且没有提供太多有用的信息。

@@long_query_time 设置为0 会说服MySQL Server 将所有 查询视为满足“慢”标准,因此有资格写入慢日志。

您也可以使用相同的策略来设计您自己的实用程序来完成完全相同的目的 - 通过跟踪此文件来读取日志,并使用客户端线程池提交查询以在辅助服务器上执行(适用于适当的并行性)。


¹ Percona 查询回放 仅作为示例,而非认可。我已经阅读过这个实用程序,但不记得我过去是否实际使用过它。

【讨论】:

    【解决方案3】:

    我得出结论,使用 iptables,我不能这样做,因为我需要在测试服务器和客户端计算机之间创建会话。

    我决定使用proxysql,因为这个实用程序有镜像流量工具。

    谢谢

    【讨论】:

      猜你喜欢
      • 2011-05-23
      • 1970-01-01
      • 2017-10-04
      • 2016-09-13
      • 2011-08-25
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      相关资源
      最近更新 更多