LightDB lt_probackup备份与恢复
lt_probackup 是一个管理 LightDB 数据库集群备份和恢复的实用程序。
它被设计用来执行 LightDB 实例的定期备份,以便在发生故障时恢复服务器。
lt_probackup的优点
1)增量备份:页面级增量备份允许您节省磁盘空间,加快备份和恢复。通过三种不同的增量模式,您可以根据自己的数据流规划备份策略。
2)增量恢复:页面级增量恢复允许您通过重用目标目录中未更改的有效页面来显著加快恢复速度。
3)校验:自动进行数据一致性校验,按需进行备份校验,不进行实际数据恢复。
4)验证:按需使用 checkdb命令对 PostgreSQL实例进行验证。
5)保留:按照保留策略管理 WAL存档和备份。您可以根据恢复时间或要保留的备份数量配置保留策略,还可以指定特定备份的生存时间 (TTL)。
过期的备份可以合并或删除。
6)并行化:在多个并行线程上运行备份、恢复、合并、删除、验证过程。
7)压缩:将备份数据压缩保存,节省磁盘空间。
8)重复数据删除:不复制 _vm、_fsm 等非数据文件,节省磁盘空间。
9)远程操作:备份位于远程系统上的 PostgreSQL实例或远程恢复备份。
10)从 standby 服务器进行备份:通过从 standby 服务器备份来避免主服务器的额外负载。
11)外部目录:用于备份 PGDATA目录之外的文件和目录,如脚本、配置文件、日志、SQL转储文件等。
12)备份目录:以纯文本或 JSON格式获取备份列表和相应的元信息。
13)归档目录:以纯文本或 JSON格式获取所有 WAL时间线的列表和相应的元信息。
14)部分还原:只还原指定的数据库或不还原指定的数据库。
为了管理备份数据,lt_probackup会创建一个备份目录。这个目录存储所有带有附加元信息的备份文件,以及时间点恢复所需的 WAL归档。
可以将不同实例的备份存储在单个备份目录的不同子目录中。
1)【完全备份】包含从头恢复数据库集群所需的所有数据文件。
2)【增量备份】只存储自上次备份以来更改的数据。它可以减少备份大小,加快备份操作。
2-1)【PAGE 备份】lt_probackup扫描从上次执行完全备份或增量备份开始的归档中的所有 WAL文件。
新创建的备份只包含 WAL记录中提到的页面。这要求在 WAL存档中存在自上次备份以来的所有 WAL文件。
2-2)【DELTA 备份】lt_probackup读取 PGDATA目录中的所有数据文件,只复制自上次备份以来发生更改的页面。
不需要连续存档即可运行。此外,这种模式可以施加相当于完全备份的只读 I/O压力。
2-3)【PTRACK 备份】PostgreSQL会实时跟踪页面更改。不需要连续存档即可运行。每当一个关系页被更新时,
这个页面就会被添加 PTRACK 位图标记。跟踪页面会增加数据库服务器操作上的一些小开销,但可以显著提高增量备份的速度。
lt_probackup 的限制
1)进行备份的服务器和恢复的服务器必须在 block_size和 wal_block_size参数上兼容,且具有相同的主版本号。
2)目前不支持在 Windows上通过 ssh进行远程备份
3)通过 ssh运行远程操作时,远程的和本地的 lt_probackup 版本必须相同。
lt_probackup 命令详解
lt_probackup help
查看指定子 command 的帮助信息
lt_probackup help [COMMAND]
lt_probackup version
查看 lt_probackup 的版本号
lt_probackup version
lt_probackup init
初始化备份目录
lt_probackup init -B backup-path
-B, --backup-path=backup-path 备份存储目录
lt_probackup add-instance
在指定的备份目录下,新增备份实例
lt_probackup add-instance -B backup-path -D pgdata-path
--instance=instance_name
[-E external-directory-path]
[--remote-proto] [--remote-host]
[--remote-port] [--remote-path] [--remote-user]
[--ssh-options]
-B, --backup-path=backup-path 备份存储目录
-D, --pgdata=pgdata-path 数据库 data 目录
--instance=instance_name 备份实例的名称
-E --external-dirs=external-directories-paths
需要备份的外部存储目录
(example: --external-dirs=/tmp/dir1:/tmp/dir2)
Remote options:
--remote-proto=protocol 要使用的远程协议
available options: 'ssh', 'none' (default: ssh)
--remote-host=destination 远程主机地址或主机名
--remote-port=port 远程主机端口 (default: 22)
--remote-path=path lt_probackup 二进制文件所在路径
(default: current binary path)
--remote-user=username ssh 连接用户名 (default: current user)
--ssh-options=ssh_options 额外的 ssh 选项 (default: none)
(example: --ssh-options='-c cipher_spec -F configfile')
lt_probackup del-instance
删除指定备份目录下的备份实例
lt_probackup del-instance -B backup-path --instance=instance_name
-B, --backup-path=backup-path 备份存储目录
--instance=instance_name 备份实例的名称
lt_probackup backup
执行备份
lt_probackup backup -B backup-path -b backup-mode --instance=instance_name
[-D pgdata-path] [-C]
[--stream [-S slot-name] [--temp-slot]
[--backup-pg-log] [-j num-threads] [--progress]
[--no-validate] [--skip-block-validation]
[-E external-directories-paths]
[--no-sync]
[--log-level-console=log-level-console]
[--log-level-file=log-level-file]
[--log-filename=log-filename]
[--error-log-filename=error-log-filename]
[--log-directory=log-directory]
[--log-rotation-size=log-rotation-size]
[--log-rotation-age=log-rotation-age]
[--delete-expired] [--delete-wal] [--merge-expired]