MySQL 有不少日志:
- InnoDB事务日志
- 二进制日志
- 通用查询日志
- 错误日志
- 慢查询日志
我知道 Postgresql 的 WAL,它相当于 InnoDB 的事务日志(正确吗?)。
那么其他 MySQL 日志(例如 bin log)呢 - 它们有与 Postgresql 等效的吗?
答案1
由于 MySQL 实现了多种存储引擎,因此需要二进制日志进行增量备份/复制,也需要 InnoDB 事务日志来实现 ACID 遵从(仅限 InnoDB 存储引擎)在 postgres 中,WAL 既可用于复制,也可用于 ACID 遵从,因此 WAL 结合了二进制日志和 InnoDB 事务日志。
您可以使用 log_statement 和 log_duration 将 postgres 日志查询写入 syslog/separete 日志。这样,您既可以获得查询日志,又可以使用指令 log_min_duration_statement 实现慢查询日志。
答案2
我可能在一些细节上有点错误,但我相信:
正如您所说,WAL 就像 innodb 事务日志。
所有日志通常位于 /var/log/postgresql/postgresql.log 中)
标准 PostgreSQL 中没有二进制日志文件,因为它不像 MySQL 那样进行复制。您可以使用 Slony 之类的工具来添加复制。
错误日志在postgresql.log中
慢查询日志也会进入这个文件。
通用查询日志与将慢查询限制设置为0ms相同。