【问题标题】:How to log SQL queries on a Google Cloud SQL PostgreSQL 11 instance?如何在 Google Cloud SQL PostgreSQL 11 实例上记录 SQL 查询?
【发布时间】:2020-09-14 06:21:06
【问题描述】:

我必须记录在 Google Cloud SQL PostgreSQL 实例上执行的所有 DDL 和 DML 查询。

我查了很多网站,但都没有明确的信息。我尝试使用 pgAudit 扩展,但 Cloud SQL 不支持。

有人可以建议要使用的扩展或任何其他记录 SQL 查询的方式吗? 另外,如果可以记录用户登录,那也很有帮助。

【问题讨论】:

标签: postgresql google-cloud-platform google-cloud-sql


【解决方案1】:

简答 - 数据库标志

如果本地安装了 PostgreSQL 或者我们可以访问服务器容器,则可以使用其他答案中提供的解决方案。但是,在 Google Cloud 中,无法从实例直接访问此文件。

我发现这可以在 Google Cloud SQL 实例上通过设置此链接中给出的各种参数 - PostgreSQL configuration parameters 作为数据库标志来实现。

注意:所有参数均不受支持,因此请在下面给出的 Google 官方文档中进行验证。

Google Cloud Database Flags for PostgreSQL

【讨论】:

  • 太棒了!正是我在浪费一天试图弄清楚之后所需要的。想知道你是怎么发现的。我们能否限制少数 db/ 用户,以便不记录他们的操作,例如 cloudSqlAdmin。
  • @bak2trak,假设您将这些日志重定向到 GCP 存储桶,您可以在 GCP 的日志查看器中添加过滤器。顶部有一个过滤器查询,您可以使用它来排除特定用户的显示。这只是为了观看。无论如何都会根据您的偏好记录所有查询
【解决方案2】:

添加postgresql.conf:

log_statement=mod

https://www.postgresql.org/docs/12/runtime-config-logging.html

记录所有 ddl 语句,以及数据修改语句,例如 插入、更新、删除、截断和复制自。准备、执行和 EXPLAIN ANALYZE 语句也会被记录,如果它们包含的命令 是合适的类型。

要记录连接和断开连接,请添加postgresql.conf

log_connections=on
log_disconnections=on

【讨论】:

    【解决方案3】:

    2020 年 10 月 12 日,Google Cloud SQL for PostgreSQL 增加了对 pgAudit 的支持。请查看这些docs 了解更多信息。

    【讨论】:

      猜你喜欢
      • 2018-10-12
      • 2018-06-10
      • 1970-01-01
      • 2020-12-10
      • 2019-08-05
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      • 2012-02-08
      相关资源
      最近更新 更多