数据库版本:select pw_version();/select version();
1.0
兼容模式:select datname,datcompatibility from pg_database where datname=’yw_db’;
b模式
问题背景
客户生产环境变为只读,原因是归档目录空间占满,导致xlog日志无法清除,数据目录空间增长到85%时,数据库变为只读。
问题分析
排查归档目录为什么会被撑满,业务反馈业务情况并无变动,在进行备份恢复演练后才出现这种情况。排查到是因为进行备份恢复演练时,为了加快归档落盘速度时,设置了archive_timeout参数为1。
archive_timeout适用于未使用主备流式复制或者需要对WAL日志进行归档的场景,默认情况下,WAL达到一定大小会进行文件切换,归档此时能将WAL文件复制过去。系统空闲时可能导致部分WAL日志一直留在内存中,无法及时被归档。archive_timeout设置为大于0后,系统会在超过设定值时强制将内存中的WAL内容刷到磁盘上,以实现WAL日志及时归档。进行备份恢复,设置archive_timeout为1,导致归档日志并没有达到一定大小就自动切换,所以归档空间很快就被占满。归档满后,xlog未进行归档不能自动清除,数据空间逐渐加大,达到数据库只读阈值,数据库变为只读状态。
建议方案
先调大数据库只读参数阈值,根据业务情况清理若干天归档,默认是清理9天前的,待xlog归档后会自动清理掉,数据目录空间恢复正常,再调回初始只读参数阈值。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




