您的位置:首页 > 房产 > 建筑 > 今日军事新闻头条新闻_中小型企业网络部署_软文什么意思_东莞企业网站推广

今日军事新闻头条新闻_中小型企业网络部署_软文什么意思_东莞企业网站推广

2025/10/16 2:17:41 来源:https://blog.csdn.net/DBA_ChenJR/article/details/146375410  浏览:    关键词:今日军事新闻头条新闻_中小型企业网络部署_软文什么意思_东莞企业网站推广
今日军事新闻头条新闻_中小型企业网络部署_软文什么意思_东莞企业网站推广

微信图片_20250308184631.jpg

pg_dump是逻辑备份,pg_dump工具会导出数据库中的所有对象(如表、视图、函数等)及其数据,并生成一个包含创建这些对象和插入数据的SQL脚本。这种备份方式基于备份开始时的事务快照,因此它反映的是备份开始时的数据状态,即pg_dump备份数据的一致性时间点是备份开始的时候

而pg_basebackup是物理备份,pg_basebackup 工具会复制整个数据目录,包括表空间、配置文件等,并且在备份过程中会记录和复制所有的WAL文件,以确保备份数据的一致性。这意味着 pg_basebackup 的备份数据不仅包括备份开始时的状态,还包括备份期间的所有更改,即pg_basebackup备份数据的一致性时间点是备份结束的时候。

pg_basebackup工作原理

  • 启动备份时,强制生成一个检查点(Checkpoint),确保数据文件处于一致状态,并开启 full_page_writes 参数以支持后续恢复‌。
  • 在数据目录中生成 backup_label 文件,记录备份的起始位置、时间线标识符(TLI)等元信息‌
  • 通过 PostgreSQL 的流复制协议(Streaming Replication Protocol)与主库建立连接,后台进程 wal sender 负责将数据文件和 WAL文件直接传输到备份客户端‌。
  • 如果在备份过程中有新的 WAL 文件生成,它们也会被复制到目标目录中。
  • 一旦所有必要的数据和 WAL 文件都被复制,备份过程完成。目标目录将包含一个完整的、一致性的数据库快照。

注意点:

(1)依赖主库开启 full_page_writes 参数,保证即使发生部分页写入损坏,也能通过 WAL 日志恢复完整数据页‌。

(2)通过 -X stream 参数启动独立连接实时接收 WAL 日志,确保备份期间产生的 WAL 不丢失,从而支持时间点恢复(PITR)‌。

(3)执行备份的用户需具有 REPLICATION 权限或超级用户权限,且需在 pg_hba.conf 中允许复制连接‌。

(4)主库需配置足够的 max_wal_senders 以支持备份和 WAL 传输进程‌。

(5)pg_basebackup 支持从备库执行备份,但需确保备库开启 hot_standby 且主库开启 full_page_writes,同时存在 WAL 归档完整性限制‌。

使用 pg_basebackup

使用 pg_basebackup 命令进行备份。基本的命令格式如下:

pg_basebackup -D <target-directory> -Fp -Xs -P -R -S <slotname> -d <connection-string> 

其中参数说明:

  • -D--pgdata
    指定备份的目标目录,即备份文件存放的位置。

  • -h--host
    指定 PostgreSQL 服务器的主机名或 IP 地址。

  • -p--port
    指定 PostgreSQL 服务器的端口号(默认是 5432)。

  • -U--username
    指定连接 PostgreSQL 的用户名。

  • -w--no-password
    不提示输入密码(适用于密码已配置在 .pgpass 文件中)。

  • -W--password
    强制提示输入密码。

  • -F--format
    指定备份的输出格式:

    • pplain:普通格式,将文件直接复制到目标目录(默认)。
    • ttar:将备份打包为 tar 文件。
  • -X--wal-method
    指定 WAL(Write-Ahead Logging)文件的传输方式:

    • none:不包含 WAL 文件。
    • fetch:在备份结束时获取所需的 WAL 文件。
    • stream:在备份过程中流式传输 WAL 文件(推荐)。
  • -P--progress
    显示备份进度。

  • -v--verbose
    输出详细的日志信息。

  • -j--jobs
    指定并行备份的线程数(仅适用于 tar 格式)。

  • -Z--compress
    指定压缩级别(0-9),0 表示不压缩,9 表示最高压缩率(仅适用于 tar 格式)。

  • -c--checkpoint
    指定备份开始时的检查点模式:

    • fast:快速检查点(默认)。
    • spread:分散检查点,减少对性能的影响。
  • -l--label
    为备份设置一个标签(通常用于标识备份)。

  • -R--write-recovery-conf
    在备份目录中生成 standby.signal 文件,并配置 primary_conninfo,用于设置从库。

  • -T--tablespace-mapping
    将表空间重映射到新的位置(格式:OLD_LOCATION=NEW_LOCATION)。

  • --slot
    指定复制槽名称(用于流式备份时确保 WAL 文件不被删除)。

  • -C

    在备份开始之前,强制 PostgreSQL 创建一个检查点,将所有脏页(dirty pages)刷新到磁盘,并确保 WAL(Write-Ahead Logging)文件是最新的。

    -c 参数的区别

    • -C:在备份开始之前创建一个检查点。
    • -c:指定备份开始时的检查点模式(fastspread),而不是强制创建检查点。

常用命令示例

  1. 基本备份

    pg_basebackup -D /backup/path -U postgres -h 192.168.1.100 -p 5432
    
  2. 流式传输 WAL 文件

    pg_basebackup -D /backup/path -X stream -U postgres
    
  3. 备份为 tar 格式并压缩

    pg_basebackup -F t -Z 6 -D /backup/path -U postgres
    
  4. 并行备份

    pg_basebackup -F t -j 4 -D /backup/path -U postgres
    
  5. 生成从库配置

    pg_basebackup -D /backup/path -R -U postgres
    
  6. 常用的备份示例

pg_basebackup -h 127.0.0.1 -p 5432 -U repl -W -Ft -Z 6  -R -Xs -C --slot=myslot01 -P -v -l '20250309backup' -D /opt/bak/
Password: 
pg_basebackup: initiating base backup, waiting for checkpoint to complete
pg_basebackup: checkpoint completed
pg_basebackup: write-ahead log start point: 0/16000028 on timeline 3
pg_basebackup: starting background WAL receiver
pg_basebackup: created replication slot "myslot01"
31394/31394 kB (100%), 1/1 tablespace                                         
pg_basebackup: write-ahead log end point: 0/16000138
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-rw------- 1 postgres dba  181766 Mar  9 11:33 backup_manifest
-rw------- 1 postgres dba 4280493 Mar  9 11:33 base.tar.gz
-rw------- 1 postgres dba   18299 Mar  9 11:33 pg_wal.tar.gz

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com