中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PostgreSQL的日志文件參數及注意事項有哪些

發布時間:2021-11-08 16:47:49 來源:億速云 閱讀:334 作者:iii 欄目:關系型數據庫

這篇文章主要介紹“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,panic

log_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    記錄ddl

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;
 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的日志文件參數及注意事項有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东方市| 南陵县| 楚雄市| 明溪县| 荥经县| 日照市| 宁城县| 镇巴县| 青岛市| 方山县| 炉霍县| 长子县| 蒙自县| 鄂尔多斯市| 洛阳市| 德清县| 宁南县| 仪征市| 五莲县| 会泽县| 任丘市| 博兴县| 赤水市| 延长县| 景德镇市| 开远市| 天水市| 彭泽县| 霞浦县| 洪江市| 邵东县| 台山市| 苍南县| 财经| 绥阳县| 含山县| 柏乡县| 祥云县| 卢氏县| 深泽县| 余庆县|