- 浏览: 238922 次
最新评论
今天pg主库出了一点问题,备库不同步,后台报错
FATAL: requested WAL segment 000000030000000000000047 has already been removed
某一个wal日志被移走
第一次出现这种情况的时候,主库没开归档,所以只好重新搭建备库
这次,主库开了归档,所以直接到归档目录去找这个文件即可
主节点查看pg_current_xlog_location();wal写入正常。
备节点查看select pg_last_xlog_receive_location();值没有变化,已经不从主节点同步。
归档的参数设置:
主库配置 postgresql.conf
archive_mode = on
archive_command = 'cp %p /pg/data/backup/archived_log/%f'
备库配置 recover.config
restore_command='cp /pg/data/backup/archived_log/%f %p'
1)如果有归档,可以用主节点的归档来恢复备节点。
cd /pg/data/backup/archived_log
ll 000000030000000000000047 找到了这个日志
2014-09-05 06:15:41.592 UTC,,,25007,,5409550d.61af,2,,2014-09-05 06:15:41 UTC,,0,FATAL,XX000,"could not receive data
from WAL stream: FATAL: requested WAL segment 000000030000000000000047 has already been removed
将主库归档目录下的日志传到备库的日志目录下面
[root@localhost archived_log]# scp 000000030000000000000048 root@192.168.10.175:/pg/data/pg_xlog/
root@192.168.10.175's password:
000000030000000000000048 100% 16MB 5.3MB/s 00:03
2)如果没归档
没办法只能重建备节点
第1种方法:
重新搭建
因为很多内容都是之前配置好的,因此要做的只有几步:
1、停下现有的备库
pg_ctl -D /pg/data stop
2、开启主库的备份状态
postgres=# select pg_start_backup('/tmp/backup');
pg_start_backup
-----------------
0/64000020
--窗口不要退出
3、把主数据库目录拷贝到备库目录就可以了:
tar -zcvf data.tar.gz data
sudo scp data.tar.gz root@192.168.10.175:/pg
rm -fr data --删除原来的data目录
tar -zxvf data.tar.gz
--删掉从主库拷贝过来的postmaster.pid
4、修改recovery.conf
/pg/share/postgresql
[postgres@localhost postgresql]$ cp recovery.conf.sample /pg/data
[postgres@localhost postgresql]$ mv /pg/data/recovery.conf.sample /pg/data/recovery.conf --去找一个模板过来修改
vi /pg/data/recovery.conf
standby_mode = on
primary_conninfo = 'host=192.168.10.173 port=5432 user=postgres password=tina' # e.g. 'host=localhost port=5432'
trigger_file = '/tmp/pg.trigger.456' --主备切换的时候有用
restore_command='cp /pg/data/backup/archived_log/%f %p'
5、停下主库备份
postgres=# select pg_stop_backup();
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
pg_stop_backup
----------------
0/640001F8
6、启动备库
pg_ctl -D /pg/data start
搞定,主备同步
---------
注意:
wal_level=hot_standby
wal_keep_segments=1024
max_wal_sender=1 ---限制备库个数为1
而自己定义的/pg/pg_log1是记录数据库的所有操作和报错
logging_collector = on
log_directory = '/pg/pg_log1'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_rotation_age = 1d
log_rotation_size = 10MB
postgresql-2014-09-05_061148.log --类似这种格式
第2中,使用pg_basebackup在线搭建从库
1.关闭数据库pg_ctl stop -D $PGDATA
2.备份了postgresql.conf pg_hba.conf,recovery.conf三个文件,然后清理$PGDATA下面的所有数据, ~/.pgpass保持原来的不需要修改
3.清理相关表空间目录
4.通过pg_basebackup从主库复制数据
pg_basebackup -D /data01/pgdata/browser/pg_root -Fp -Xs -v -P -h 192.168.xxx.xxx -p 1921 -U replica,大概花了1个多小时 完成数据复制。
5.复制完成后,将备份的postgresql.conf pg_hba.conf,recovery.conf三个文件复制到$PGDATA下
6.启动备库pg_ctl start -D $PGDATA
3)备库重建后检查:
1.检查日志,以及相关wal进程。ps -elf | grep wal | grep -v grep
2.检查备节点select pg_last_xlog_receive_location();,已经可以变化说明在从主节点复制同步
3.主节点新建表,插入数据,查看备节点是否同步成功。
FATAL: requested WAL segment 000000030000000000000047 has already been removed
某一个wal日志被移走
第一次出现这种情况的时候,主库没开归档,所以只好重新搭建备库
这次,主库开了归档,所以直接到归档目录去找这个文件即可
主节点查看pg_current_xlog_location();wal写入正常。
备节点查看select pg_last_xlog_receive_location();值没有变化,已经不从主节点同步。
归档的参数设置:
主库配置 postgresql.conf
archive_mode = on
archive_command = 'cp %p /pg/data/backup/archived_log/%f'
备库配置 recover.config
restore_command='cp /pg/data/backup/archived_log/%f %p'
1)如果有归档,可以用主节点的归档来恢复备节点。
cd /pg/data/backup/archived_log
ll 000000030000000000000047 找到了这个日志
2014-09-05 06:15:41.592 UTC,,,25007,,5409550d.61af,2,,2014-09-05 06:15:41 UTC,,0,FATAL,XX000,"could not receive data
from WAL stream: FATAL: requested WAL segment 000000030000000000000047 has already been removed
将主库归档目录下的日志传到备库的日志目录下面
[root@localhost archived_log]# scp 000000030000000000000048 root@192.168.10.175:/pg/data/pg_xlog/
root@192.168.10.175's password:
000000030000000000000048 100% 16MB 5.3MB/s 00:03
2)如果没归档
没办法只能重建备节点
第1种方法:
重新搭建
因为很多内容都是之前配置好的,因此要做的只有几步:
1、停下现有的备库
pg_ctl -D /pg/data stop
2、开启主库的备份状态
postgres=# select pg_start_backup('/tmp/backup');
pg_start_backup
-----------------
0/64000020
--窗口不要退出
3、把主数据库目录拷贝到备库目录就可以了:
tar -zcvf data.tar.gz data
sudo scp data.tar.gz root@192.168.10.175:/pg
rm -fr data --删除原来的data目录
tar -zxvf data.tar.gz
--删掉从主库拷贝过来的postmaster.pid
4、修改recovery.conf
/pg/share/postgresql
[postgres@localhost postgresql]$ cp recovery.conf.sample /pg/data
[postgres@localhost postgresql]$ mv /pg/data/recovery.conf.sample /pg/data/recovery.conf --去找一个模板过来修改
vi /pg/data/recovery.conf
standby_mode = on
primary_conninfo = 'host=192.168.10.173 port=5432 user=postgres password=tina' # e.g. 'host=localhost port=5432'
trigger_file = '/tmp/pg.trigger.456' --主备切换的时候有用
restore_command='cp /pg/data/backup/archived_log/%f %p'
5、停下主库备份
postgres=# select pg_stop_backup();
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
pg_stop_backup
----------------
0/640001F8
6、启动备库
pg_ctl -D /pg/data start
搞定,主备同步
---------
注意:
wal_level=hot_standby
wal_keep_segments=1024
max_wal_sender=1 ---限制备库个数为1
而自己定义的/pg/pg_log1是记录数据库的所有操作和报错
logging_collector = on
log_directory = '/pg/pg_log1'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_rotation_age = 1d
log_rotation_size = 10MB
postgresql-2014-09-05_061148.log --类似这种格式
第2中,使用pg_basebackup在线搭建从库
1.关闭数据库pg_ctl stop -D $PGDATA
2.备份了postgresql.conf pg_hba.conf,recovery.conf三个文件,然后清理$PGDATA下面的所有数据, ~/.pgpass保持原来的不需要修改
3.清理相关表空间目录
4.通过pg_basebackup从主库复制数据
pg_basebackup -D /data01/pgdata/browser/pg_root -Fp -Xs -v -P -h 192.168.xxx.xxx -p 1921 -U replica,大概花了1个多小时 完成数据复制。
5.复制完成后,将备份的postgresql.conf pg_hba.conf,recovery.conf三个文件复制到$PGDATA下
6.启动备库pg_ctl start -D $PGDATA
3)备库重建后检查:
1.检查日志,以及相关wal进程。ps -elf | grep wal | grep -v grep
2.检查备节点select pg_last_xlog_receive_location();,已经可以变化说明在从主节点复制同步
3.主节点新建表,插入数据,查看备节点是否同步成功。
发表评论
-
pg 锁
2016-01-14 16:26 0pg 锁 ... -
postgresql 的三类日志
2016-01-14 15:59 18399一、PostgreSQL有3种日志: 1)pg_log(数据 ... -
pg存储过程--创建分区表
2016-01-13 15:46 01)将普通表改成按时间字段分区表 调用select fun_c ... -
pg常用自制shell脚本-tina
2016-01-13 15:30 48401)小型监控: 1.在pg库主机上部署,每5分钟执行一次,插入 ... -
postgresql 时间类型和相关函数
2016-01-13 10:41 5327今天来好好学习一下postgresql涉及时间的字段类型和一些 ... -
pg 表空间
2016-01-07 16:28 3083一、说明 在数据库运维工作中,经常会有数据目录使用率较高 ... -
pg 定期vacuum和reindex
2016-01-07 14:56 8561定期vacuum和reindex: 一 ... -
pg 序列
2016-01-06 16:58 1575一、简介 一个序列对象通常用于为行或者表生成唯一的标识符。 ... -
pg 简单备份和恢复
2016-01-06 15:53 3721pg的备份和恢复 pg_dump ... -
ERROR: invalid page header in block 27073 of relation base/21078/45300926
2016-01-06 15:12 2111突然断网,检查后通知我们UPS断电,db所在主机重启 1、连上 ... -
pg_cancel_backend()和pg_terminate_backend()
2016-01-05 17:42 3514pg_cancel_backend()和pg_terminat ... -
canceling statement due to conflict with recovery
2016-01-05 17:12 1618报错: canceling statement due to ... -
postgresql dblink 使用
2015-12-31 14:33 2005dblink的使用 pg的跨库查询工具 select dbli ... -
root用户不能使用psql或者pg_dump等pg命令
2015-12-24 14:40 6951root用户不能使用psql或者pg_dump等pg命令 [ ... -
postgresql新建库2个常见报错
2015-12-22 16:43 6151今天使用pg建库发现两个报错: ERROR: new c ... -
安装postgresql 9.1.1
2015-12-22 16:25 609安装postgresql 9.1.1 ---版本自选,步骤相同 ... -
pgbadger监控安装和使用
2015-12-21 10:01 1995pgbadger监控安装和使用 https://github ... -
oracle,postgresql,mysql一些使用上的区别记录
2015-12-16 11:38 01.限制行数: select * from ta where ... -
postgresql存储过程实例:已审核证书存入临时表
2015-12-14 16:44 620存储过程实例: 需求: 思路:建立存储过程 代码逻辑: 1 ... -
pg 函数sfa_tmp_sleep()执行越来越慢-sql分析
2015-12-11 09:48 642pg 函数sfa_tmp_sleep()执行越来越慢 ...
相关推荐
make.exe c msys mingw 网上找了很多都不能用,后来找到了这个,希望对你有帮助
fatal:remote error: You can't push to git://github.com/username/*.git Use git@github.com:username/*.git 看来我是没有权限push啊。 解决方法: git remote rm origin git remote add origin git@github....
18年7月更新,清华镜像,完美解决 Yocto,Android fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle 错误,绕开GFW
win10安装git报错 fatal:open /dev/null or dup failed: No such file or directory错误,将该文件复制到C:\Windows\System32\drivers 替换掉原有的null.sys文件重启即可
使用git Bash here闪退并生成mintty.exe.stackdump文件 cmd使用git 报错 fatal:open /dev/null or dup failed: No such file or directory 并弹出mitty.dump文件 使用方法见我的CSDN
问题描述: 在使用git 进行提交时, 出现上面这个报错, 导致无法提交. 报错大致意思就是创建index.lock文件失败,因为已经存在index.lock文件了. index.lock文件是在.git下面, 而.git是一般是隐藏的, 那么可以通过以下...
git init xxxx的时候报错: fatal: git 1.7.2 or later required 或许是git版本太低,你可以自己编译最新git源码进行安装。
fatal: open /dev/null or dup failed: No such file or directory 解决文件
src/caffe/util/io.cpp:17:10: fatal error: turbojpeg.h: 没有那个文件或目录 #include ^~~~~~~~~~~~~ compilation terminated. Makefile:610: recipe for target '.build_release/src/caffe/util/io.o' failed ...
Fatal: the Postfix mail system is already running 的解决方案 【问题情境】 当启动postfix服务时出现如下错误提示: # service postfix start Starting Postfix Mail Transport Agent: postfixpostfix/postfix-...
collect2: fatal error: ld terminated with signal 11 [Segmentation fault], core dumped g++/gcc都不能编译了,一直抱ld的问题。网上找了很多方法都不行,弄了好久终于搞定了
error: RPC failed; result=18, HTTP code = 200 fatal: The remote end hung up unexpectedly fatal: 过早的文件结束符(EOF) ...Try running the command below in the remote repository if error is fatal: inde
国产芯旺微单片机控制芯片开发软件安装包 ChipON IDE 为上海芯旺微电子技术有限公司出品的一款针对 KungFu 芯片开 发使用的集成开发环境。 ChipON IDE 主要支持以下功能: 支持汇编项目 支持 C 语言项目 ...
Fatal error: Class ‘COM’ not found in XXXXXXXXX 没发现 COM 类,php代码主要是调用一些系统的信息,初想应该是php没配置好,在stackoverflow找到答案,是讨论xampp的,要延伸开来,我加了几个要点: ★ php 根...
使用IAR开发ADI的ADUC70XX系列单片机时,编译出现下面错误提示: Fatal Error[e72]: Segment FIQ_STACK must b
很多朋友在用keil仿真时,有时编译不成功,出现错误提示:*** FATAL ERROR L210: I/O ERROR ON INPUT FILE: EXCEPTION 0021H: PATH OR FILE NOT FOUND FILE: E:\KEIL\C51\LIB\C51FPS.LIB ,这是由于虽然math.h这个...
NULL 博文链接:https://dingherry.iteye.com/blog/1545972
fatal error: boostdesc_bgm.i: No such file or directory补充文件