当前位置: 首页 > news >正文

PostgreSQL的startup进程

PostgreSQL的startup进程

在 PostgreSQL 集群中的备库(从库)上,startup 进程也是一个关键的后台进程,负责将主库(主库)发送的 WAL(Write-Ahead Logging)记录应用到数据库,确保备库与主库数据一致。备库上的 startup 进程的主要职责和行为与主库略有不同,关键在于它处理WAL日志和恢复状态。

备库上的 startup 进程的职责

  1. 复制和应用WAL日志:不断从主库或 WAL 归档位置获取和应用WAL日志,保持数据的一致性。
  2. 恢复数据一致性:在备库启动时检查并应用必要的WAL日志,确保数据文件的完整性与一致性。
  3. 读取恢复配置:从恢复配置文件读取并执行恢复命令,处理WAL日志恢复。
  4. 保持热备或异步备份状态:根据配置,备库可以处于热备份(Hot Standby)模式,允许查询操作但不允许写操作。

配置相关参数

postgresql.confrecovery.conf(对于 PostgreSQL 13 及更高版本,使用 standby.signalpostgresql.auto.conf)文件中,有多个关键配置参数用以设置备库上的恢复行为和WAL日志应用。

复制和恢复相关参数
  • restore_command:指定从归档位置恢复WAL文件的命令。
  • primary_conninfo:指定连接到主库的参数,用于流复制。
  • recovery_target 系列参数:指定时间点恢复(PITR)的目标,可设定时间、事务ID、或命名恢复点。

示例配置:

# postgresql.conf 中的配置
hot_standby = on# recovery.conf 配置(适用于 PostgreSQL 13 之前的版本)
restore_command = 'cp /var/lib/postgresql/wal_archive/%f %p'
primary_conninfo = 'host=primary_host port=5432 user=replicator password=mysecretpassword'

对于 PostgreSQL 13 及更高版本:

# 创建 standby.signal 文件
touch /path/to/replica/data/standby.signal# 在 postgresql.auto.conf 中添加配置
echo "primary_conninfo = 'host=primary_host port=5432 user=replicator password=mysecretpassword'" >> /path/to/replica/data/postgresql.auto.conf
echo "restore_command = 'cp /var/lib/postgresql/wal_archive/%f %p'" >> /path/to/replica/data/postgresql.auto.conf

查看备库上的 startup 进程

通过操作系统的进程查看工具(如 pstop),可以查看PostgreSQL备库上的 startup 进程。

ps aux | grep postgres

示例输出:

[pg12@test2 archivelog]$ ps aux | grep postgres
pg12      92944  0.0  0.3 274796 13692 ?        Ss   02:48   0:00 /home/pg12/soft/bin/postgres
pg12      92945  0.0  0.0 274952  2864 ?        Ss   02:48   0:00 postgres: startup   recovering 000000050000000000000034
pg12      92946  0.0  0.0 274896  3128 ?        Ss   02:48   0:00 postgres: checkpointer   
pg12      92947  0.0  0.0 274796  1904 ?        Ss   02:48   0:00 postgres: background writer  
pg12      92948  0.0  0.0 129340   968 ?        Ss   02:48   0:00 postgres: stats collector   
pg12      92951  0.0  0.1 275852  5696 ?        Ss   02:48   0:02 postgres: repmgr postgres 192.168.10.101(37248) idle
pg12      94983  0.0  0.0 279532  2380 ?        Ss   03:17   0:01 postgres: walreceiver   streaming 0/340A8268
pg12      96528  0.0  0.0 112812   968 pts/0    S+   03:39   0:00 grep --color=auto postgres
...

在上面的输出中,startup 进程正在应用从主库接收或从归档位置恢复的WAL日志。

总结

startup 进程在PostgreSQL备库上起着至关重要的作用,负责复制和应用WAL日志,确保数据的一致性与实时性。通过适当配置和监控,startup 进程可以帮助实现高效的主从复制和数据恢复。在实际运维环境中,理解和管理这些进程对于维护数据库的高可用性和数据一致性至关重要。


http://www.mrgr.cn/news/28517.html

相关文章:

  • 【MyBatis操作数据库】XML配置
  • from sklearn.preprocessing import Imputer.处理缺失数据的工具
  • Word VBA如何间隔选中多个(非连续)段落
  • yolo标签自动标注(使用python和yolo方法)
  • 使用 Keras 训练一个循环神经网络(RNN)
  • [CKS] K8S NetworkPolicy Set Up
  • python list的小细节
  • 【Python】高效图像处理库:pyvips
  • PHP 中传值与传引用的区别
  • Vite打包zip并改名为md5sum哈希案例
  • 用Docker 安装Nacos
  • 30款免费好用的工具,打工人必备!
  • MySQL_数据类型简介
  • 杂谈之20xx还能XXXX吗?
  • Protobuf.js 深入全面讲解教程
  • Docker部署ddns-go教程(包含完整的配置过程)
  • 深度学习自编码器 - 随机编码器和解码器篇
  • 上海餐饮数据分析与可视化
  • FastGPT一站式解决方案[2-应用篇]:轻松实现RAG-智能问答系统,AI工作流、核心模块讲解
  • Java 每日一刊(第9期):数组
  • 淘客返利系统的异步任务处理与调度
  • 【C++】基础知识 笔记
  • WPF入门教学四 WPF控件概述
  • C语言-结构体-详解
  • Linux操作系统文件权限管理
  • 【C++前后缀分解 动态规划】2100. 适合野炊的日子|1702