开发者社区> 李博 bluemind> 正文

PostgreSQL 10.1 手册_部分 III. 服务器管理_第 24 章 日常数据库维护工作_24.3. 日志文件维护

简介: 24.3. 日志文件维护 把数据库服务器的日志输出保存在一个地方是个好主意, 而不是仅仅通过/dev/null丢弃它们。 在进行问题诊断的时候,日志输出是非常宝贵的。不过,日志输出可能很庞大(特别是在比较高的调试级别上), 因此你不会希望无休止地保存它们。
+关注继续查看

24.3. 日志文件维护

把数据库服务器的日志输出保存在一个地方是个好主意, 而不是仅仅通过/dev/null丢弃它们。 在进行问题诊断的时候,日志输出是非常宝贵的。不过,日志输出可能很庞大(特别是在比较高的调试级别上), 因此你不会希望无休止地保存它们。你需要轮转日志文件, 这样在一段合理的时间后会开始新的日志文件并且移除旧的。

如果你简单地把postgresstderr定向到一个文件中,你会得到日志输出, 但是截断该日志文件的唯一方法是停止并重起服务器。这样做对于开发环境中使用的PostgreSQL可能是可接受的,但是你肯定不想在生产环境上这么干。

一个更好的办法是把服务器的stderr输出发送到某种日志轮转程序里。 我们有一个内建的日志轮转程序,你可以通过在 postgresql.conf里设置配置参数logging_collectortrue的办法启用它。该程序的控制参数在 第 19.8.1 节里描述。你也可以使用这种方法把日志数据捕捉成机器可读的CSV(逗号分隔值)格式。

另外,如果在你已经使用的其他服务器软件中有一个外部日志轮转程序,你可能更喜欢使用它。 比如,包含在Apache发布里的rotatelogs工具就可以用于PostgreSQL。 要这么做,只需要把服务器的stderr用管道重定向到要用的程序。 如果你用pg_ctl启动服务器,那么stderr已经重定向到stdout, 因此你只需要一个管道命令,比如:

pg_ctl start | rotatelogs /var/log/pgsql_log 86400

另外一种生产级的管理日志输出的方法就是把它们发送给syslog,让syslog处理文件轮转。 要利用这个工具,我们需要设置postgresql.conf里的log_destination配置参数设置为syslog(记录syslog日志)。然后在你想强迫syslog守护进程开始写入一个新日志文件的时候, 你就可以发送一个 SIGHUP信号给它。 如果你想自动进行日志轮转,可以配置logrotate程序处理 来自syslog的日志文件。

不过,在很多系统上,syslog不是非常可靠,特别是在面对大量日志消息的情况下; 它可能在你最需要那些消息的时候截断或者丢弃它们。另外,在Linuxsyslog会把每个消息刷写到磁盘上, 这将导致很差的性能(你可以在syslog配置文件里面的文件名开头使用一个-来禁用这种行为)。

请注意上面描述的所有解决方案关注的是在可配置的间隔上开始一个新的日志文件, 但它们并没有处理对旧的、不再需要的日志文件的删除。你可能还需要设置一个批处理任务来定期地删除旧日志文件。 另一种可能的方法是配置日志轮转程序,让它循环地覆盖旧的日志文件。

pgBadger是一个外部项目,它可以进行日志文件的深度分析。 check_postgres可在重要消息出现在日志文件中时向Nagios提供警告,也可以探测很多其他的特别情况。

本文转自PostgreSQL中文社区,原文链接:24.3. 日志文件维护

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
PostgreSQL 12 文档: 部分 III. 服务器管理
部分 III. 服务器管理 这部份覆盖了PostgreSQL数据库管理员感兴趣的主题。包括软件安装、搭建和配置一个服务器、管理用户和数据库以及维护任务。任何想要运行一个PostgreSQL服务器的人(即使是用于个人用途而不是生产环境),应该熟悉这一部分覆盖的主题。 这部份的信息大致上按照一个新用户会阅读的顺序来安排。但是章节都是自组织的并且可以根据需要独立阅读。这一部分的信息也是按照叙事风格组织的。需要一个特定命令的完整描述的读者应该看看第 VI 部分。
16 0
PostgreSQL 10.1 手册_部分 III. 服务器管理
部分 III. 服务器管理 这部份覆盖了PostgreSQL数据库管理员感兴趣的主题。包括软件安装、搭建和配置一个服务器、管理用户和数据库以及维护任务。任何想要运行一个PostgreSQL服务器的人(即使是用于个人用途而不是生产环境),应该熟悉这一部分覆盖的主题。
1537 0
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 32 章 回归测试
第 32 章 回归测试 目录 32.1. 运行测试 32.1.1. 在一个临时安装上运行测试 32.1.2. 在一个现有安装上运行测试 32.1.3. 附加测试套件 32.1.4. 区域和编码 32.
1075 0
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 32 章 回归测试_32.5. 测试覆盖检查
32.5. 测试覆盖检查 PostgreSQL 源代码可以使用覆盖测试指令编译,因此可以检查哪些部分的代码被回归测试或任何其他测试套件所覆盖。当前使用 GCC 编译时支持该特性,并且需要gcov和lcov程序。
1216 0
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 32 章 回归测试_32.4. TAP Tests
32.4. TAP Tests 各种测试,尤其是src/bin下的客户端程序测试, 都使用Perl TAP工具,并使用Perl测试程序prove运行。 你可以通过设置make变量PROVE_FLAGS 向prove传递命令行选项,例如: make -C src/bin check PROVE_FLAGS='--timer' 详见prove的手册页。
1094 0
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 32 章 回归测试_32.3. 变体比较文件
32.3. 变体比较文件 因为某些测试生来就会产生依赖环境的结果,我们提供了方法来指定替代的“预期”结果文件。每一个回归测试可以有多个比较文件来展示在不同平台上的可能结果。有两种独立的机制来决定为每一个测试使用哪个比较文件。
1145 0
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 32 章 回归测试_32.2. 测试评估
32.2. 测试评估 32.2.1. 错误消息差异 32.2.2. 区域差异 32.2.3. 日期和时间差异 32.2.4. 浮点差异 32.2.5. 行序差异 32.2.6. 栈深度不足 32.2.7. “失败”测试 32.2.8. 配置参数 一些正确安装的并且全功能的PostgreSQL安装可能会在这些回归测试中的某些上“失败”,其原因是平台相关的因素,例如可变浮点表示和 message wording。
1210 0
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 32 章 回归测试_32.1. 运行测试
32.1. 运行测试 32.1.1. 在一个临时安装上运行测试 32.1.2. 在一个现有安装上运行测试 32.1.3. 附加测试套件 32.1.4. 区域和编码 32.1.5. 额外测试 32.1.6. 测试热备 回归测试可以在一个已经安装并运行的服务器上运行,或者在编译树中的一个临时安装上运行。
1256 0
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 31 章 逻辑复制
第 31 章 逻辑复制 目录 31.1. 发布 31.2. 订阅 31.2.1. 复制槽管理 31.3. 冲突 31.4. 限制 31.5. 架构 31.5.1. 初始快照 31.6. 监控 31.7. 安全 31.8. 配置设置 31.9. 快速设置 逻辑复制是根据复制标识(通常是主键)复制数据对象及其更改的一种方法。
1356 0
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 31 章 逻辑复制_31.9. 快速设置
31.9. 快速设置 首先设置postgresql.conf中的配置选项: wal_level = logical 其他所需设置的默认值对于基本设置来说足够了。 需要调整pg_hba.conf以允许复制 (这里的值取决于你的实际网络配置和你想要用于连接的用户): host all repuser 0.
1146 0
+关注
李博 bluemind
云栖社区Java、Redis、MongoDB运营小编,有意合作请联系钉钉:15810436147
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
金融级 PostgreSQL监控及优化
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关镜像