PostgreSql pg_basebackup

300 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

一、语法

pg_basebackup [option...]

option可选参数如下:

-h host 或 --host=host:指定连接数据库的主机名或 IP 地址。
-p port 或 --port==port:指定连接的端口。
-s interval 或 --status-interval=interval:指定向服务器端周期反馈的秒数,如果服务器上配置了流复制的超时,在使用 --xlog=stream 时,需要设置这个参数,默认为 10s,设置为 0,表示不向服务器反馈状态。
-U username 或 --username=username:指定连接的用户名。
-w 或 --no-password:指定从来不提示输入密码。
-W 或 --password:强制让 pg_basebackup 出现输入密码的提示。
-D directory 或 --pgdata=directory:指定把备份写到哪个目录,目录不存在会自动创建,存在但不为空会备份失败。
-F format 或 --format=format:指定输出格式。“ format” 指一种格式,目前仅支持两种格式,一种是 p 或 plain 原样输出,另一种是 t 或 tar 压缩输出。
-x 或 --xlog:备份中产生的 xlog 文件也备份出来,这个选项与“-X fetch”是完全一样的,应用 xlog 文件把数据库推到一个一致点。使用这个选项需要设置“wal_keep_segments”参数,以保证在备份过程中,需要的 wal 日志不会被覆盖。
-X method 或 --xlog-method=method:method 可取值 f/fetch,其作用于 -x 相同,s/stream 表示备份开始后,使用另一个流复制连接,从主库接收 wal 日志,但这种方式,主库的 max_wal_senders 参数需要大于等于 2。
-z 或 --gzip:仅能与 tar 输出模式配合使用,表明输出的 tar 备份包是经过 gzip 压缩的,相当于生成了一个 .tar.gz 的备份包。
-Z level 或 --compress=level:指定 gzip 的压缩级别,可以选 1~9 的数字,与 gzip 命令中的压缩级别一样,9 表示最高压缩率,但也最耗 CPU。
-R 或 --write-recovery-conf:生成recovery.conf文件。
-c fast|spread 或 --checkpoint=fast|spread:设置 checkpoint 模式是 fast 还是 spread。
-l label 或 --label=label:指定备份的一个标识,备份的标识是一个任意字符串,便于今后维护人员识别这个备份,该标识就是手工做基础备份时运行“select pg_start_backup('lable')”传递给 pg_start_backup 函数的参数。在备份集中有一个文件叫 “backup_label”,这里面除了记录了开始备份时 wal 日志的起始位置、checkpoint 的 wal 日志位置、备份开始的时间外,也记录了这个标识串的信息。
-P 或 --progress:允许在备份过程中实时打印备份进度。
-v 或 --verbose:详细模式,使用了参数 -P 后,还会打印出正在备份的具体文件信息。
-? 或 --help:显示帮助信息。

二、示例

2.1 备份

源端数据库 pg_hba.conf 文件中需增加 replication 配置。

pg_basebackup -h 192.168.100.5  -p 5866 -U sysdba -D /backup -Fp -P -Xs -v

2.2 恢复

--修改postgresql.conf
restore_command = 'cp /备份归档路径/%f %p'

--指定时间恢复
recovery_target_time = '2022-05-30 15:30:12.426998+08'
--执行恢复到最近时间
recovery_target_timeline = 'latest'

--启动数据库进行恢复
pg_ctl start