PostgreSQL的一次恢复记录
有一段时间没有做PostgreSQL的一线恢复了,一直都挺稳定,直到上周省公司产品部打电话,告知数据库不可用了。其实上上周已经协助省公司做过一次主备切换,因为疑似磁盘故障还是文件系统故障导致某几张大表不可读,但是上周又告知备机出故障了,就去现场做了一次支撑。仅记录一下,以备查看。 一、环境 二、现状与分析 --登陆报错 psql: FATAL: the database system is starting up 查看进程,也不完整,只有两个postgres进程,查看日志,里面有很多报错信息,如下: 2017-01-1913:25:29.430 CST,27618,59d111c8.1c5a,2,2017-01-1913:25:28 CST,FATAL,XX000,"could not receive data from WAL stream: FATAL: requested WAL segment 0000000600002B0000000000 has already been removed 分析: 三、处理 主机上打开归档 archive_mode = on --改变这个参数需要重启,建议初始化数据库就打开 archive_command = 'cp %p /archive/%f' --修改这个参数只需要reload --重载配置生效 [postgres@bigdata1~]pg_ctl -D $PGDATA reload 这个时候就可以看到/archive下面会生成很多新的wal日志了 --备机创建接收的归档文件夹 [postgres@bigdata2~]$mkdir /archive_stand --将主机上的archive文件拷贝到备机上来 [postgres@bigdata1~]scp /archive/* postgres@192.168.2.199:/archive_stand --修改postgresql.conf参数 restore_command = 'cp /archive_stand/%f %p' --重命名recovery.done为recovery.conf,修改里面的primary连接信息,主要是IP改为主机,此处略 --再重新启动,可以发现缺失的wal日志被apply了,恢复成功有success字样日志输出 2017-01-1915:36:08.592 CST,4108,81e20156.fa8,5,2017-01-1915:36:09CST,1/0,LOG,00000,"restored log file ""0000000600000002F00000021"" from archive","" 四、后续其他 1.关闭主备机上的archive存档,不然会撑爆磁盘 2.验证主备数据同步,可以通过建一张新表或者插一条测试数据在备机上是否同步来验证 3.数据库的版本有点低,存在一些BUG,pg_basebackup版本同样也低,不像高版本有限流的一些参数(max_rate),开启同步会消耗大量的IO,如有可能,最好做下升级 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |