postgresql 如何查看pg_wal目录下xlog文件总大小
当然如果你登录服务器所在主机,直接在$PGDAT/pg_wal下执行:
du-h--max-depth=1./
可以得到。
#du-h--max-depth=1./ 4.0K./archive_status 193M./
如果通过客户端怎么做呢?
答案:pg_ls_waldir()函数。pg_ls_waldir()是pg10.0引入的函数,可以输出数据库WAL目录的所有文件。
postgres=#selectsum(size)frompg_ls_waldir(); sum ----------- 201326592 (1row)
单位是byte,所以当前pg_wal的xlog日志总大小为201326592/1024/1024=192M。
也可以使用:
postgres=#selectcount(*)frompg_ls_waldir(); count ------- 12 (1row)
12表示wal日志文件个数,总大小12*16=192M。
16表示单个wal日志文件大小,单位MB,WAL日志文件大小默认为16MB。
bonus:
1、怎么调整单个wal日志文件大小?
答:使用initdb调整WAL文件大小。
2、pg_ls_logdir()也是pg10.0版本引入的函数,输出数据库日志目录的所有文件。
postgres=#select*frompg_ls_logdir(); name|size|modification ----------------------------------+---------+------------------------ postgresql-2020-04-28_092020.log|2277343|2020-04-2911:34:56+08 postgresql-2020-04-28_092020.csv|140050|2020-04-2911:34:56+08
3、如何列出/data文件夹中的文件?
答:pg_ls_dir
postgres=#selectpg_ls_dir('/data'); pg_ls_dir ----------------------
补充:postgresql查看wal生成频率和大小
–wal文件生成数量
–linuxls--full-timestatfilename
–pg_stat_file返回一个记录,其中包含
–1size文件尺寸
–2access最后访问时间戳(linux:最近访问)、
–3modification最后修改时间戳(linux:最近更改–)、
–4change最后文件状态改变时间戳(只支持Unix平台)(linux:最近改动)、
–5creation文件创建时间戳(只支持Windows)
–6isdir一个boolean指示它是否为目录isdir
–select*frompg_stat_file('/var/lib/postgresql/9.1/main/pg_xlog/0000000200000BBB000000A9'); –/var/lib/postgresql/9.1/main/pg_xlog –/var/log/postgresql –/mnt/nas_dbbackup/archivelog
withtmp_fileas( selectt1.file, t1.file_ls, (pg_stat_file(t1.file)).sizeassize, (pg_stat_file(t1.file)).accessasaccess, (pg_stat_file(t1.file)).modificationaslast_update_time, (pg_stat_file(t1.file)).changeaschange, (pg_stat_file(t1.file)).creationascreation, (pg_stat_file(t1.file)).isdirasisdir from(selectdir||'/'||pg_ls_dir(t0.dir)asfile, pg_ls_dir(t0.dir)asfile_ls from(select'/var/lib/postgresql/9.1/main/pg_xlog'::textasdir --需要修改这个物理路径 --select'/mnt/nas_dbbackup/archivelog'::textasdir --selectsettingasdirfrompg_settingswherename='log_directory' )t0 )t1 where1=1 orderby(pg_stat_file(file)).modificationdesc ) selectto_char(date_trunc('day',tf0.last_update_time),'yyyymmdd')asday_id, sum(casewhendate_part('hour',tf0.last_update_time)>=0anddate_part('hour',tf0.last_update_time)<24then1else0end)aswal_num_all, sum(casewhendate_part('hour',tf0.last_update_time)>=0anddate_part('hour',tf0.last_update_time)<1then1else0end)aswal_num_00_01, sum(casewhendate_part('hour',tf0.last_update_time)>=1anddate_part('hour',tf0.last_update_time)<2then1else0end)aswal_num_01_02, sum(casewhendate_part('hour',tf0.last_update_time)>=2anddate_part('hour',tf0.last_update_time)<3then1else0end)aswal_num_02_03, sum(casewhendate_part('hour',tf0.last_update_time)>=3anddate_part('hour',tf0.last_update_time)<4then1else0end)aswal_num_03_04, sum(casewhendate_part('hour',tf0.last_update_time)>=4anddate_part('hour',tf0.last_update_time)<5then1else0end)aswal_num_04_05, sum(casewhendate_part('hour',tf0.last_update_time)>=5anddate_part('hour',tf0.last_update_time)<6then1else0end)aswal_num_05_06, sum(casewhendate_part('hour',tf0.last_update_time)>=6anddate_part('hour',tf0.last_update_time)<7then1else0end)aswal_num_06_07, sum(casewhendate_part('hour',tf0.last_update_time)>=7anddate_part('hour',tf0.last_update_time)<8then1else0end)aswal_num_07_08, sum(casewhendate_part('hour',tf0.last_update_time)>=8anddate_part('hour',tf0.last_update_time)<9then1else0end)aswal_num_08_09, sum(casewhendate_part('hour',tf0.last_update_time)>=9anddate_part('hour',tf0.last_update_time)<10then1else0end)aswal_num_09_10, sum(casewhendate_part('hour',tf0.last_update_time)>=10anddate_part('hour',tf0.last_update_time)<11then1else0end)aswal_num_10_11, sum(casewhendate_part('hour',tf0.last_update_time)>=11anddate_part('hour',tf0.last_update_time)<12then1else0end)aswal_num_11_12, sum(casewhendate_part('hour',tf0.last_update_time)>=12anddate_part('hour',tf0.last_update_time)<13then1else0end)aswal_num_12_13, sum(casewhendate_part('hour',tf0.last_update_time)>=13anddate_part('hour',tf0.last_update_time)<14then1else0end)aswal_num_13_14, sum(casewhendate_part('hour',tf0.last_update_time)>=14anddate_part('hour',tf0.last_update_time)<15then1else0end)aswal_num_14_15, sum(casewhendate_part('hour',tf0.last_update_time)>=15anddate_part('hour',tf0.last_update_time)<16then1else0end)aswal_num_15_16, sum(casewhendate_part('hour',tf0.last_update_time)>=16anddate_part('hour',tf0.last_update_time)<17then1else0end)aswal_num_16_17, sum(casewhendate_part('hour',tf0.last_update_time)>=17anddate_part('hour',tf0.last_update_time)<18then1else0end)aswal_num_17_18, sum(casewhendate_part('hour',tf0.last_update_time)>=18anddate_part('hour',tf0.last_update_time)<19then1else0end)aswal_num_18_19, sum(casewhendate_part('hour',tf0.last_update_time)>=19anddate_part('hour',tf0.last_update_time)<20then1else0end)aswal_num_19_20, sum(casewhendate_part('hour',tf0.last_update_time)>=20anddate_part('hour',tf0.last_update_time)<21then1else0end)aswal_num_20_21, sum(casewhendate_part('hour',tf0.last_update_time)>=21anddate_part('hour',tf0.last_update_time)<22then1else0end)aswal_num_21_22, sum(casewhendate_part('hour',tf0.last_update_time)>=22anddate_part('hour',tf0.last_update_time)<23then1else0end)aswal_num_22_23, sum(casewhendate_part('hour',tf0.last_update_time)>=23anddate_part('hour',tf0.last_update_time)<24then1else0end)aswal_num_23_24 fromtmp_filetf0 where1=1 andtf0.file_lsnotin('archive_status') groupbyto_char(date_trunc('day',tf0.last_update_time),'yyyymmdd') orderbyto_char(date_trunc('day',tf0.last_update_time),'yyyymmdd')desc ;
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。