PostgreSQL自带的命令行工具19- pg_checksums

devtools/2024/9/24 21:29:16/

PostgreSQL自带的命令行工具19- pg_checksums

基础信息
OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo)
DB版本:16.2
pg软件目录:/home/pg16/soft
pg数据目录:/home/pg16/data
端口:5777

pg_checksums 是 PostgreSQL 数据库中的一个工具,用于启用、禁用或校验数据页。数据页校验是 PostgreSQL 9.3 版本引入的一项功能,旨在提高数据完整性,通过对每个数据页计算校验,并在数据读取时验证这些校验,来检测硬件故障或磁盘I/O错误导致的数据损坏。

通过help查看帮助文档。

pg_checksums --help
pg_checksums enables, disables, or verifies data checksums in a PostgreSQL database cluster.Usage:pg_checksums [OPTION]... [DATADIR]Options:[-D, --pgdata=]DATADIR    data directory-c, --check              check data checksums (default)-d, --disable            disable data checksums-e, --enable             enable data checksums-f, --filenode=FILENODE  check only relation with specified filenode-N, --no-sync            do not wait for changes to be written safely to disk-P, --progress           show progress information-v, --verbose            output verbose messages-V, --version            output version information, then exit-?, --help               show this help, then exitIf no data directory (DATADIR) is specified, the environment variable PGDATA
is used.Report bugs to <pgsql-bugs@lists.postgresql.org>.
PostgreSQL home page: <https://www.postgresql.org/>

主要功能

  • 启用校验: 在初始化数据库集群时 (initdb 使用 -k--data-checksums 选项) 可以启用页面校验。如果你的数据库是在没有启用校验的情况下初始化的,你可以使用 pg_checksums 工具来启用它们,但这需要在数据库服务器关闭的情况下进行。
  • 禁用校验: 与启用校验相同,禁用校验也需要在数据库服务器关闭的情况下进行。
  • 校验数据库文件: pg_checksums 只能在数据库关闭时进行,用于校验所有数据文件的校验,来检测潜在的数据损坏。

使用 pg_checksums

1 停止数据库服务

在启用或禁用校验和时,确保首先停止 PostgreSQL 服务:

[pg16@test ~]$ pg_ctl stop
waiting for server to shut down....2024-05-10 06:13:43.605 PDT [88551] DEBUG:  logger shutting downdone
server stopped

2 启用校验

在 PostgreSQL 数据目录上运行 pg_checksums 来启用校验。我的库在初始化时已经加-K 参数,故提示已enabled。

[pg16@test 16413]$ pg_checksums --enable -D /home/pg16/data/
pg_checksums: error: data checksums are already enabled in cluster

3 禁用校验

pg_checksums --disable -D /home/pg16/data/

4 校验

[pg16@test 16413]$ pg_checksums -D /home/pg16/data/
Checksum operation completed
Files scanned:   1862
Blocks scanned:  26646
Bad checksums:  0
Data checksum version: 1

数据库运行时执行校验的话会报错。

[pg16@test ~]$ pg_checksums -D /home/pg16/data/
pg_checksums: error: cluster must be shut down

这将会报告任何发现的校验和错误,但不会修复它们。

5 重启数据库服务

在启用或禁用校验和后,需要重启 PostgreSQL 服务

[pg16@test ~]$ pg_ctl start
waiting for server to start....2024-05-10 06:36:32.829 PDT [90005] DEBUG:  registering background worker "logical replication launcher"
2024-05-10 06:36:32.829 PDT [90005] DEBUG:  loaded library "pg_stat_statements"
2024-05-10 06:36:32.829 PDT [90005] DEBUG:  mmap(153092096) with MAP_HUGETLB failed, huge pages disabled: Cannot allocate memory
2024-05-10 06:36:32.838 PDT [90005] LOG:  redirecting log output to logging collector process
2024-05-10 06:36:32.838 PDT [90005] HINT:  Future log output will appear in directory "log".done
server started

注意事项

  • 启用或禁用校验和需要在整个数据库集群上执行,并且在这个过程中数据库服务不能运行。
  • 校验和对性能有轻微的影响,但对于保证数据完整性非常有用。
  • 使用校验和可以增加在物理错误发生时发现错误的几率,但它不能替代定期的备份与灾难恢复计划。

pg_checksums 是维护数据完整性和检测数据损坏的有力工具。在考虑使用此工具之前,建议仔细阅读 PostgreSQL 的官方文档和指导,确保你了解启用校验和对你的系统可能产生的影响。

谨记:心存敬畏,行有所止。


http://www.ppmy.cn/devtools/39426.html

相关文章

国外在线教育系统源码,知识付费课程录制流程是什么样?

无论是从信息内容优化&#xff0c;还是知识产权保护的角度来看&#xff0c;“内容付费”都是一个有力的抓手&#xff0c;并且也一定是未来互联网发展的一个重要方向。与此同时&#xff0c;互联网技术的不断进步降低了“内容付费”的使用门槛&#xff0c;越来越多的人企图搭上这…

SQL的命令

创建用户 DDL数据库操作 查询 show databases; 创建 权限问题导致无法创建&#xff0c;连接root修改用户权限 CREATE DATABASE db01; CREATE DATABASE if not EXISTS db02; 使用 use db01; SELECT DATABASE(); 删除 DROP DATABASE db01; DROP DATABASE if EXISTS db01; 创…

Java框架精品项目【用于个人学习】

源码获取&#xff1a;私聊回复【项目关键字】获取 更多选题参考&#xff1a; Java练手项目 & 个人学习等选题参考 推荐菜鸟教程Java学习、Javatpoint学习 前言 大家好&#xff0c;我是二哈喇子&#xff0c;此博文整理了各种项目需求 此文下的项目用于博主自己学习&#x…

Python批量备份华为设备配置到FTP服务器

Excel表格存放交换机信息&#xff1a; 备份文件夹效果图&#xff1a; Windows系统配置计划任务定时执行python脚本&#xff1a; Program/script&#xff1a;C:\Python\python.exe Add arguments (optional)&#xff1a; D:\Python_PycharmProjects\JunLan_pythonProje…

固态硬盘数据丢失能恢复吗?固态硬盘数据恢复方法

当我们电脑的固态硬盘&#xff08;SSD&#xff09;出现故障或损坏时&#xff0c;我们最关心的往往是存储在其中的数据是否还能被恢复。毕竟&#xff0c;这些数据可能包含了重要的文件、照片、视频等&#xff0c;那么&#xff0c;固态硬盘坏了&#xff0c;数据真的无法挽回了吗&…

神经网络的偏见

神经网络的偏见 前言 神经网络是人工智能和深度学习的核心技术之一&#xff0c;当前的各种大模型和人工智能程序都使用了神经网络技术。 对人类来说&#xff0c;神经网络能根据人类输入的大量数据&#xff0c;实现人类训练模型的目的。但是&#xff0c;神经网络对人类来说是…

centos7.9升级4.19内核

centos默认的内核版本是3.10 通过命令 uname -a 输出系统的详细信息 在部署k8s集群时使用默认的3.10版本的内核&#xff0c;容易出各种奇奇怪怪的问题、可以理解为docker和k8s与该内核版本不兼容&#xff0c;所以在部署k8s集群时&#xff0c;务必要升级内核&#xff0c;这里…

vue3中如何更优雅的使用echarts?

echarts在vue或者react中使用存在的问题 每个图表需要从头到尾写地一遍完整的option配置&#xff0c;这样一来的话就会显得十分的冗余在同一个项目中&#xff0c;其实不难发现各类图表设计十分相似&#xff0c;甚至是相同&#xff0c;因此我们没必要一直做重复的工作&#xff…