一、查看pg_wal目录文件占用大小的几种方式
1、通过操作系统命令
如果你能登录服务器所在主机,直接在$PGDAT/pg_wal下执行:du -h --max-depth=1 ./
#du -h --max-depth=1 ./
4.0K ./archive_status
193M ./
2、通过函数查询
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。
或
select pg_size_pretty(sum(size)) from pg_ls_waldir(); pg_size_pretty ---------------- 192 MB
复制
也可以使用:
postgres=# select count(*) from pg_ls_waldir(); count ------- 12 (1 row)
复制
12表示wal日志文件个数,总大小12*16=192M。
16表示单个wal日志文件大小,单位MB,WAL 日志文件大小默认为16MB。
ps:怎么调整单个wal日志文件大小?
使用 initdb 调整WAL文件大小。
二、输出数据库日志目录的所有文件
pg_ls_logdir() 也是pg10.0版本引入的函数,输出数据库日志目录的所有文件。
postgres=# select * from pg_ls_logdir();
name | size | modification
----------------------------------±------±-----------------------
postgresql-2022-07-27_085533.log | 1240 | 2022-07-28 00:09:51+08
postgresql-2022-07-28_000000.log | 364 | 2022-07-28 00:09:52+08
postgresql-2022-07-28_090217.log | 1436 | 2022-07-28 10:35:02+08
postgresql-2022-07-28_103541.log | 1366 | 2022-07-28 10:37:04+08
postgresql-2022-07-28_103705.log | 1463 | 2022-07-28 10:38:35+08
postgresql-2022-07-28_103837.log | 1962 | 2022-07-28 10:40:16+08
postgresql-2022-07-28_104017.log | 1369 | 2022-07-28 10:44:47+08
postgresql-2022-07-28_104449.log | 548 | 2022-07-28 10:44:49+08
postgresql-2022-07-28_104510.log | 548 | 2022-07-28 10:45:10+08
postgresql-2022-07-28_104544.log | 555 | 2022-07-28 10:45:44+08
postgresql-2022-07-28_104602.log | 1444 | 2022-07-28 10:46:59+08
postgresql-2022-07-28_104700.log | 864 | 2022-07-28 10:47:23+08
postgresql-2022-07-28_104724.log | 1018 | 2022-07-28 10:48:19+08
postgresql-2022-07-28_104821.log | 789 | 2022-07-28 10:49:20+08
三、如何列出D:\PGDATA文件夹下的文件?
pg_ls_dir
postgres=# select pg_ls_dir('D:\PGDATA'); pg_ls_dir ---------------------- base current_logfiles global log mytbs pg_commit_ts pg_dynshmem pg_hba.conf pg_ident.conf ..............
复制