當然如果你登錄服務器所在主機,直接在$PGDAT/pg_wal下執行:
du -h --max-depth=1 ./
可以得到。
#du -h --max-depth=1 ./
4.0K ./archive_status
193M ./
如果通過客戶端怎麼做呢?
答案:pg_ls_waldir()函數。pg_ls_waldir()是pg 10.0引入的函數,可以輸出數據庫WAL目錄的所有文件。
postgres=# select sum(size) from pg_ls_waldir();
sum
-----------
201326592
(1 row)
單位是byte,所以當前pg_wal的xlog日誌總大小爲201326592/1024/1024=192M。
也可以使用:
postgres=# select count(*) from pg_ls_waldir();
count
-------
12
(1 row)
12表示wal日誌文件個數,總大小12*16=192M。
16表示單個wal日誌文件大小,單位MB,WAL 日誌文件大小默認爲16MB。
bonus:
1、怎麼調整單個wal日誌文件大小?
答:使用 initdb 調整WAL文件大小。參考。
2、pg_ls_logdir() 也是pg10.0版本引入的函數,輸出數據庫日誌目錄的所有文件。
postgres=# select * from pg_ls_logdir();
name | size | modification
----------------------------------+---------+------------------------
postgresql-2020-04-28_092020.log | 2277343 | 2020-04-29 11:34:56+08
postgresql-2020-04-28_092020.csv | 140050 | 2020-04-29 11:34:56+08
3、如何列出/data文件夾中的文件?
答:pg_ls_dir
postgres=# select pg_ls_dir('/data');
pg_ls_dir
----------------------