vb_basebackup
功能描述
Vastbase部署成功后,在数据库运行的过程中,可能会遇到各种问题及异常状态。Vastbase提供了vb_basebackup工具做基础的物理备份。该工具可以将整个实例的数据进行备份。
vb_basebackup的实现目标是对服务器数据库文件的二进制进行拷贝,其实现原理是使用了复制协议。远程执行vb_basebackup时,需要使用系统管理员账户。vb_basebackup当前支持热备份模式和压缩格式备份模式。
热备份是指在数据库运行状态下进行备份操作,备份所需的时间短。
冷备份是指停止正在运行的数据库,分离数据库,直接复制数据库文件。
前提条件
- 可以正常连接Vastbase数据库。
- 备份过程中用户权限没有被回收。
- pg_hba.conf中需要配置允许复制链接,且该连接必须由一个系统管理员建立。
- 如果xlog传输模式为stream模式,需要配置max_wal_senders的数量,至少有一个可用。
- 如果xlog传输模式为fetch模式,需要把wal_keep_segments参数设置得足够高,这样在备份末尾之前日志不会被移除。
- 在进行还原时,需要保证各节点备份目录中存在备份文件,若备份文件丢失,则需要从其他节点进行拷贝。
注意事项
暂不支持备份文件增量恢复。如需使用此工具恢复至全备后的任意时间点,可以采用PITR指定时间点恢复。
恢复后需要检查数据库中的链接文件是否链接到正确的文件。
vb_basebackup仅支持主机和备机的全量备份,不支持增量。
vb_basebackup当前支持热备份模式和压缩格式备份模式。
若打开增量检测点功能且打开双写,vb_basebackup也会备份双写文件。
vb_basebackup在备份包含绝对路径的表空间时,如果在同一台机器上进行备份,可以通过
-T,--tablespace-mapping
重定向表空间路径或使用归档模式进行备份。若pg_xlog目录为软链接,备份时将不会建立软链接,会直接将数据备份到目的路径的pg_xlog目录下。
备份过程中收回用户备份权限,可能导致备份失败或者备份数据不可用。
如果因为网络临时故障等原因导致Server端无法应答,vb_basebackup将在最长等待120秒后退出。
语法格式
vb_basebackup [OPTION]...
控制输出的选项:
-D, --pgdata=DIRECTORY receive base backup into directory
-F, --format=p|t output format (plain (default), tar)
-T, --tablespace-mapping=OLDDIR=NEWDIR
relocate tablespace in OLDDIR to NEWDIR
-x, --xlog include required WAL files in backup (fetch mode)
-X, --xlog-method=fetch|stream
include required WAL files with specified method
-z, --gzip compress tar output
-Z, --compress=0-9 compress tar output with given compression level
常用选项:
-c, --checkpoint=fast|spread
set fast or spread checkpointing
-l, --label=LABEL set backup label
-P, --progress show progress information
-v, --verbose output verbose messages
-V, --version output version information, then exit
-?, --help show this help, then exit
连接选项:
-h, --host=HOSTNAME database server host or socket directory
-p, --port=PORT database server port number
-s, --status-interval=INTERVAL
time between status packets sent to server (in seconds)
-t, --rw-timeout=RW_TIMEOUT
read-write timeout during idle connection.(in seconds)
-U, --username=NAME connect as specified database user
-w, --no-password never prompt for password
-W, --password force password prompt (should happen automatically)
-K, --wal_directory set the target directory to save the wal files
参数说明
控制输出的选项
-D, --pgdata=DIRECTORY
备份文件输出的目录,必选项,备份目录需提前创建。
-F,--format=p|t
设置输出格式为plain(默认)或者tar。没有设置该参数的情况下,默认--format=plain。plain格式把输出写成平面文件,使用和当前数据目录和表空间相同的布局。当集簇没有额外表空间时,整个数据库将被放在目标目录中。如果集簇包含额外的表空间,主数据目录将被放置在目标目录中,但是所有其他表空间将被放在它们位于服务器上的相同的绝对路径中。tar模式将输出写成目标目录中的 tar 文件。主数据目录将被写入到一个名为base.tar的文件中,并且其他表空间将被以其 OID 命名。生成的tar包,需要用gs_tar命令解压。
-T,--tablespace-mapping=olddir=newdir
在备份期间将目录olddir中的表空间重定位到newdir中。为使之有效,olddir必须正好匹配表空间所在的路径(但如果备份中没有包含olddir中的表空间也不是错误)。olddir和newdir必须是绝对路径。如果一个路径凑巧包含了一个=符号,可用反斜线对它转义。对于多个表空间可以多次使用这个选项。
-x,--xlog
在备份中包含所需的WAL文件(fetch模式)。
使用这个选项等效于在fetch方法中使用-X。
-X,--xlog-method=fetch|stream
设置xlog传输方式。没有设置该参数的情况下,默认--xlog-method=stream。在备份中包括所需的预写式日志文件(WAL文件)。这包括所有在备份期间产生的预写式日志。fetch方式在备份末尾收集预写式日志文件。因此,有必要把wal_keep_segments参数设置得足够高,这样在备份末尾之前日志不会被移除。如果在要传输日志时它已经被轮转,备份将失败并且是不可用的。stream方式在备份被创建时流传送预写式日志。这将开启一个到服务器的第二连接并且在运行备份时并行开始流传输预写式日志。因此,它将使用最多两个由max_wal_senders参数配置的连接。只要客户端能保持接收预写式日志,使用这种模式不需要在主控机上保存额外的预写式日志。
使用tar格式压缩备份时,xlog传输方式不支持设为stream。
-z, --gzip
启用对 tar 文件输出的 gzip 压缩,使用默认的压缩级别。只有使用 tar 格式时压缩才可用,并且会在所有tar文件名后面自动加上后缀.gz。
-Z, --compress=0-9
启用对 tar 文件输出的 gzip 压缩,并且制定压缩级别(0 到 9,0 是不压缩,9 是最佳压缩)。只有使用 tar 格式时压缩才可用,并且会在所有tar文件名后面自动加上后缀.gz。
常用参数
-c,--checkpoint=fast|spread
设置检查点模式为fast或者spread(默认)。
-l,--label=LABEL
为备份设置标签。
-P,--progress
启用进展报告。
-v,--verbose
启用冗长模式,打印更多信息。
-V,--version
打印版本后退出。
-?,--help
显示vb_basebackup命令行参数。
连接参数
-h,--host=HOSTNAME
指定正在运行服务器的主机名或者Unix域套接字的路径。
-p,--port=PORT
指定数据库服务器的端口号。可以通过port参数修改默认端口号。
-s,--status-interval=INTERVAL
发送到服务器的状态包的时间(以秒为单位)。
-t, --rw-timeout=RW_TIMEOUT
设置备份期间checkpoint的时间限制,默认限制时间为120s。当数据库全量checkpoint耗时较长时,可以适当增大--rw-timeout限制时间。
-U,--username=NAME
指定连接数据库的用户。
-w,--no-password
不出现输入密码提示。
-W,--password
当使用-U参数连接本地数据库或者连接远端数据库时,可通过指定该选项出现输入密码提示。
-K, --wal_directory
设置存放wal文件的目标目录。设置wal文件保存的目标目录,指定预写日志目录的位置。Waldir必须是一个绝对路径。只有在备份为plain模式时才能指定预写日志目录。
恢复流程
当数据库发生故障时需要从备份文件进行恢复。
因为vb_basebackup是对数据库按二进制进行备份,因此恢复时可以直接拷贝替换原有的文件,或者直接在备份的库上启动数据库。
- 若当前数据库实例正在运行,直接从备份文件启动数据库可能会存在端口冲突,这时需要修改配置文件的port参数,或者在启动数据库时指定一下端口。
- 若当前备份文件为主备数据库,可能需要修改一下主备之间的复制连接。即配置文件中的postgresql.conf中的replconninfo1、replconninfo2等。
- 若配置文件postgresql.conf的参数data_directory打开且有配置,当使用备份目录启动数据库时候,data_directory和备份目录不同会导致启动失败。可以修改data_directory的值为新的数据目录,或者注释掉该参数。
方法一,在恢复时拷贝替换原有文件,参考步骤如下:
1、停止数据库服务器。
2、将原数据库和所有表空间复制到另外一个位置,以备后面需要。
3、清理原库中的所有或部分文件。
若不需要留存原数据库的数据文件,步骤2、3也可以直接用备份文件覆盖原数据库目录。
4、使用数据库系统用户权限从备份中还原需要的数据库文件。
5、若数据库中存在链接文件,需要修改使其链接到正确的文件。
6、重启数据库服务器,并检查数据库内容,确保数据库已经恢复到所需的状态。
方法二,在备份的数据库上启动数据库,参考步骤如下:
1、停止数据库服务器。
2、若数据库中存在链接文件,需要修改使其链接到正确的文件。
3、在备份的数据库上启动数据库,启动时用-D指定备份的数据目录。
4、检查数据库内容,确保数据库已经恢复到所需的状态。