- 浏览: 244028 次
最新评论
今天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 18539一、PostgreSQL有3种日志: 1)pg_log(数据 ... -
pg存储过程--创建分区表
2016-01-13 15:46 01)将普通表改成按时间字段分区表 调用select fun_c ... -
pg常用自制shell脚本-tina
2016-01-13 15:30 49531)小型监控: 1.在pg库主机上部署,每5分钟执行一次,插入 ... -
postgresql 时间类型和相关函数
2016-01-13 10:41 5471今天来好好学习一下postgresql涉及时间的字段类型和一些 ... -
pg 表空间
2016-01-07 16:28 3128一、说明 在数据库运维工作中,经常会有数据目录使用率较高 ... -
pg 定期vacuum和reindex
2016-01-07 14:56 8619定期vacuum和reindex: 一 ... -
pg 序列
2016-01-06 16:58 1625一、简介 一个序列对象通常用于为行或者表生成唯一的标识符。 ... -
pg 简单备份和恢复
2016-01-06 15:53 3771pg的备份和恢复 pg_dump ... -
ERROR: invalid page header in block 27073 of relation base/21078/45300926
2016-01-06 15:12 2147突然断网,检查后通知我们UPS断电,db所在主机重启 1、连上 ... -
pg_cancel_backend()和pg_terminate_backend()
2016-01-05 17:42 3556pg_cancel_backend()和pg_terminat ... -
canceling statement due to conflict with recovery
2016-01-05 17:12 1693报错: canceling statement due to ... -
postgresql dblink 使用
2015-12-31 14:33 2047dblink的使用 pg的跨库查询工具 select dbli ... -
root用户不能使用psql或者pg_dump等pg命令
2015-12-24 14:40 7048root用户不能使用psql或者pg_dump等pg命令 [ ... -
postgresql新建库2个常见报错
2015-12-22 16:43 6290今天使用pg建库发现两个报错: ERROR: new c ... -
安装postgresql 9.1.1
2015-12-22 16:25 642安装postgresql 9.1.1 ---版本自选,步骤相同 ... -
pgbadger监控安装和使用
2015-12-21 10:01 2036pgbadger监控安装和使用 https://github ... -
oracle,postgresql,mysql一些使用上的区别记录
2015-12-16 11:38 01.限制行数: select * from ta where ... -
postgresql存储过程实例:已审核证书存入临时表
2015-12-14 16:44 656存储过程实例: 需求: 思路:建立存储过程 代码逻辑: 1 ... -
pg 函数sfa_tmp_sleep()执行越来越慢-sql分析
2015-12-11 09:48 680pg 函数sfa_tmp_sleep()执行越来越慢 ...
相关推荐
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....
1. **make.exe**:这是GNU Make的可执行文件,用于读取名为`Makefile`的配置文件,该文件定义了构建项目所需的规则和依赖关系。当开发者执行`make`命令时,make会自动检测哪些文件需要更新,然后调用相应的编译器或...
Fatal**:致命的 - **B. Hateful**:憎恨的 - **C. Good**:好的 - **D. Useful**:有用的 - **解析**:deadly to意为“对…致命的”,因此“Fatal”是最合适的选项。 **14. Accumulate** - **A. Control**:控制 ...
18年7月更新,清华镜像,完美解决 Yocto,Android fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle 错误,绕开GFW
1. **获取源代码**:你可以从OpenCV的官方GitHub仓库下载源码,或者通过Git克隆仓库。 2. **配置环境**:确保你的系统上已经安装了CMake构建工具,因为OpenCV的构建过程依赖于CMake。同时,你也需要安装对应的...
使用git Bash here闪退并生成mintty.exe.stackdump文件 cmd使用git 报错 fatal:open /dev/null or dup failed: No such file or directory 并弹出mitty.dump文件 使用方法见我的CSDN
Error 237: LedOn: function already has a body **问题描述:** 这个错误表明`LedOn()`函数在同一文件或项目中被重复定义了两次或多次。 **解决方案:** - 检查代码中是否存在重复定义`LedOn()`的情况,并移除...
杀毒后git报错 fatal: open /dev/null or dup failed: No Such file or directory解决方案
win10安装git报错 fatal:open /dev/null or dup failed: No such file or directory错误,将该文件复制到C:\Windows\System32\drivers 替换掉原有的null.sys文件重启即可
zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory #include ^ compilation terminated. make[1]: * [adlist.o] Error 1 make[1]: Leaving directory `/usr/local/redis-5.0.0/src'...
6. **环境变量问题**:有时候,环境变量如`CC`(用于指定C编译器)或`CFLAGS`(用于传递编译选项)未设置或设置不正确,也可能导致这类问题。确保它们设置得当。 7. **Makefile语法错误**:在Makefile的其他部分...
QMessageBox::critical(this, "Fatal Error", "System has fatal error!", QMessageBox::Help | QMessageBox::Save | QMessageBox::Close); ``` 6. **`QMessageBox::aboutQt`** - 特殊模式,用于展示Qt库的信息,...
在编程过程中,我们时常会遇到各种编译错误,其中一种比较棘手的错误是"collect2: fatal error: ld terminated with signal 11 [Segmentation fault], core dumped"。这个错误通常发生在尝试使用g++或gcc编译C++或C...
标题中的“JNA方式调用dll报错:A fatal error has been detected by the Java Runtime Environment:”是一个典型的Java编程问题,涉及到Java Native Access (JNA) 和动态链接库(dll)的交互。JNA是Java平台的一个...
git init xxxx的时候报错: fatal: git 1.7.2 or later required 或许是git版本太低,你可以自己编译最新git源码进行安装。
问题描述: 在使用git 进行提交时, 出现上面这个报错, 导致无法提交. 报错大致意思就是创建index.lock文件失败,因为已经存在index.lock文件了. index.lock文件是在.git下面, 而.git是一般是隐藏的, 那么可以通过以下...
- **理解日志级别:** 包括 DEBUG、INFO、WARNING、ERROR 和 FATAL 等不同级别。 - **日志文件定位:** 日志文件通常位于特定的目录下,可以通过 JLog.properties 文件来查看具体位置。 - **日志解析工具:** ...
**问题描述**: 当编译器尝试打开一个不存在的头文件时会抛出此错误。这通常发生在指定的路径下找不到所需的头文件。 **解决方法**: 1. **检查文件名**:确认头文件名称是否正确无误。 2. **检查文件路径**:确保...
fatal: open /dev/null or dup failed: No such file or directory 解决文件
* BIOS Fatal Error Codes(BIOS致命错误代码):x20xx * Special Exceptions(特殊异常):x10xx 3. 错误代码详解 每个错误代码都对应着特定的错误信息,例如: * E1A10 PDBPwrCable:高PDB电源电缆缺失或损坏,...