墨墨导读:本文主要介绍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 DATABASEpostgres=# \c testYou are now connected to database "test" as user "pg12".test=# CREATE TABLE pg_logtest-# (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 TABLEtest=#


1.3.2 查看日志文件名字


[pg12@whf307 ~]$ cd $PGDATA/log[pg12@whf307 log]$ ls -rtltotal 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  testpsql (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 -rtltotal 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 testpsql (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 hh24: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处理很多问题更加简捷便利。

扩展阅读


  1. 《PostgreSQL 指南:内幕探索》之基础备份与时间点恢复(上)

  2. 《PostgreSQL 指南:内幕探索》之基础备份与时间点恢复(下)

  3. 解读年度数据库PostgreSQL:如何处理并发控制(一)

  4. “王者对战”之 MySQL 8 vs PostgreSQL 10

  5. 大象起舞:用PostgreSQL解海盗分金问题

  6. 解读年度数据库PostgreSQL:如何巧妙地实现缓冲区管理器

  7. 解读年度数据库PostgreSQL:如何处理并发控制(一)

  8. 数据和云,半年文章精选(文末赠书)

  9. 美女DBA带你了解PostgreSQL用户及角色

  10. 从Oracle到PostgreSQL:最全控制文件

数据和云

ID:OraNews

如有收获,请划至底部,点击“在看”,谢谢!

云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群

请备注:云和恩墨大讲堂

PostgreSQL的日志文件和数据加载相关推荐

  1. 解读年度数据库性能:PostgreSQL的日志文件和数据加载

    墨墨导读:本文主要介绍PostgreSQL的日志文件参数及注意事项,从csv日志中载入数据库.通过灵活的数据加载方式,让SQL在处理很多问题上更加简捷便利. 运行日志参数 1.1 运行日志主要参数 运 ...

  2. mysql 远程load data,PyMySQL将(文件)数据加载到远程MySQL实例时发生错误/异常

    我正在使用PyMySQL-0.5.0并在将数据从文件加载到远程MySQL实例时遇到了一个模糊的错误/异常.在执行"loaddatalocalinfile-"语句时,我看到一个异常, ...

  3. 【电商数仓】数仓搭建之明细数据(data warehouse detail -- DWD)层(用户行为数据之曝光、错误日志表、数据加载脚本,业务数据之评价、订单事实表)

    文章目录 一 曝光日志表 1 思路解析 2 建表语句 3 数据导入 4 查看数据 二 错误日志表 1 思路解析 2 建表语句 3 数据导入 4 查看数据 三 DWD层用户行为数据加载脚本 四 DWD层 ...

  4. MPP 二、Greenplum数据加载

    Loading external data into greenplum database table using different ways... Greenplum 有常规的COPY加载方法,有 ...

  5. Hive 分区表 数据加载

    1. Hive表数据的导入方式 1.1 本地上传至hdfs 命令: hdfs dfs -put [文件名] [hdfs绝对路径] 例如:测试文件 test_001.txt 内容如下 在 hdfs 绝对 ...

  6. ETL 数据加载机制概述

    ETL 是数据抽取(Extract).转换(Transform).加载(Load)的简写,它的功能是从数据源抽取出所需的数据,经过数据清洗和转换,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库 ...

  7. oracle 加载数据戽_走进大数据丨 ETL - Load(数据加载)

    LOAD 加载经转换和汇总的数据到目标数据仓库中,可实现SQL或批量加载数据加载(Load) 经过数据转换生成的文件的结构与数据仓库数据表的结构完全一致,可以直接通过数据加载工具,以Bulk Load ...

  8. Xcode中的基本设置(iOS9的数据加载问题,pch文件问题)

    ###开篇 在Xcode7中,我们会遇到一个问题,我的数据为什么加载不出来了?苹果已经不推崇pch文件了,但是作为习惯,我还是习惯用pch文件怎么办,每次新建一个项目都要设置一遍,有时候记不清楚还要百 ...

  9. c语言文件 加载内存吗,把文件中的数据加载到内存进行查找C语言实现.docx

    把文件中的数据加载到内存进行查找C语言实现 #define _CRT_SECURE_NO_WARNINGS#include#include#includechar **pp=NULL;void ini ...

最新文章

  1. 《Python从小白到大牛》第6章 数据类型
  2. 单据体新增界面,单价与金额字段自动进行合计
  3. Ethernet/IP 学习笔记三
  4. 现代制造工程——考试复习01
  5. Idea新建modules后无法自动导入pom.xml
  6. 计算机网络硬件的作用是什么,网络技术在计算机软硬件的作用
  7. 在.net core3.0中使用SignalR实现实时通信
  8. 网页制作的基本语言html,网页制作基础语言HTML.ppt
  9. etc/ld.so.conf文件
  10. Ubuntu开发者峰会在布拉格举行
  11. ios上的pvr与png
  12. 让电脑只能上允许的QQ号
  13. 操作系统漏洞检测与利用
  14. 了解了广告行业利益相关方,横扫一切商业模式
  15. agp计算机组装什么意思,教你怎么组装电脑
  16. Android 状态栏背景颜色修改与状态栏字体颜色修改
  17. Java多线程面试题:子线程循环10次,接着主线程循环100,接着又回到子线程循环10次, 接着再回到主线程又循环100,如此循环50次
  18. 计算机网络显示空白,Win10以太网属性网络选项中显示为空白解决方法
  19. 无线路由器经常掉线怎么办?
  20. 好看的充电宝有哪些?好看的充电宝推荐

热门文章

  1. 大牛用emacs还是vim_Emacs,Vim还是其他?
  2. ubuntu 应用程序菜单_Ubuntu智能手机,塔式无人机飞行控制应用程序等
  3. Bootstrap列表组堆叠
  4. Bootstrap 固定导航条
  5. Bootstrap 表单控件的状态
  6. CSS 文本缩进text-indent属性
  7. es6 next()、throw()、return() 的共同点
  8. vue 在js 文件中使用store_vue 如何在 .js 文件引入 store
  9. matlab圆形器件,计算围绕点+ Matlab的圆形箱
  10. mysql-The-server-quit-without-updating-PID-file