天天看点

HGDB日志管理

作者:瀚高PG实验室 (Highgo PG Lab)- 波罗

HGDB有3种日志,分别是hgdb_log(数据库运行日志)、pg_xlog(WAL 日志,即重做日志)、pg_clog(事务提交日志,记录的是事务的元数据)。

hgdb_log默认是关闭的,需要设置参数启用此日志。

pg_xlog和pg_clog都是强制打开的,无法关闭。

默认路径为$PGDATA。

hgdb_log 

该文件夹中的日志一般用来记录服务器与DB的状态,如各种Error信息,定位慢查询SQL,数据库的启动关闭信息,发生checkpoint过于频繁等的告警信息等。

linux自带的路径一般在$PGDATA下面。该日志有.csv格式和.log。

这种日志是可以被清理删除不影响DB的正常运行。

当我们有遇到DB无法启动或者更改参数没有生效时,第一个想到的就是查看这个日志。 

如果服务无法启动,该日志文件夹下的日志没有记录,建议查看操作系统的事件查看器的日志。有助于快速定位问题。

日志相关参数推荐值:

alter system set log_destination = 'csvlog'; 

alter system set logging_collector = on;   #是否将日志重定向至文件中

alter system set log_directory = 'hgdb_log';     #日志所在目录

alter system set log_filename = 'highgodb-%a.log';  #%a 应用名称

alter system set log_rotation_age = '1d';   #每天生成一个新的日志文件

alter system set log_rotation_size = 0;     #不限制单个日志文件大小

alter system set log_truncate_on_rotation = on;  #只保留7天日志,循环覆盖

alter system set log_hostname = on;

alter system set log_line_prefix = '%m';  #控制每条日志信息的前缀格式,%m时间戳带毫秒

alter system set log_statement = 'ddl';  #控制记录哪些SQL语句,ddl记录所有数据定义命令

------

pg_xlog 

该文件夹中的日志是记录的HGDB的WAL信息,也就是一些事务日志信息(transaction log),默认单个大小是16M。这些信息通常名字是类似'000000010000000000000013'这样的文件,这些日志会在 定时回滚恢复(PITR), 流复制(Replication Stream)以及归档时能被用到,这些日志是非常重要的,记录着数据库发生的各种事务信息,不得随意删除或者移动这类日志文件,不然你的数据库会有无法恢复的风险。

当归档或者流复制发生异常的时候,事务日志会不断地生成,有可能会造成磁盘空间被塞满,最终导致DB挂掉或者起不来。遇到这种情况不用慌,可以先关闭归档或者流复制功能,备份pg_xlog日志到其他地方,但请不要删除。然后删除较早时间的的pg_xlog,有一定空间后再试着启动数据库。 

WAL开启归档

alter system set wal_level = archive;

alter system set archive_mode = on;

alter system set archive_directory = '/hgdbbak/archive';

------

pg_clog 

pg_clog这个文件也是事务日志文件,但与pg_xlog不同的是它记录的是事务的元数据(metadata),这个日志告诉我们哪些事务完成了,哪些没有完成。这个日志文件一般非常小,但是重要性也是相当高,不得随意删除或者对其更改信息。

pg_log记录各种Error信息,以及服务器与DB的状态信息,可由用户随意更新删除pg_xlog与pg_clog记录数据库的事务信息,不得随意删除更新,做物理备份时要记得备份着两个日志。