日志参考
日志类型简介
在数据库运行过程中,会出现大量日志,既有保证数据库安全可靠的WAL日志(预写式日志,也称为Xlog),也有用于数据库日常维护的操作日志pg_log等。在数据库发生故障时,可以参考这些日志进行问题定位和数据库恢复的操作。
日志类型
日志类型 | 说明 |
---|---|
pg_log | 记录服务器与数据库的的状态,比如各种Error信息,定位慢查询SQL,数据库的启动关闭信息,告警信息等。 |
pg_xlog | 预写式日志,简称wal日志,是指在事务提交的时候, 先将事务对于数据库的修改写入一个顺序追加的 WAL文件中。 |
pg_clog | 记录事务的提交结果状态。 |
pg_csnlog | 记录事务提交的序列号。 |
审计日志 | 开启数据库审计功能后,记录用户的某些操作。 |
pg_log
日志简介
pg_log(数据库运行日志)记录服务器与数据库的的状态,比如各种Error信息,定位慢查询SQL,数据库的启动关闭信息,告警信息等。
如果Vastbase发生故障,可以通过这些日志信息跟踪用户对数据库进行了哪些操作,重现故障场景。
这个日志是用户可读,且可以自定义的。
存储路径
默认路径:$PGDATA/pg_log
pg_log的存储路径可以通过GUC参数log_directory来自定义。
相关配置参数
关于pg_log日志的相关配置参数如下:
logging_collector
参数说明: 控制开启后端日志收集进程logger进行日志收集。该进程捕获发送到stderr或csvlog的日志消息并写入日志文件。
该参数属于POSTMASTER类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 布尔型
- on表示开启日志收集功能。
- off表示关闭日志收集功能。
默认值: off
log_destination
参数说明: Vastbase支持多种方法记录服务器日志,log_destination的取值为一个逗号分隔开的列表(如log_destination=“stderr,csvlog”)。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 字符串
有效值为stderr、csvlog、syslog、eventlog。
取值为stderr,表示日志打印到屏幕。
取值为csvlog,表示日志的输出格式为“逗号分隔值”即CSV(Comma Separated Value)格式。使用csvlog记录日志的前提是将logging_collector设置为on,请参见使用CSV格式写日志。
取值为syslog,表示通过操作系统的syslog记录日志。Vastbase使用syslog的LOCAL0~LOCAL7记录日志,请参见syslog_facility。使用syslog记录日志需在操作系统后台服务配置文件中添加代码:
local0.* /var/log/omm
默认值: stderr
log_directory
参数说明: logging_collector设置为on时,log_directory决定存放服务器日志文件的目录。它可以是绝对路径或者是相对路径(相对于数据目录的路径)。log_directory支持动态修改,可以通过vb_guc reload实现。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
- 当配置文件中log_directory的值为非法路径时,会导致Vastbase无法重新启动。
- 合法路径:用户对此路径有读写权限。
- 非法路径:用户对此路径无读写权限。
- 通过vb_guc reload动态修改log_directory时,当指定路径为合法路径时,日志输出到新的路径下。当指定路径为非法路径时,日志输出到上一次合法的日志输出路径下而不影响数据库正常运行。此时即使指定的log_directory的值非法,也会写入到配置文件中。
- 在沙箱环境,路径中不可以包含/var/chroot,例如log的绝对路径是/var/chroot/var/lib/log/Ruby/pg_log/cn_log,则只需要设置为/var/lib/log/Ruby/pg_log/cn_log。
取值范围: 字符串
默认值: PGDATA的相对路径,即$PGDATA/pg_log
log_filename
参数说明: 日志文件命名形式。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
- 建议使用%转义字符定义日志文件名称,否则难以对日志文件进行有效的管理。
- 当log_destination设为csvlog时,系统会生成附加了时间戳的日志文件名,文件格式为csv格式,例如“server_log.1093827753.csv”。
取值范围: 字符串
默认值: postgresql-%Y-%m-%d_%H%M%S.log
log_file_mode
参数说明: logging_collector设置为on时,log_file_mode设置服务器日志文件的权限。通常log_file_mode的取值是能够被chmod和umask系统调用接受的数字。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
- 使用此选项前请设置log_directory,将日志存储到数据目录之外的地方。
- 因日志文件可能含有敏感数据,故不能将其设为对外可读。
取值范围: 整型,0000~0777(8进制计数,转化为十进制 0 ~ 511)。
- 0600表示只允许服务器管理员读写日志文件。
- 0640表示允许管理员所在用户组成员只能读日志文件。
默认值: 0600(转化为十进制为384)
log_truncate_on_rotation
参数说明: logging_collector设置为on时,log_truncate_on_rotation用于设置日志消息的写入方式。
该参数设置为on,如果此时数据库中存在同名的日志文件,则会覆盖原来同名的日志。如果为off,新生成的日志将在文件尾部追加而不是覆盖。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
示例如下:
假设日志需要保留7天,每天生成一个日志文件,日志文件名设置为server_log.Mon、server_log.Tue等。第二周的周二生成的日志消息会覆盖写入到server_log.Tue。设置方法:将log_filename设置为server_log.%a ,log_truncate_on_rotation设置为on,log_rotation_age设置为1440,即日志有效时间为1天。
取值范围: 布尔型
- on表示Vastbase以覆盖写入的方式写服务器日志消息。
- off表示Vastbase将日志消息附加到同名的现有日志文件上。
默认值: off
log_rotation_age
参数说明: 该参数决定创建一个新日志文件的时间间隔(日志重用时间)。当现在的时间减去上次创建一个服务器日志的时间超过了log_rotation_age的值时,将生成一个新的日志文件。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 整型,0 ~ 35791394,单位为min。其中0表示关闭基于时间的新日志文件的创建。
默认值: 1440(min)
log_rotation_size
参数说明: 该参数决定服务器日志文件的最大容量。当日志消息的总量超过日志文件容量时,服务器将生成一个新的日志文件。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 整型,0 ~ INT_MAX / 1024,单位为KB。
0表示关闭基于容量的新日志文件的创建。
建议该值大小设置级别至少为MB级,利于日志文件的及时划分。
默认值: 10240 (即10MB)
log_min_duration_statement
参数说明: 慢SQL记录,记录超过多长时间的SQL。
设置log_min_duration_statement可以很方便地跟踪需要优化的查询语句。对于使用扩展查询协议的客户端,语法分析、绑定、执行每一步所花时间被独立记录。
该参数属于SUSET类型参数,请参考重设参数表1中对应设置方法进行设置。
log_statement同时使用时,已经被log_statement记录的语句文本不会被重复记录。在没有使用syslog情况下,推荐使用log_line_prefix记录PID或会话ID,方便将当前语句消息连接到最后的持续时间消息。
取值范围: 整型,-1 ~ INT_MAX,单位为毫秒。
- 设置为250,所有运行时间不短于250ms的SQL语句都会被记录。
- 设置为0,输出所有语句的持续时间。
- 设置为-1,关闭此功能。
默认值: -1
log_min_messages
参数说明: 控制写到服务器日志文件中的消息级别。每个级别都包含排在它后面的所有级别中的信息。级别越低,服务器运行日志中记录的消息就越少。
该参数属于SUSET类型参数,请参考重设参数表1中对应设置方法进行设置。
- 当client_min_messages和log_min_messages取相同值log时所代表的消息级别不同。
- debug日志信息的配置需要同时配置参数logging_module,即设置该参数打开后可能还需要设置logging_module打开对应模块的日志打印开关。
取值范围: 枚举类型,有效值有debug5、debug4、debug3、debug2、debug1、info、notice、warning、error、log、fatal、panic。
信息严重程度类型 详细说明 系统日志 事件日志 debug[1-5] 报告详细调试信息。 DEBUG INFORMATION info 报告用户可能需求的信息,比如在VACUUM VERBOSE过程中的信息。 INFO INFORMATION notice 报告可能对用户有帮助的信息, 比如,长标识符的截断,作为主键一部分创建的索引等。 NOTICE INFORMATION warning 报告警告信息,比如在事务块范围之外的COMMIT。 NOTICE WARNING error 报告导致当前命令退出的错误。 WARNING ERROR log 报告对数据库管理员有用的信息,比如检查点操作统计信息。 INFO INFORMATION fatal 报告导致当前会话终止的原因。 ERR ERROR panic 报告导致整个数据库被关闭的原因。 CRIT ERROR 默认值: warning
log_checkpoints
参数说明: 记录检查点和重启点的信息。打开此参数时,服务器日志消息包含涉及检查点和重启点的统计量,其中包含需要写的缓存区的数量及写入所花费的时间等。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 布尔型
- on表示打开此参数时,服务器日志消息包含涉及检查点和重启点的统计量。
- off表示关闭此参数时,服务器日志消息包含不涉及检查点和重启点的统计量。
默认值: off
log_connections
参数说明: 控制记录客户端的连接请求信息。
该参数属于BACKEND类型参数,请参考重设参数表1中对应设置方法进行设置。
有些客户端程序(例如vsql),在判断是否需要口令的时候会尝试连接两次,因此日志消息中重复的“connection receive”(收到连接请求)并不意味着一定是问题。
取值范围: 布尔型
- on表示记录信息。
- off表示不记录信息。
默认值: off
log_disconnections
参数说明: 控制记录客户端结束连接信息。
该参数属于BACKEND类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 布尔型
- on表示记录信息。
- off表示不记录信息。
默认值: off
log_duration
参数说明: 记录每个已完成SQL语句的执行时间。
该参数属于SUPERUSER类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 布尔型
- 设置为off,该选项与log_min_duration_statement的不同之处在于log_min_duration_statement强制记录查询文本。
- 设置为on并且log_min_duration_statement大于零,记录所有持续时间,但是仅记录超过阈值的语句。这可用于在高负载情况下搜集统计信息。
默认值: off
log_error_verbosity
参数说明: 控制服务器日志中每条记录的消息写入的详细度。
该参数属于SUPERUSER类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 枚举类型
- terse代表输出不包括DETAIL、HINT、QUERY及CONTEXT错误信息的记录。
- verbose代表输出包括SQLSTATE错误代码、源代码文件名、函数名及产生错误所在的行号。
- default代表输出包括DETAIL、HINT、QUERY及CONTEXT错误信息的记录,不包括SQLSTATE错误代码 、源代码文件名、函数名及产生错误所在的行号。
默认值: default
log_lock_waits
参数说明: 用于当一个会话的等待获得一个锁的时间超过deadlock_timeout的值时,此选项控制在数据库日志中记录此消息。这对于决定锁等待是否会产生一个坏的行为是非常有用的。
该参数属于SUSET类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 布尔型
- on表示记录此信息。
- off表示不记录此信息。
默认值: off
log_line_prefix
参数说明: 控制每条日志信息的前缀格式。日志前缀类似于printf风格的字符串,在日志的每行开头输出。用以%为开头的“转义字符”显示状态信息。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
表 1 转义字符表
转义字符 效果 %a 应用程序名称。 %u 用户名。 %d 数据库名。 %r 远端主机名或者IP地址以及远端端口,在不启动log_hostname时显示IP地址及远端端口。 %h 远端主机名或者IP地址,在不启动log_hostname时只显示IP地址。 %p 线程ID。 %t 时间戳(没有毫秒)。 %m 带毫秒的时间戳。 %n 表示指定错误从哪个节点上报的。 %i 命令标签:会话当前执行的命令类型。 %e SQLSTATE错误码。 %c 会话ID,详见说明。 %l 每个会话或线程的日志编号,从1开始。 %s 进程启动时间。 %v 虚拟事务ID(backendID/ localXID)。 %x 事务ID(0表示没有分配事务ID)。 %q 不产生任何输出。如果当前线程是后端线程,忽略这个转义序列,继续处理后面的转义序列;如果当前线程不是后端线程,忽略这个转义序列和它后面的所有转义序列。 %S 会话ID。 %% 字符%。
- 当log_line_prefix设置为非空值时,请将其最后一个字符作为一个独立的段,以此来直观地与后续的日志进行区分,也可以使用一个标点符号。
- Syslog生成自己的时间戳及进程ID信息,所以当登录日志时,不需要包含这些转义字符。
- %m %c %d %p %a %x %n %e表示在日志开头附加会话开始时间戳、会话ID、数据库名、线程ID、应用程序名、事务ID、报错节点、SQLSTATE错误码。
- 前缀参数顺序改变会影响在文件中的顺序。
取值范围: 字符串
默认值: %m %u %d %h %p %S
log_statement
参数说明: 控制日志记录内容。
该参数属于SUSET类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 枚举类型
- none表示不记录语句。
- ddl表示记录所有的数据定义语句,比如CREATE、ALTER和DROP语句。
- mod表示记录所有DDL语句,还包括数据修改语句INSERT、UPDATE、DELETE、TRUNCATE和COPY FROM 。
- all表示记录所有语句,PREPARE、EXECUTE和EXPLAIN ANALYZE语句也同样被记录。
默认值: none
即使log_statement设置为all,包含简单语法错误的语句也不会被记录,因为仅在完成基本的语法分析并确定了语句类型之后才记录日志。在使用扩展查询协议的情况下,在执行阶段之前(语法分析或规划阶段)同样不会记录。将log_min_error_statement设为ERROR或更低才能记录这些语句。
pg_xlog
日志简介
WAL(Write Ahead Log)预写式日志,简称wal日志。所谓预写日志,是指在事务提交的时候, 先将事务对于数据库的修改写入一个顺序追加的 WAL文件中。
WAL日志实现事务日志的标准方法,对数据文件(表和索引的载体)持久化修改之前必须先持久化相应的日志。如果要修改数据文件,必须是在这些修改操作已经记录到日志文件之后才能进行修改,即在描述这些变化的日志记录刷新到永久存储器之后。在系统崩溃时,可以使用WAL日志对Vastbase进行恢复操作。
存储路径
默认路径:$PGDATA/pg_xlog
相关配置参数
关于pg_xlog日志的相关配置参数如下:
wal_level
参数说明: 设置写入WAL信息量的级别。
该参数属于POSTMASTER类型参数,请参考重设参数表1中对应设置方法进行设置。
- 如果需要启用WAL日志归档和主备机的数据流复制,必须将此参数设置为archive或者hot_standby。
- 如果此参数设置为minimal, archive_mode必须设置为off, hot_standby必须设置为off,max_wal_senders参数设置为0, 且需为单机环境, 否则将导致数据库无法启动。
- 如果此参数设置为archive,hot_standby必须设置为off,否则将导致数据库无法启动。但是,hot_standby在双机环境中不能设置为off,具体参见hot_standby参数说明。
取值范围: 枚举类型
minimal
WAL仅提供从数据库服务器崩溃或者紧急关闭状态恢复时所需要的基本信息,无法用WAL归档日志恢复数据。
archive
这个参数增加了WAL归档需要的日志信息,从而可以支持数据库的归档恢复。
hot_standby
- 这个参数进一步增加了在备机上运行的SQL查询的信息,这个参数只能在数据库服务重新启动后生效。
- 为了在备机上开启只读查询,wal_level必须在主机上设置成hot_standby ,并且备机必须打开hot_standby参数。hot_standby和archive级别之间的性能只有微小的差异。
logical
这个参数表示WAL日志支持逻辑复制。
默认值: hot_standby
fsync
参数说明: 用于设置每次提交时是否强制Wal更新到磁盘,默认就是ON,也就是说提交的信息一定会写入Wal日志文件,虽然关闭fsync常常可以得到性能上的收益,但当发生断电或系统崩溃时可能造成不可恢复的数据损坏。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 布尔型(on或者off)
默认值: on
synchronous_commit
参数说明: 指定在命令返回”success”指示给客户端之前,一个事务是否需要等待 WAL 记录被写入磁盘,默认值是ON。
该参数属于USERSET类型参数,请参考重设参数表1中对应设置方法进行设置。
通常情况下,一个事务产生的日志的同步顺序如下:
1、主机将日志内容写入本地内存。
2、主机将本地内存中的日志写入本地文件系统。
3、主机将本地文件系统中的日志内容刷盘。
4、主机将日志内容发送给备机。
5、备机接受到日志内容,存入备机内存。
6、备机将备机内存中的日志写入备机文件系统。
7、备机将备机文件系统中的日志内容刷盘。
8、备机回放日志,完成对数据文件的增量更新。
取值范围: 枚举类型(13种)
- on/true/yes/1:表示主机事务提交需要等待备机将对应日志刷新到磁盘。
- off/false/no/1:表示主机事务提交无需等待主机自身将对应日志刷新到磁盘,通常也称为异步提交。
- local:表示主机事务提交需要等待主机自身将对应日志刷新到磁盘,通常也称为本地提交。
- remote_write:表示主机事务提交需要等待备机将对应日志写到文件系统(无需刷新到磁盘)。
- remote_receive:表示主机事务提交需要等待备机接收到对应日志数据(无需写入文件系统)。
- remote_apply/remote_apply:表示主机事务提交需要等待备机完成对应日志的回放操作。
默认值: on
full_page_writes
参数说明: 设置Vastbase服务器在检查点之后对页面的第一次修改时,是否将每个磁盘页面的全部内容写到WAL日志中。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
- 设置这个参数是因为在操作系统崩溃过程中可能磁盘页面只写入了一部分内容,从而导致在同一个页面中包含新旧数据的混合。在崩溃后的恢复期间,由于在WAL日志中存储的行变化信息不够完整,因此无法完全恢复该页。把完整的页面影像保存下来就可以保证页面被正确还原,代价是增加了写入WAL日志的数据量。
- 关闭此参数,在系统崩溃的时候,可能无法恢复原来的数据。如果服务器硬件的特质(比如电池供电的磁盘控制器)可以减小部分页面的写入风险,或者文件系统特性支持(比如ReiserFS 4),并且清楚知道写入风险在一个可以接受的范畴,可以关闭这个参数。
取值范围: 布尔型
- on表示启用此特性。
- off表示关闭此特性。
默认值: off
wal_buffers
参数说明: 设置用于存放WAL数据的共享内存空间的XLOG_BLCKSZ数,XLOG_BLCKSZ的大小默认为8KB。
该参数属于POSTMASTER类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: -1~218
- 如果设置为-1,表示wal_buffers的大小随着参数shared_buffers自动调整,为shared_buffers的1/32,最小值为8个XLOG_BLCKSZ,最大值为2048个XLOG_BLCKSZ。
- 如果设置为其他值,当小于4时,会被默认设置为4。
默认值: 16MB (2048 * 8KB)
设置建议: 每次事务提交时,WAL缓冲区的内容都写入到磁盘中,因此设置为很大的值不会带来明显的性能提升。如果将它设置成几百兆,就可以在有很多即时事务提交的服务器上提高写入磁盘的性能。根据经验来说,默认值可以满足大多数的情况。
wal_writer_delay
参数说明: WalWriter进程的写间隔时间(WAL 写入器刷写 WAL 的频繁程度)。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
如果时间过长可能造成WAL缓冲区的内存不足,时间过短会引起WAL不断写入,增加磁盘I/O负担。
取值范围: 整型, 1~10000(毫秒)
默认值: 200(ms)
commit_delay
参数说明: 表示一个已经提交的数据在WAL缓冲区中存放的时间。
该参数属于USERSET类型参数,请参考重设参数表1中对应设置方法进行设置。
- 设置为非 0 值时事务执行commit后不会立即写入WAL中,而仍存放在WAL缓冲区中,等待WalWriter线程周期性写入磁盘。
- 如果系统负载很高,在延迟时间内,其他事务可能已经准备好提交。但如果没有事务准备提交,这个延迟就是在浪费时间。
取值范围: 整型, 0~100000(微秒),其中0表示无延迟。
默认值: 0
commit_siblings
参数说明: 当一个事务发出提交请求时,如果数据库中正在执行的事务数量大于此参数的值,则该事务将等待一段时间(commit_delay的值),否则该事务则直接写入WAL。
该参数属于USERSET类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 整型, 0~1000
默认值: 5
wal_segment_size
参数说明: 说明单个WAL日志段文件的大小。日志文件以段文件的形式存储的,每个段为16MB,并分割成若干页,每页8KB。对WAL日志的命名说明如下:一个段文件的名称由24个十六进制组成,分为三个部分,每个部分由8个十六进制字符组成。第一部分表示时间线,第二部分表示日志文件标号,第三部分表示日志文件的段标号。时间线由1开始,日志文件标号和日志文件的段标号由0开始。例如,系统中的第一个事务日志文件是000000010000000000000000。
该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。
取值范围: 整型,单位为8KB。
默认值: 16MB (2048 * 8KB)
archive_mode
参数说明: 表示是否进行归档操作。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
当wal_level设置成minimal时,archive_mode参数无法使用。
无论是同步备机还是异步备机都能够开启归档,归档开启的方式与单机开启归档一致,将archive_mode置为on,并设置正确的archive_dest或者archive_command即可。
若未开启最大可用模式以及有同步备机与主机断开连接时,主机会因为业务阻塞的原因无法给备机发送归档的位置,从而导致归档失败。
取值范围:布尔型
- on表示进行归档。
- off表示不进行归档。
默认值: off
archive_dest
参数说明: 由管理员设置的用于归档WAL日志的目录,建议归档路径为绝对路径。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
当archive_dest和archive_command同时配置时,WAL日志优先保存到archive_dest所设置的目录中,archive_command配置的命令不生效。
字符串中如果是相对路径为相对于数据目录的。示例如下。
archive_dest = '/mnt/server/archivedir/'
取值范围:字符串
默认值: 空字符串
archive_timeout
参数说明:表示归档周期。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
- 超过该参数设定的时间时强制切换WAL段。
- 由于强制切换而提早关闭的归档文件仍然与完整的归档文件长度相同。因此,将archive_timeout设为很小的值将导致占用巨大的归档存储空间,建议将archive_timeout设置为60秒。
取值范围:整型,0 ~ INT_MAX,单位为秒。其中0表示禁用该功能。
默认值:0
checkpoint_segments
参数说明: 设置checkpoint_timeout周期内所保留的最少WAL日志段文件数量。每个日志文件大小为16MB。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围:整型,1~2147483646
提升此参数可加快大数据的导入速度,但需要结合checkpoint_timeout、shared_buffers这两个参数统一考虑。这个参数同时影响WAL日志段文件复用数量,通常情况下pg_xlog文件夹下最大的复用文件个数为2倍的checkpoint_segments个,复用的文件被改名为后续即将使用的WAL日志段文件,不会被真正删除。
默认值: 64
checkpoint_timeout
参数说明: 设置自动WAL检查点之间的最长时间。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围:整型,30~3600(秒)
在提升checkpoint_segments以加快大数据导入的场景也需将此参数调大,同时这两个参数提升会加大shared_buffers的负担,需要综合考虑。
默认值: 15min(即900s)
pg_clog
CLOG即就是事务提交日志,Vastbase把事务的提交结果状态记录在CLOG中。CLOG在逻辑上是一个数组,由共享内存中一系列8K页面组成。数组的序号索引对应着相应事务的标识。Vastbase中对于每个事务id使用4个bit位来标识它的状态:
0x00 :IN_PROGESS( 表示事务未开始或还在运行中)
0x01:COMMITTED(表示该事务已经提交)
0x02:ABORT(表示事务已经撤销)
0x03:SUB_COMMITTED(表示子事务已经提交而父事务状态未知)
- 如果在事务写下提交日志之前,数据库发生宕机,那么数据库恢复过程中虽然会把这两条记录插入到数据页面中,但是并不会在CLOG 中将该插入事务号标识为提交状态,后续查询也不会返回这两条记录。
- 如果在事务写下提交日志之后,数据库发生宕机,那么数据库恢复过程中,不仅会把这两条记录插入到数据页面中。同时,还会在CLOG 中将该插入事务号标识为提交状态,后续查询可以同时看见这两条插入的记录。
存储路径
默认路径:$PGDATA/pg_clog
pg_csnlog
日志简介
CSNLOG是事务提交序列日志,用于记录事务提交的序列号。CSNLOG采用全局自增的长整数作为逻辑的时间戳,模拟数据库内部的时序,当SQL执行的时候,首先会获取一个快照时间戳snapshot,当扫描数据页面的时候,会根据snapshot.CSN和事务状态来判断哪个元组(记录)版本可见,或者都不可见。
存储路径
默认路径:$PGDATA/pg_csnlog
审计日志
日志简介
Vastbase将用户对数据库的所有操作写入审计日志。数据库安全管理员可以利用这些日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。详细内容参见:操作审计
存储路径
默认路径:$PGDATA/pg_audit