postgresql自带指令命令系列三

目录

简介

bin目录

28.pg_verifybackup

29.pg_waldump

30.postgres

31.postmaster -> postgres

32.psql

33.reindexdb

34.vacuumdb

35.vacuumlo 

总结:


简介

        在安装postgresql数据库的时候会需要设置一个关于postgresql数据库的PATH变量
export PATH=/home/postgres/pg/bin:$PATH,该变量会指向postgresql安装路径下的bin目录。这个安装目录和我们在进行编译的时候./configure --prefix= [指定安装目录]    中的prefix参数设置相关。--bindir=DIR  参数可以指定bin目录的具体存放路径。postgresql对应的PATH变量没有设置正确,会导致执行文件对应的命令无法使用

        本文使用postgresql-15.2版本进行讲解

bin目录


        进入到对应的bin目录中去,可以看到有以下的执行文件,本博主将进行一一讲解

clusterdb
createdb
createuser
dropdb
dropuser
ecpg
initdb
oid2name
pg_amcheck
pg_archivecleanup
pg_basebackup
pgbench
pg_checksums
pg_config
pg_controldata
pg_ctl
pg_dump
pg_dumpall
pg_isready
pg_receivewal
pg_recvlogical
pg_resetwal
pg_restore
pg_rewind
pg_test_fsync
pg_test_timing
pg_upgrade
pg_verifybackup
pg_waldump
postgres
postmaster -> postgres
psql
reindexdb
vacuumdb
vacuumlo

 接上文

28.pg_verifybackup

         pg_verifybackup — 验证PostgreSQL集群的基础备份的完整性,当我们做完备份之后,可以只用该工具对备份进行验证

[postgres@vm03 ~]$ pg_basebackup -Fp -P -v -D backup/
pg_basebackup: initiating base backup, waiting for checkpoint to complete
pg_basebackup: checkpoint completed
pg_basebackup: write-ahead log start point: 0/18000060 on timeline 1
pg_basebackup: starting background WAL receiver
pg_basebackup: created temporary replication slot "pg_basebackup_2554"
41785/41785 kB (100%), 1/1 tablespace                                         
pg_basebackup: write-ahead log end point: 0/18000138
pg_basebackup: waiting for background process to finish streaming ...
pg_basebackup: syncing data to disk ...
pg_basebackup: renaming backup_manifest.tmp to backup_manifest
pg_basebackup: base backup completed
[postgres@vm03 ~]$ 
[postgres@vm03 ~]$ pg_verifybackup    backup/
backup successfully verified

在实际完成数据库备份的时候,会生成backup_label,backup_manifest信息文件, pg_verifybackup会先读取backup_manifest文件的信息,然后验证备份文件目录的完整性,再接着基于读取backup_manifest文件的信息对备份文件下所有信息文件的效验。

[postgres@vm03 ~]$ cd backup/
[postgres@vm03 backup]$ ll
total 204
-rw------- 1 postgres postgres    227 Dec  9 18:34 backup_label
-rw------- 1 postgres postgres 141510 Dec  9 18:34 backup_manifest
drwx------ 5 postgres postgres     33 Dec  9 18:34 base
-rw------- 1 postgres postgres     44 Dec  9 18:34 current_logfiles
drwx------ 2 postgres postgres   4096 Dec  9 18:34 global
drwx------ 2 postgres postgres    246 Dec  9 18:34 log
drwx------ 2 postgres postgres      6 Dec  9 18:34 pg_commit_ts
drwx------ 2 postgres postgres      6 Dec  9 18:34 pg_dynshmem
-rw------- 1 postgres postgres   4774 Dec  9 18:34 pg_hba.conf
-rw------- 1 postgres postgres   1636 Dec  9 18:34 pg_ident.conf
drwx------ 4 postgres postgres     68 Dec  9 18:34 pg_logical
drwx------ 4 postgres postgres     36 Dec  9 18:34 pg_multixact
drwx------ 2 postgres postgres      6 Dec  9 18:34 pg_notify
drwx------ 2 postgres postgres      6 Dec  9 18:34 pg_replslot
drwx------ 2 postgres postgres      6 Dec  9 18:34 pg_serial
drwx------ 2 postgres postgres      6 Dec  9 18:34 pg_snapshots
drwx------ 2 postgres postgres      6 Dec  9 18:34 pg_stat
drwx------ 2 postgres postgres      6 Dec  9 18:34 pg_stat_tmp
drwx------ 2 postgres postgres      6 Dec  9 18:34 pg_subtrans
drwx------ 2 postgres postgres      6 Dec  9 18:34 pg_tblspc
drwx------ 2 postgres postgres      6 Dec  9 18:34 pg_twophase
-rw------- 1 postgres postgres      3 Dec  9 18:34 PG_VERSION
drwx------ 3 postgres postgres     60 Dec  9 18:34 pg_wal
drwx------ 2 postgres postgres     18 Dec  9 18:34 pg_xact
-rw------- 1 postgres postgres     88 Dec  9 18:34 postgresql.auto.conf
-rw------- 1 postgres postgres  29516 Dec  9 18:34 postgresql.conf
[postgres@vm03 backup]$ cat backup_label 
START WAL LOCATION: 0/18000060 (file 000000010000000000000018)
CHECKPOINT LOCATION: 0/18000098
BACKUP METHOD: streamed
BACKUP FROM: primary
START TIME: 2023-12-09 18:34:47 CST
LABEL: pg_basebackup base backup
START TIMELINE: 1


29.pg_waldump

        pg_waldump 是一个查看PostgreSQL 预写式日志的工具,常常用与PITR去读取对应时间点的LSN以进行PITR恢复        

[postgres@vm03 backup]$ cd pg_wal/
[postgres@vm03 pg_wal]$ ll
total 16384
-rw------- 1 postgres postgres 16777216 Dec  9 18:34 000000010000000000000018
drwx------ 2 postgres postgres        6 Dec  9 18:34 archive_status
[postgres@vm03 pg_wal]$ pg_waldump 000000010000000000000018 
rmgr: Standby     len (rec/tot):     50/    50, tx:          0, lsn: 0/18000028, prev 0/170001C0, desc: RUNNING_XACTS nextXid 91773 latestCompletedXid 91772 oldestRunningXid 91773
rmgr: Standby     len (rec/tot):     50/    50, tx:          0, lsn: 0/18000060, prev 0/18000028, desc: RUNNING_XACTS nextXid 91773 latestCompletedXid 91772 oldestRunningXid 91773
rmgr: XLOG        len (rec/tot):    114/   114, tx:          0, lsn: 0/18000098, prev 0/18000060, desc: CHECKPOINT_ONLINE redo 0/18000060; tli 1; prev tli 1; fpw true; xid 0:91773; oid 24610; multi 1; offset 0; oldest xid 716 in DB 1; oldest multi 1 in DB 1; oldest/newest commit timestamp xid: 0/0; oldest running xid 91773; online
rmgr: XLOG        len (rec/tot):     34/    34, tx:          0, lsn: 0/18000110, prev 0/18000098, desc: BACKUP_END 0/18000060
rmgr: XLOG        len (rec/tot):     24/    24, tx:          0, lsn: 0/18000138, prev 0/18000110, desc: SWITCH 


30.postgres

         这是一个非常重要的指令,常常再因为数据库运行故障时,会使用单用户模式进入数据库中进行排查。

[postgres@vm03 ~]$ postgres --single

PostgreSQL stand-alone backend 15.3
backend> 

 使用CTRL+D退出单用户模式

        该指令也可以启动数据库,实现后台运行

nohup postgres > nohup.out 2>&1 &
postgres   2893   2361  1 19:05 pts/0    00:00:00 postgres
postgres   2894   2893  0 19:05 ?        00:00:00 postgres: logger
postgres   2895   2893  0 19:05 ?        00:00:00 postgres: checkpointer
postgres   2896   2893  0 19:05 ?        00:00:00 postgres: background writer
postgres   2898   2893  0 19:05 ?        00:00:00 postgres: walwriter
postgres   2899   2893  0 19:05 ?        00:00:00 postgres: autovacuum launcher
postgres   2901   2893  0 19:05 ?        00:00:00 postgres: logical replication launcher
postgres   2905   2788  0 19:05 pts/3    00:00:00 ps -ef
postgres   2906   2788  0 19:05 pts/3    00:00:00 grep --color=auto postgres

        无论你使用pg_ctl start 还是postgres 启动数据库,都会拉起一个postgres进程。在使用pg_ctl start启动数据库的时候,其实也就是去调用postgres进行启动数据库。


31.postmaster -> postgres

         postmasterpostgres的一个废弃的别名,一直使用软连接挂载到postgres上。


32.psql

        这是一个进入postgresql数据库,在学习postgresql数据库非常常见的一个指令工具。


33.reindexdb

        这是一个重建数据库或者数据库表的指令工具。数据库在使用的时候常常由于位置情况导致,表的索引损坏的情况,此时可以使用该指令,对表的索引进行重建。

        创建测试数据。

CREATE TABLE test_table (
    id SERIAL PRIMARY KEY,
    name VARCHAR(200)
);

CREATE INDEX idx_test_table_name ON test_table(name);

INSERT INTO test_table (id ,name ) select id , md5(id::text)  from generate_series(2,80000) as id ;

查看索引所在地址, 

postgres=# select pg_relation_filepath('idx_test_table_name');
 pg_relation_filepath 
----------------------
 base/5/25105
(1 row)

删掉索引文件 

 rm -rf  $PGDATA/base/5/25105

 此时查询该表便会报错,提示索引文件缺失


postgres=# select  *  from test_table;
ERROR:  could not open file "base/5/25105": No such file or directory

使用 reindexdb对其进行修复

[postgres@vm03 ~]$ reindexdb -t test_table -i idx_test_table_name
[postgres@vm03 ~]$ 

此时再次查看文件变可以查看了

 


34.vacuumdb

        清理数据库中的死元组,并回收存储空间的工具,往往数据库正常启动状态下,会有autovacuum launcher 进程,会自动清理数据库的死元组信息,并更新统计信息,优化器会根据新的统计信息对数据的相关优化判断重新定义。

        vacuumdb简单理解,也就时vacuum的SQL命令的一个封装工具

[postgres@vm03 ~]$ vacuumdb -z 
vacuumdb: vacuuming database "postgre


35.vacuumlo 

        vacuumlo 是一个 "会" 从 PostgreSQL 数据库移除所有孤立的大对象的简单程序。

总结:

        本博主,根据在实际工作使用的频率,以及对于数据库故障处理,日常维护的重要性进行评星(满星五颗星)。

重要性指令作用
*****clusterdb重组或重新排序数据库表,以优化性能。
**createdb创建新的数据库。
****createuser创建新的数据库用户。
**dropdb 删除数据库。
****dropuser删除数据库用户。
**ecpg处理嵌入式 SQL。
**initdb初始化新的 PostgreSQL 数据库实例。
*****oid2name转换 OID(对象标识符)为名称。
***pg_amcheck检查 PostgreSQL 索引的一致性。
**pg_archivecleanup从归档目录中删除不再需要的 WAL 日志文件。
*****pg_basebackup创建 PostgreSQL 数据库的基础备份。
*****pgbench进行 PostgreSQL 数据库基准测试。
****pg_checksums校验和控制和修复数据文件。
****pg_config显示 PostgreSQL 的编译配置。
**pg_controldata显示 PostgreSQL 数据库控制信息。
****pg_ctl启动、停止、或重新加载 PostgreSQL 服务器。
*****pg_dump备份 PostgreSQL 数据库
*****pg_dumpall备份所有 PostgreSQL 数据库和角色
*pg_isready检查 PostgreSQL 服务器是否准备好接收连接。
**pg_receivewal接收 WAL 日志流并将其写入文件。
*pg_recvlogical接收逻辑复制流。
*****pg_resetwal重置 PostgreSQL 数据库的日志文件。
*****pg_restore恢复 PostgreSQL 数据库备份。
****pg_rewind数据库增量、全量备份工具,可用与PITR相关技术点
***pg_test_fsync测试文件同步方法的性能。
***pg_test_timing测试 PostgreSQL 服务器的计时器。
****pg_upgrade升级 PostgreSQL 数据库到新版本。
**pg_verifybackup验证 PostgreSQL 数据库备份的一致性。
****pg_waldump显示 PostgreSQL WAL 文件的内容。
***postgres PostgreSQL 服务器进程。
*postmaster PostgreSQL 主进程。
****psql PostgreSQL 的交互式终端。
*****reindexdb重新建立 PostgreSQL 数据库中的索引。
*****vacuumdb释放未使用的存储空间并优化数据库。
*vacuumlo释放未使用的大对象存储空间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/239319.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1845_emacs中一个中文乱码问题分析解决

Grey 全部学习内容汇总:GitHub - GreyZhang/editors_skills: Summary for some common editor skills I used. 1845_emacs中一个中文乱码问题分析解决 曾经有一次放弃过我自己的emacs配置,一个原因就是中文的支持。感觉我的配置跟其他人的配置显得有些…

优雅玩转实验室服务器(一)登录服务器

这篇文章更加偏向于使用python程序进行研究的朋友们 原料 Windows主机实验室Linux服务器(可以访问互联网)一点点耐心 step.0 windows terminal is all you need 别跟我说什么putty,什么winscp,我就是单推Win11自带的软件——win…

deepface:实现人脸的识别和分析

deepface介绍 deepface能够实现的功能 人脸检测:deepface 可以在图像中检测出人脸的位置,为后续的人脸识别任务提供基础。 人脸对齐:为了提高识别准确性,deepface 会将检测到的人脸进行对齐操作,消除姿态、光照和表…

Python 进阶(十六):二进制和ASCII码的转换(binascii 模块)

大家好,我是水滴~~ 本文详细介绍了Python中的binascii模块及其使用方法。通过binascii模块,我们可以方便地进行二进制和ASCII字符串之间的转换操作。文章中包含大量的示例代码,希望能够帮助新手同学快速入门。 《Python入门核心技术》专栏总…

【unity】【WebRTC】从0开始创建一个Unity远程媒体流app-设置输入设备

【项目源码】 包括本篇需要的脚本都打包在项目源码中,可以通过下面链接下载: 【背景】 目前我们能投射到远端浏览器(或者任何其它Peer)的媒体流只有默认的MainCamera画面,其实我们还可以通过配置输入来传输操作输入信息,比如键鼠等。 【追加input processing组件】 …

在AWS Lambda中使用FFmpeg处理m3u8视频流

大纲 1 部署有FFmpeg功能的Lambda环境1.1 部署层1.2 部署代码1.2.1 FFmpeg指令1.2.2 代码 2 配置Lambda角色权限2.1 选择角色类型2.2 设置权限2.3 保存角色2.4 绑定角色 参考文献 在直播里领域,我们经常需要对视频流进行处理。FFmpeg则是该领域中处理的利器。这篇文…

Spring 面向切面编程(AOP)

一、aop介绍 (一)前言 一般的后端开发流程是纵向开发,就是controller(控制层)->service(业务层)->mapper(数据持久层),Spring采用动态代理技术可以在…

关于mars3d通过zIndex参数实现控制图层层级叠加效果说明

问题: 1.项目中使用了GraphicLayer、GeoJSONLayer、ArcGISLayer,期望mars3d能够提供方法进行设置每个图层的zindex顺序 解决方案: 1.首先在mars3d的开发教程中查询三个Layer属于的图层类型,GraphicLayer、GeoJSONLayer均属于矢…

鸿蒙系统最近删除文件夹的路径

鸿蒙手机上删除文件,会将文件移动到类似回收站的路径下,如何找到这个路径? 先找用文件管理器找到一个文件 比如aaa.jpg ,这时在调试的shell下面运行 find . -name aaaa.jpg 得到如下 这时再删除该文件 再次运行 find . -name a…

单片机——通信协议(FPGA+c语言应用之iic篇)

一.I2C的功能特点 (1)功能包括: 1.只需要两条总线; 2.没有严格的波特率要求,例如使用RS232,主设备生成总线时钟; 3.所有组件之间都存在简单的主/从关系,连接到总线的每个设备均可通…

【PTA刷题】 求子串(代码+详解)

【PTA刷题】 求子串(代码详解) 题目 请编写函数,求子串。 函数原型 char* StrMid(char *dst, const char *src, int idx, int len);说明:函数取源串 src 下标 idx 处开始的 len 个字符,保存到目的串 dst 中,函数值为 dst。若 len…

BERT大模型:英语NLP的里程碑

BERT的诞生与重要性 BERT(Bidirectional Encoder Representations from Transformers)大模型标志着自然语言处理(NLP)领域的一个重要转折点。作为首个利用掩蔽语言模型(MLM)在英语语言上进行预训练的模型&…

sylar高性能服务器-配置(P10-p11)代码解析+调试分析

文章目录 p9:配置模块搭建一、ConfigvarBase二、ConfigVar三、Config四、小结 p10:YAML的使用一、安装yaml-cpp二、使用yaml-cpp三、代码解析 P11:YAML与日志的整合一、方法函数二、代码调试三、test_config结果四、小结 p9:配置模…

josef 静态电压继电器 RWY-D1/3 额定电压:AC380V电压范围180~440V

系列型号 RWY-D1型电压继电器; RWY-D2型电压继电器; 一、 概述 RYW-D系列电压继电器(以下简称本继电器)用于发电机、变压器和输电线的电器保护装置中,作为过电压保护或低电压闭锁的启动原件。本继电器为集成电路静…

如何解决MAC卸载软件后图标还在的问题

今天卸载photoshop突然遇到一个问题,程序卸载完成后居然还有一大堆的图标删不掉,果断找法子,下面就是我应用到的方法,希望对你有所帮助,只能是photoshop太流氓啊。。。 方法一: 使用命令(Command) 空格键…

成绩统计(oj题)

一道考验细节的题 最后是&#xff1f;&#xff1a;运算符用错了 代码如下&#xff1a; #include<stdio.h> #include<string.h> typedef struct Grade{int num;int inv; }Grade; Grade tmp[10]; int n, m, g, interval[10] {0};int main(void) {scanf("%d%d…

【Spring进阶系列丨第五篇】详解Spring中的依赖注入

文章目录 一、说明二、构造函数注入2.1、方式一【index索引方式】2.1.1、定义Bean2.1.2、主配置文件中配置Bean2.1.3、测试 2.2、方式二【indextype组合方式】2.2.1、定义Bean2.2.2、主配置文件配置Bean2.2.3、测试2.2.4、解决方案 2.3、方式三【name方式】2.3.1、定义Bean2.3.…

微信一天能加多少好友?可以自动加好友吗?

微信一天能加多少好友&#xff1f; 01 微信加人规则 你的微信去添加好友时&#xff0c;会出现频繁提示吗&#xff1f;明明手上有一堆数据&#xff0c;但是总是被频繁这个问题所困恼。首先你要先知道微信加入的规则是怎么样的&#xff0c;你才能避免添加频繁&#xff0c;加到更…

【docker 】 安装docker(centOS7)

官网 docker官网 github源码 官网 在CentOS上安装Docker引擎 官网 在Debian上安装Docker引擎 官网 在 Fedora上安装Docker引擎 官网 在ubuntu上安装Docker引擎 官网 在RHEL (s390x)上安装Docker引擎 官网 在SLES上安装Docker引擎 最完善的资料都在官网。 卸载旧版本 …

环境变量提权

环境变量提权 借鉴文章LINUX提权之环境变量提权篇 - 知乎 (zhihu.com) 利用条件 存在一个文件&#xff0c;利用su权限执行&#xff0c;普通用户可以执行此文件&#xff0c;但只限制在一个目录下可以执行 利用方式 将此文件的目录添加到环境变量中 export PATH/tmp:$PATHe…