PG归档日志清理
1、确认主从节点
方法一:通过pg_controldata输出/usr/lib/postgresql/11/bin/pg_controldata -D $PGDATA | grep "Database cluster state"# 主节点: in production# 从节点: in archive recovery# $PGDATA路径通过 ps -ef |grep -v grep |grep postgres |grep config_file方法2:通过数据字典表pg_stat_replicationselect count(*) from pg_stat_replication;# 主机表中能查到记录,备机表中无记录方法3:通过自带函数判断select pg_is_in_recovery();# f表示主节点, t表示为备节点(推荐)方法4:通过进程查看,显示wal sender的是主机,显示wal receiver的是备机ps -ef |grep receiverps -ef |grep sender# 主机: wal sender process # 备机: wal receiver process
2、确认主从同步状态正常
# 主节点select * from pg_stat_replication;# 输出结果能看到从节点的同步信息, 则表示同步正常
3、确认归档日志目录
# 主节点方法1:select * from pg_settings where name='archive_command';# setting字段即为归档日志目录方法2:# 查看配置文件路径ps -ef|grep postgres |grep config_file# 查看配置文件中定义的归档目录cat /etc/postgresql/11/main/postgresql.conf|grep archive_command
4、查看当前同步的wal segment
# 从节点ps -ef|grep -v grep |grep postgres |grep recov# 能看到0000000100000039000000D3一串输出,即为当前同步的segment
5、清除归档日志
# 主节点pg_archivecleanup $PG_ARCHIVE_PATH $WAL_SEGMENT# $PG_ARCHIVE_PATH为第3步结果输出# $WAL_SEGMENT为第4步结果输出(注意:不要直接清除当前正恢复的节点文件$WAL_SEGMENT,应清除此$WAL_SEGMENT的第前500个节点)