【问题标题】:How to find (decode) PostgreSQL query from Wireshark File?如何从 Wireshark 文件中查找(解码)PostgreSQL 查询?
【发布时间】:2017-09-22 00:40:55
【问题描述】:

我在使用 PostgreSQL 5.5 的 Linux 平台上。我正在尝试监视主从之间与 PostgreSQL 相关的所有流量。为此,我使用 Wireshark 来监控流量。然后,我启动 PostgreSQL 并运行三个查询(创建表 Hello,创建表再见 & 将图像插入 PostgreSQL 数据库)。在查询期间,我在 Master 上运行 Wireshark 只是为了捕获 Master 和 Slave 之间的流量。
但是使用 Wireshark 捕获的 PostgreSQL 流量存在一个问题。所有流量都以 TCP 数据包的形式发送/接收,并且该流量采用编码形式。我无法读取该数据。我想从 Wirehsark 中找出我在 PostgreSQL 数据库中插入的所有这三个查询。 查找 PostgreSQL 查询的最佳方法是什么? 另一方面,我在 MySQL 数据库上运行相同的查询并重复上述实验。我可以很容易地阅读 Wireshark 转储中的所有这三个查询,因为它们不是编码形式。

PostgreSQL 实验的Wireshark 文件可在Wireshark-File 获得。我需要从 Wirehsark 文件中找出以上三个查询。 关于文件: 192.168.50.11 是我向远程 PostgreSQL 主服务器插入查询的源机器。 192.168.50.12是Master服务器的IP。 192.168.50.13 是从机的 IP 地址。查询从 .11 执行并插入 .12,然后使用主从方法复制到 .13。 非常欢迎指点。

【问题讨论】:

标签: mysql database postgresql tcp wireshark


【解决方案1】:

您可能正在使用基于 WAL 的复制(默认),这意味着您不能。

这涉及在机器之间传送事务日志。这是数据在磁盘上的实际表示。

还有其他基于触发器的复制方法(slony 等)和新的逻辑复制。

根据我的理解,它们都不会让您重新创建完整的原始查询,但会让您更接近。

有些系统会在节点上重复查询(如 MySQL),但它们并不完全相同。

如果您想确切了解主服务器上正在运行哪些查询,请打开查询日志并监控日志。

【讨论】:

    【解决方案2】:

    解决我自己的问题:

    我的问题得到了解决。

    我使用 Python 代码将查询插入远程 PostgreSQL 数据库。我在 PostgreSQL 中使用以下行来连接数据库。 con = psycopg2.connect(host="192.168.50.12", database="postgres", user="postgres", password="faban") 如果您使用上述方法,那么所有数据将以加密形式发送。如果您在 python 代码中使用下面给出的方法,那么所有数据都将以解密的形式发送。您可以轻松阅读 Wireshark 中的所有查询。 con = psycopg2.connect("host=192.168.50.12 dbname=postgres user=postgres password=faban sslmode=disable") 在 C 代码中也是如此。 解密数据 sprintf(conninfo, "dbname=postgres hostaddr=192.168.50.12 user=postgres password=faban sslmode=disable"); 加密数据 sprintf(conninfo, "dbname=postgres hostaddr=192.168.50.12 user=postgres password=faban");

    【讨论】:

      猜你喜欢
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      • 2018-08-22
      • 2013-04-30
      • 2021-04-07
      • 2022-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多