原文: https://www.enmotech.com/web/detail/1/798/1.html
导读:本文主要介绍PostgreSQL的日志文件参数及注意事项,从csv日志中载入数据库。通过灵活的数据加载方式,让SQL在处理很多问题上更加简捷便利。
运行日志参数
1.1 运行日志主要参数
运行日志主要相关的参数如下,默认没有开启的话没有log目录,开启后会自动生成。
1.2 注意事项
-
设置csv格式日志的话一定要设置logging_collector 为 on
-
pg10版本的运行日志一般在$PGDATA/log目录下
-
log目录是开启运行日志后自动生成的
-
可以通过log_rotation_age来设置多久重新生成一个日志文件
-
可以通过log_rotation_size来设置多大的日志来重新生成日志文件
-
上面两个都需要配合log_truncate_on_rotation 为 on来使用
-
可以开启log_duration来记录sql执行时间
-
可以开启log_statement来记录数据库ddl
1.3 csv日志载入数据库
Oracle有外部表,pg也有fdw。oracle可以用外部表的方式将alert日志载入到数据库中用SQL来查看。PG可以用copy命令将csv日志载入到数据库中用SQL来查看。这种方式都可以很方便得用sql来查询想要的日志内容。这种方式的有点是显而易见的,就是可以很容易得用SQL来查询和过滤日志,pg的日志文件可以截断分割成若干小文件,可以载入自己需要的日志。而Oracle的alert通常会很大。
缺点也是显而易见的,如果数据库挂了就不能用这种方式来查看日志。而且pg的csv日志不容易直接阅读。
1.3.1 创建日志表
创建了一个数据库和新的表来载入日志
postgres=# create database test;
CREATE DATABASE
postgres=# \c test
You are now connected to database "test" as user "pg12".
test=# CREATE TABLE pg_log
test-# (
test(# log_time timestamp(3) with time zone,
test(# user_name text,
test(# database_name text,
test(# process_id integer,
test(# connection_from text,
test(# session_id text,
test(# session_line_num bigint,
test(# command_tag text,
test(# session_start_time timestamp with time zone,
test(# virtual_transaction_id text,
test(# transaction_id bigint,
test(# error_severity text,
test(# sql_state_code text,
test(# message text,
test(# detail text,
test(# hint text,
test(# internal_query text,
test(# internal_query_pos integer,
test(# context text,
test(# query text,
test(# query_pos integer,
test(# location text,
test(# application_name text,
test(# PRIMARY KEY (session_id, session_line_num)
test(# );CREATE TABLE
test=#
1.3.2 查看日志文件名字
[pg12@whf307 ~]$ cd $PGDATA/log
[pg12@whf307 log]$ ls -rtl
total 24
-rw------- 1 pg12 pg12 166 May 30 13:32 postgresql-2019-05-30_133202.log
-rw------- 1 pg12 pg12 496 May 30 13:32 postgresql-2019-05-30_133202.csv
-rw------- 1 pg12 pg12 0 May 30 13:32 postgresql-2019-05-30_133254.log
-rw------- 1 pg12 pg12 170 May 30 13:32 postgresql-2019-05-30_133254.csv
-rw------- 1 pg12 pg12 166 May 30 13:33 postgresql-2019-05-30_133324.log
-rw------- 1 pg12 pg12 6566 May 30 16:16 postgresql-2019-05-30_133324.csv
-rw------- 1 pg12 pg12 0 May 31 00:00 postgresql-2019-05-31_000000.log
-rw------- 1 pg12 pg12 0 May 31 00:00 postgresql-2019-05-31_000000.csv
[pg12@whf307 log]$[pg12@whf307 log]$ pwd
/soft/pg_data/log
[pg12@whf307 log]$
1.3.3 载入到数据库
[pg12@whf307 log]$ psql test
psql (12beta1)
Type "help" for help.test=# \d
List of relations
Schema | Name | Type | Owner
--------+--------+-------+-------
public | pg_log | table | pg12
(1 row)test=# copy pg_log from '/soft/pg_data/log/postgresql-2019-05-30_133324.csv' with csv;
COPY 32
1.3.4 查看日志
这样就可以用sql来查看了。执行一个普通查询
test=# select relfilenode from pg_class where relname='pg_log';
relfilenode
-------------
16385
(1 row)
载入最新的日志。这里可以重复载入,不会覆盖之前的数据。
[pg12@whf307 log]$ ls -rtl
total 32
-rw------- 1 pg12 pg12 166 May 30 13:32 postgresql-2019-05-30_133202.log
-rw------- 1 pg12 pg12 496 May 30 13:32 postgresql-2019-05-30_133202.csv
-rw------- 1 pg12 pg12 0 May 30 13:32 postgresql-2019-05-30_133254.log
-rw------- 1 pg12 pg12 170 May 30 13:32 postgresql-2019-05-30_133254.csv
-rw------- 1 pg12 pg12 166 May 30 13:33 postgresql-2019-05-30_133324.log
-rw------- 1 pg12 pg12 6566 May 30 16:16 postgresql-2019-05-30_133324.csv
-rw------- 1 pg12 pg12 0 May 31 00:00 postgresql-2019-05-31_000000.log
-rw------- 1 pg12 pg12 4545 May 31 00:37 postgresql-2019-05-31_000000.csv
[pg12@whf307 log]$ psql test
psql (12beta1)
Type "help" for help.test=# copy pg_log from '/soft/pg_data/log/postgresql-2019-05-31_000000.csv' with csv;
COPY 28
再次查看日志
test=# SELECT COUNT(*) FROM PG_LOG;
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1142
183.71 KB下载数642
644.84 KB下载数2755
相关文章
发现更多好内容猜你喜欢
AI推送时光机PostgreSQL的日志文件和数据加载
数据库2024-04-02添加和删除InnoDB数据和日志文件的方法
数据库2024-04-02解释SQL Server中的日志文件和数据文件
数据库2024-06-03Oracle日志组中如何添加冗余文件和日志组
数据库2024-04-02误删SQLServer日志文件后怎么附加数据库
数据库2024-04-02如何在Go语言中加载Laravel日志文件?
数据库2023-10-18MongoDB的追加日志设置生成新的日志文件
数据库2024-04-02PostgreSQL的日志文件参数及注意事项有哪些
数据库2024-04-02数据库重命名和迁移日志文件、数据文件的方法是什么
数据库2024-04-02oracle 数据库lsnrctl监听的日志路径和trace文件
数据库2024-04-02oracle数据库日志文件在哪里
数据库2024-05-10sql日志文件如何恢复数据
数据库2024-04-22什么是SQLServer中的日志文件和日志记录
数据库2024-04-09Oracle数据库中的日志文件是什么
数据库2024-03-02MongoDB数据库的日志文件有什么用
数据库2024-04-02SQL Server 数据库清空ldf日志文件
数据库2021-05-10Sql Server 压缩数据库日志文件的方法
数据库2022-11-24Laravel日志:如何使用Go语言进行数据加载?
数据库2023-10-18mysql学习8:第四章:数据库文件--日志文件
数据库2024-04-02咦!没有更多了?去看看其它编程学习网 内容吧