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

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 exit

If 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 down
 done
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 的官方文档和指导,确保你了解启用校验和对你的系统可能产生的影响。

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

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PostgreSQL是一种开源的关系型数据库,它提供了多种管理工具来操作数据库,其中包括psql和pg_dump命令。 psql是一种命令工具,可以用来与PostgreSQL数据库进交互。它不仅能够执SQL语句,还可以支持交互式命令。在使用psql命令时,有时需要在命令中包含密码信息。可以使用以下的方式来在命令密码执SQL语句: 1. 在命令中输入psql命令,启动psql工具。 2. 输入连接数据库的命令,例如:psql -U username -d dbname -h hostname -p port。 3. 输入密码,此时必须在命令中输入密码。 4. 执SQL语句,例如:SELECT * FROM tablename; pg_dump是PostgreSQL数据库备份工具,可以用来将数据库中的数据导出到一个文件中。使用pg_dump命令时,也需要在命令中包含密码信息。可以使用以下的方式在命令密码执pg_dump命令: 1. 在命令中输入pg_dump命令,启动pg_dump工具。 2. 输入数据库连接信息和密码,例如:pg_dump -U username -d dbname -h hostname -p port -W。 3. 执备份操作,例如:pg_dump -U username -d dbname -h hostname -p port -W > backup.sql。 总的来说,在使用psql和pg_dump命令时,为了在命令中包含密码信息,需要使用“-W”参数将密码输入到命令中。当然,这种方式存在一定的安全隐患,因为密码可以被其他人看到。因此,最好使用其他方式来进密码管理,例如使用配置文件、环境变量或者其他安全的方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值