@H_502_0@根据报错信息,知道是由于在停机过程中,新备库所需的WAL已经被主库循环使用覆盖了,而在备库停机维护过程中,新主库并未打开归档。 @H_502_0@结果是:新备库需要重做。 @H_502_0@如主库打开归档,那么在备库重新恢复后,有了主库的归档,备库依然可以跟上主库。 @H_502_0@主备切换和日志归档的实验场景会在后面单独写,今天先写下为了解决这个问题学到的其他知识。 @H_502_0@
当然为了研究这个问题,我发现对日志的概念很模糊,到底有多少日志,各自有什么样的功能不是很清楚,查阅后,整理如下:
Postgresql中有三种日志,pg_log,pg_xlog和pg_clog。分别记录一下,提醒自己。
OS:windows7
版本:postgresql9.5
一.路径
默认路径为C:\Program Files\Postgresql\9.5\data,可以自定义文件夹地址。
pg_log
该文件夹中的日志一般用来记录服务器与DB的状态,如各种Error信息,定位慢查询sql,数据库的启动关闭信息,发生checkpoint过于频繁等的告警信息等。linux自带的路径一般在/var/log/postgres下面。该日志有.csv格式和.log。这种日志是可以被清理删除不影响DB的正常运行。 @H_502_0@当我们有遇到DB无法启动或者更改参数没有生效时,第一个想到的就是查看这个日志。 @H_502_0@如果服务无法启动,该日志文件夹下的日志没有记录,建议查看操作系统的事件查看器的日志。有助于快速定位问题。第一次有意识去看事件查看器的日志还是翔哥传授,谢谢翔哥哈,虽然我@他他也看不见~~~~ @H_502_0@
pg_xlog |
当归档或者流复制发生异常的时候,事务日志会不断地生成,有可能会造成磁盘空间被塞满,最终导致DB挂掉或者起不来。遇到这种情况不用慌,可以先关闭归档或者流复制功能,备份pg_xlog日志到其他地方,但请不要删除。然后删除较早时间的的pg_xlog,有一定空间后再试着启动Postgres。
pg_clog
pg_clog这个文件也是事务日志文件,但与pg_xlog不同的是它记录的是事务的元数据(Metadata),这个日志告诉我们哪些事务完成了,哪些没有完成。这个日志文件一般非常小,但是重要性也是相当高,不得随意删除或者对其更改信息。
总结: pg_log记录各种Error信息,以及服务器与DB的状态信息,可由用户随意更新删除 pg_xlog与pg_clog记录数据库的事务信息,不得随意删除更新,做物理备份时要记得备份着两个日志。