这篇文章主要介绍“PostgreSQL的日志文件参数及注意事项有哪些”,在日常操作中,相信很多人在PostgreSQL的日志文件参数及注意事项有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PostgreSQL的日志文件参数及注意事项有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!运行日志参数1.1 运行日志主要参数运行日志主要相关的参数如下,默认没有开启的话没有log目录,开启后会自动生成。参数可选值/说明og_destination = ‘csvlog’# stderr, csvlog, syslog, and eventlog ,csvlog requires logging_collector to be on一般选择这个,可以将csv日志导入数据库中查看logging_collector = on# Enable capturing of stderr and csvlog into log files
选scv格式的日志必须设置这个参数on,修改需要重启log_directory = ‘log’日志输出目录log_filename = ‘postgresql-%Y-%m-%d_%H%M%S.log日志输出目录log_file_mode = 0600日志文件名字格式log_truncate_on_rotation = on# creation mode for log files 日志文件权限log_rotation_age = 1d设置重用日志log_rotation_size = 10MB多长时间重用日志log_min_messages = warning日志达到多大重用log_min_duration_statement = 60# debug5,debug4,debug3,debug2,debug1,info,notice,warning,error,log,fatal,paniclog_checkpoints = on慢sql记录(超过多长时间的sql)log_connections = on记录checkpoint操作log_disconnections = on记录会话断开操作log_duration = on记录sql执行时间log_lock_waits = on# log lock waits >= deadlock_timeout 记录时间长的阻塞log_statement = ‘ddl’# none, ddl, mod, all 记录ddl1.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来记录数据库ddl1.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(# ses免费主机域名sion_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;
count
——-
60
(1 row)test=# select log_time at time zone ‘UTC’ ,database_name,connection_from,query from pg_log where log_time>to_timestamp(‘2019-05-31 14:35:00′,’yyyy-mm-dd hh34:mi:ss’);
timezone | database_name | connection_from | query
————————-+—————+—————–+———————————————————–
2019-05-31 06:35:42.843 | test | [local] |
2019-05-31 06:35:57.582 | test | [local] |
2019-05-31 06:36:54.369 | test | [local] | selectt relfilenode from pg_class where relname=’pg_log’;
2019-05-31 06:36:58.002 | test | [local] |
2019-05-31 06:37:00.192 | test | [local] |
2019-05-31 06:37:11.651 | | [local] |
2019-05-31 06:37:11.651 | test | [local] |
(7 rows)
可以看到记录数变成了60,之前的记录没有被覆盖,我们可以一直使用该表,可以用sql来查看sql,数据库,登录时间等等的所有日志。查看日志起始结束时间
test=# select min(log_time) at time zone ‘UTC’,max(log_time) at time zone ‘UTC’ from pg_log;
timezone | timezone
————————-+————————-
2019-05-30 19:33:24.892 | 2019-05-31 06:37:11.651
(1 row)
有了灵活的数据加载方式,让SQL处理很多问题更加简捷便利。到此,关于“PostgreSQL的日志文件参数及注意事项有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注云技术网站,小编会继续努力为大家带来更多实用的文章!
这篇文章主要讲解了“怎么使用MySQL bingol”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用MySQL bingol”吧!1、binlog备份[mysql@mysql5 binlog]$mysql…