FATAL: requested WAL *** segment has already been removed

本文涉及的产品
PolarClaw,2核4GB
简介:
今天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.主节点新建表,插入数据,查看备节点是否同步成功。
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
API Apache 数据库
Flink CDC 3.0 正式发布,详细解读新一代实时数据集成框架
Flink CDC 于 2023 年 12 月 7 日重磅推出了其全新的 3.0 版本 ~
110475 8
 Flink CDC 3.0 正式发布,详细解读新一代实时数据集成框架
|
JSON 前端开发 Java
Json格式数据解析
Json格式数据解析
672 1
|
Oracle 关系型数据库 Linux
PostgreSQL和Oracle中的一条错误消息分析
PostgreSQL服务端的日志里有时会残留一些这样的消息。意思是说客户端的socket意外终止了。 LOG: could not receive data from client: Connection reset by peer. 或中文的 LOG:无法从客户端获得数据: 出现这样的消息有2个可能的原因 1)客户端进程意外结束了 2)客户端进程没有关闭连接就退出了 其中第2点有时比较隐蔽。
3290 0
|
7月前
|
监控 Java 关系型数据库
HikariCP 高性能数据库连接池技术详解与实践指南
本文档全面介绍 HikariCP 高性能数据库连接池的核心概念、架构设计和实践应用。作为目前性能最优异的 Java 数据库连接池实现,HikariCP 以其轻量级、高性能和可靠性著称,已成为 Spring Boot 等主流框架的默认连接池选择。本文将深入探讨其连接管理机制、性能优化策略、监控配置以及与各种框架的集成方式,帮助开发者构建高性能的数据访问层。
506 1
|
Ubuntu Linux 网络安全
Linux服务器上安装软件
Linux服务器上安装软件
485 2
|
存储 自然语言处理 自动驾驶
基于LLM打造沉浸式3D世界
基于LLM打造沉浸式3D世界
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
863 2
|
SQL 关系型数据库 数据库
flink postgresql cdc实时同步(含pg安装配置等)
flink postgresql cdc实时同步(含pg安装配置等)
5558 2
|
安全 Ubuntu Linux
在Linux中,如何进行FTP服务器配置?
在Linux中,如何进行FTP服务器配置?
|
缓存 监控 Linux
在Linux中,如何进行数据库性能调优?
在Linux中,如何进行数据库性能调优?

热门文章

最新文章

下一篇
开通oss服务