seabox recover
seabox recover¶
数据库备份和恢复功能地作用是保障数据的安全性和可靠性,确保在数据库发生数据损失或硬件故障等情况下,能够快速地恢复数据。数据库备份和恢复功能是数据库管理中非常重要的一环,对于数据库的安全性和可靠性具有重要作用。
Seabox数据库备份和恢复功能有4项基本操作,下面按照操作进行介绍。
初始化¶
在进行备份操作之前,需要初始化备份环境,主要包括以下几点:
-
创建备份数据目录、配置目录、日志目录等
-
修改数据库的配置文件,设置归档参数,将wal归档到对应的归档目录中
-
重启数据库,使归档配置生效
-
在备份数据目录中创建备份信息文件
命令格式¶
initialize the recover environment
Usage:
seabox recover init [OPTIONS]
Options:
-c, --compress [y|n] compress the backup data or not,
y: compress, n: do not compress,
default: y
-f, --config-file TEXT config file path,
default: $SDHOME/etc/db-recover.yml
-l, --log-path TEXT path where log files are stored
-p, --db-port TEXT seabox database server port
-D, --db-path TEXT seabox database data path
-U, --db-user TEXT seabox database user name
-v, --verbose run with verbose output
--backup-cipher TEXT backup data encryption key
--backup-path TEXT backup path
--archive-path TEXT archive path
--db-type [centralized|seaboxsql|mpp]
database type,
centralized: centralized cluster;
seaboxsql: single instance database;
mpp: SeaboxMPP cluster
--local backup data stores in the server
where executor is located,
when backup MPP cluster
--retention-full-count INTEGER full backup retention count,
when a full backup expires,
all differential and incremental backups
associated with the full backup
will also expire, default: 5, max: 100
-h, --help show this help, then exit
参数说明¶
- Options
-
命令支持的选项
-c, --compress
- 是否对备份数据进行压缩,y: 压缩; n: 不压缩; 默认值:y
-f, --config-file
- 配置文件的路径, 默认值: $SDHOME/etc/db-recover.yml
-l, --log-path
- 日志文件的路径, 默认值:/home/seabox/recover/log,此参数可以在配置文件中设置
-p, --db-port
- 海盒数据库服务端口
-D, --db-path
- 海盒数据库数据目录
-U, --db-user
- 海盒数据库用户名
--backup-cipher
- 备份数据加密密钥,此参数可以在配置文件中设置
--backup-path
- 备份文件目录,默认值: /home/seabox/recover/data,此参数可以在配置文件中设置
--archive-path
- 归档目录,存放归档文件
--db-type
- 数据库类型,centralized: 集中式集群, seaboxsql: 单机数据库,mpp:SeaboxMPP数据库,此参数可以在配置文件中设置
--local
- MPP数据库备份时,数据保存在executor所在的物理服务器上
--retention-full-count
- 保留的全量备份数目,全量备份数目超过此值,超出的全量备份以及相关的增量备份和差异备份都会被删除,默认值:5,最大值:100,此参数可以在配置文件中设置
-v, --verbose
- 运行时输出详细信息
-h, --help
- 使用该选项时返回帮助信息
备份数据库¶
备份功能支持全量备份、增量备份、差异备份。
命令格式¶
backup the database
Usage:
seabox recover backup [OPTIONS]
Options:
-T, --backup-type [full|incr|diff]
backup type,
full: full backup;
incr: increment backup;
diff: differential backup;
default:incr
-c, --compress [y|n] compress the backup data or not,
y: compress, n: do not compress,
default: y
-f, --config-file TEXT config file path,
default: $SDHOME/etc/db-recover.yml
-l, --log-path TEXT path where log files are stored
-p, --db-port TEXT seabox database server port
-D, --db-path TEXT seabox database data path
-U, --db-user TEXT seabox database user name
-v, --verbose run with verbose output
--backup-cipher TEXT backup data encryption key
--backup-path TEXT backup path
--archive-path TEXT archive path
--db-type [centralized|seaboxsql|mpp]
database type,
centralized: centralized cluster;
seaboxsql: single instance database;
mpp: SeaboxMPP cluster
--local backup data stores in the where executor is
located, when backup MPP cluster
--retention-full-count INTEGER full backup retention count,
when a full backup expires,
all differential and incremental backups
associated with the full backup
will also expire, default: 5, max: 100
-h, --help show this help, then exit
参数说明¶
- Options
-
命令支持的选项
-T, --backup-type
- 备份类型, full: 全量备份; incr: 增量备份; diff: 差异备份; 默认值:incr
-c, --compress
- 是否对备份数据进行压缩,y: 压缩; n: 不压缩; 默认值:y
-f, --config-file
- 配置文件的路径, 默认值: $SDHOME/etc/db-recover.yml
-l, --log-path
- 日志文件的路径, 默认值:/home/seabox/recover/log,此参数可以在配置文件中设置
-p, --db-port
- 海盒数据库服务端口
-D, --db-path
- 海盒数据库数据目录
-U, --db-user
- 海盒数据库用户名
--backup-cipher
- 备份数据加密密钥,此参数可以在配置文件中设置
--backup-path
- 备份文件目录,默认值: /home/seabox/recover/data,此参数可以在配置文件中设置
--archive-path
- 归档目录,存放归档文件
--db-type
- 数据库类型,centralized: 集中式集群, seaboxsql: 单机数据库,mpp:SeaboxMPP数据库,此参数可以在配置文件中设置
--local
- MPP数据库备份时,数据保存在executor所在的物理服务器上
--retention-full-count
- 保留的全量备份数目,全量备份数目超过此值,超出的全量备份以及相关的增量备份和差异备份都会被删除,默认值:5,最大值:100,此参数可以在配置文件中设置
-v, --verbose
- 运行时输出详细信息
-h, --help
- 使用该选项时返回帮助信息
查看备份信息¶
可以查看备份文件的信息,包括备份记录的名称、备份记录的占用空间、是否有加密、压缩等。
命令格式¶
show the backup data information
Usage:
seabox recover info [OPTIONS]
Options:
-f, --config-file TEXT config file path,
default: $SDHOME/etc/db-recover.yml
-l, --log-path TEXT path where log files are stored
-v, --verbose run with verbose output
--backup-cipher TEXT backup data encryption key
--backup-path TEXT backup path
--db-type [centralized|seaboxsql|mpp]
database type,
centralized: centralized cluster;
seaboxsql: single instance database;
mpp: SeaboxMPP cluster
--retention-full-count INTEGER full backup retention count,
when a full backup expires,
all differential and incremental backups
associated with the full backup
will also expire, default: 5, max: 100
-h, --help show this help, then exit
参数说明¶
- Options
-
命令支持的选项
-f, --config-file
- 配置文件的路径, 默认值: $SDHOME/etc/db-recover.yml
-l, --log-path
- 日志文件的路径, 默认值:/home/seabox/recover/log,此参数可以在配置文件中设置
--backup-cipher
- 备份数据加密密钥,此参数可以在配置文件中设置
--backup-path
- 备份文件目录,默认值: /home/seabox/recover/data,此参数可以在配置文件中设置
--db-type
- 数据库类型,centralized: 集中式集群, seaboxsql: 单机数据库,mpp:SeaboxMPP数据库,此参数可以在配置文件中设置
--retention-full-count
- 保留的全量备份数目,全量备份数目超过此值,超出的全量备份以及相关的增量备份和差异备份都会被删除,默认值:5,最大值:100,此参数可以在配置文件中设置
-v, --verbose
- 运行时输出详细信息
-h, --help
- 使用该选项时返回帮助信息
恢复数据库¶
支持多种不同的数据恢复方式
-
从指定的备份记录中恢复数据
-
恢复到指定的时间点
-
恢复到指定的xid
-
从指定的时间线进行恢复
命令格式¶
restore the database with the specified backup data
Usage:
seabox recover restore [OPTIONS]
Options:
-c, --compress [y|n] compress the backup data or not, y:
compress, n: do not compress, default: y
-f, --config-file TEXT config file path,
default: $SDHOME/etc/db-recover.yml
-l, --log-path TEXT path where log files are stored
-L, --target-timeline INTEGER recover database along a timeline,
in decint format, hex is not supported
-r, --restore-type [default|immediate|time|xid]
default: recover to the end of the archive stream;
immediate: recover only until the database becomes consistent;
time: recover to the time specified in --restore-target;
xid: recover to the transaction id specified in --restore-target
-s, --restore-set TEXT the backup set to be restored.
restore to the latest data by default
-t, --restore-target TEXT defines the recovery target when
--restore-type is time or xid
-A, --keep-archive keep the archive config after restoring database
-p, --db-port TEXT seabox database server port
-D, --db-path TEXT seabox database data path
-U, --db-user TEXT seabox database user name
-v, --verbose run with verbose output
--backup-cipher TEXT backup data encryption key
--backup-path TEXT backup path
--archive-path TEXT archive path
--migration migration restore
--db-type [centralized|seaboxsql|mpp]
database type,
centralized: centralized cluster;
seaboxsql: single instance database;
mpp: SeaboxMPP cluster
--local backup data stores in the where executor is
located, when backup MPP cluster
--recovery-option TEXT set an option in recovery.conf
--retention-full-count INTEGER full backup retention count,
when a full backup expires,
all differential and incremental backups
associated with the full backup
will also expire, default: 5, max: 100
-h, --help show this help, then exit
参数说明¶
- Options
-
命令支持的选项
-c, --compress
- 是否对备份数据进行压缩,y: 压缩; n: 不压缩; 默认值:y
-f, --config-file
- 配置文件的路径, 默认值: $SDHOME/etc/db-recover.yml
-l, --log-path
- 日志文件的路径, 默认值:/home/seabox/recover/log,此参数可以在配置文件中设置
-r, --restore-type
- default: 应用全部的归档日志;
- immediate: 应用归档日志到数据库达到一致性状态;
- time: 应用归档日志到 –restore-target 指定的时间点;
- xid: 应用归档日志到 –restore-target 指定的xid
-t, --restore-target
- 当 –restore-type 为'time'或'xid'时,设定数据库恢复的目标点
-s, --restore-set
- 设置系统恢复到哪个备份数据。默认恢复到最新的数据
-L, --target-timeline
- 使用指定的时间线恢复数据库
-A, --keep-archive
- 数据恢复后,保留数据归档的参数
-p, --db-port
- 海盒数据库服务端口
-D, --db-path
- 海盒数据库数据目录
-U, --db-user
- 海盒数据库用户名
--backup-cipher
- 备份数据加密密钥,此参数可以在配置文件中设置
--backup-path
- 备份文件目录,默认值: /home/seabox/recover/data,此参数可以在配置文件中设置
--archive-path
- 归档目录,存放归档文件
--migration
- 迁移恢复,可通过在备份目录的etc文件夹下放置seabox-site.yml文件恢复到另一个同结构的集群
--db-type
- 数据库类型,centralized: 集中式集群, seaboxsql: 单机数据库,mpp:SeaboxMPP数据库,此参数可以在配置文件中设置
--local
- MPP数据库备份时,数据保存在executor所在的物理服务器上
--recovery-option
- 在 recover.conf 中添加自定义操作
--retention-full-count
- 保留的全量备份数目,全量备份数目超过此值,超出的全量备份以及相关的增量备份和差异备份都会被删除,默认值:5,最大值:100,此参数可以在配置文件中设置
-v, --verbose
- 运行时输出详细信息
-h, --help
- 使用该选项时返回帮助信息
- 注意: seabox recover命令要求数据库已经正确地安装,运行一切正常,且需通过以下命令设置正确的环境变量:
source $SDHOME/seaboxmpp_path.sh
其中,$SDHOME为安装数据库服务的主目录。
生成密钥文件¶
生成加密备份数据的密钥文件
命令格式¶
generate key file
Usage:
seabox recover gen-keyfile [OPTIONS]
Options:
-k, --keyfile-path TEXT generate key file to encrypt backup file,
only for centralized cluster
--backup-cipher TEXT backup data encryption key, only for
centralized cluster
--db-type [centralized|seaboxsql|mpp]
database type, centralized: centralized
cluster; seaboxsql: single instance
database; mpp: SeaboxMPP cluster
-h, --help show this help, then exit
参数说明¶
- Options
-
命令支持的选项
-k, --keyfile-path
- 密钥文件路径
--backup-cipher
- 加密密钥
--db-type
- 数据库类型,centralized: 集中式集群, seaboxsql: 单机数据库,mpp:SeaboxMPP数据库,此参数可以在配置文件中设置
-h, --help
- 使用该选项时返回帮助信息
集中式集群使用方法¶
-
修改配置文件,$SDHOME/etc/db-recover.yml 中有配置文件的模板
# 数据库类型,必须设置 db_type : centralized # 备份目录,必须设置 backup_path : /home/seabox/recover # 日志保存路径,必须设置 log_path : /home/seabox/seaboxAdminLogs # 数据库超级用户,执行 restore 操作时,必须设置 db_user : seabox # 保留全量备份的数目,超过此数据的全量备份将被自动移除,默认值为5,最大为100 retention_full_count : 5 # 数据库备份文件加密密钥,使用 aes-256-cbc 算法加密,密钥长度最小为 1byte # backup_cipher : xxxxxxxxx # 标签名称 # stanza_name : seabox # 备份配置文件路径 # backup_config_file : /home/seabox/recover/config/recover.conf # 备份配置目录 # backup_config_path : /home/seabox/recover/config # 备份配置临时文件目录 # backup_config_include_path : /home/seabox/recover/config/conf.d # 备份数据目录 # backup_data_path : /home/seabox/recover/data # WAL归档临时存储目录 # backup_wal_spool_path : /home/seabox/recover/spool # 日志目录 # backup_log_path : /home/seabox/recover/log # 以下配置与s3存储相关,且后续参数只能通过配置文件进行配置,不支持命令行配置 # 存储库类型,默认值:posix # repo_type : s3 # s3桶名称 # repo_s3_bucket : demo # s3存储库端点 # repo_s3_endpoint : xxxxxxxxx # s3存储库访问密钥 # repo_s3_key : xxxxxxxxx # s3存储库秘密访问密钥 # repo_s3_key_secret : xxxxxxxxx # s3所在的地域(对照AWS地域映射表) # repo_s3_region : external-1 # s3主机 # repo_s3_host : xxxxxxxxx # s3端口 # repo_s3_port : xxxxxxxxx # s3 URI格式 # repo_s3_uri_style : path # 是否校验s3服务证书 # repo_s3_verify_tls : n
- 参数说明:
- backup_path:备份目录,默认情况下,会在此目录下分别创建 config/data/log 目录,存放 sdbackrest 的配置文件/备份数据/运行日志
- log_path:seabox recover 日志目录,其运行日志会记录在这里
- db_user:数据库的超级用户名,当进行异地恢复后,其超级用户可能有变化,monitor 需要使用此用户来连接数据库,来监控集群。执行数据恢复时,必须指定此参数
- retention_full_count:保留的全量备份数目,全量备份数目超过此值,超出的全量备份以及相关的增量备份和差异备份都会被删除,最大值:100
- backup_cipher:对备份数据进行加密时的密钥。一旦设置了此密钥,后续所有的备份数据都会被加密
- stanza_name:备份文件标签名称。默认此标签在 seabox recover 初始化时自动创建,但是现场已经有环境使用 sdbackrest 创建了备份数据,为了兼容之前的备份数据,提供了此参数
- backup_config_file:sdbackrest 使用的配置文件路径,默认此目录在 seabox recover 初始化时自动创建,为了兼容之前的备份数据
- backup_config_include_path:sdbackrest 使用的配置临时文件目录,默认此目录在 seabox recover 初始化时自动创建,为了兼容之前的备份数据
- backup_data_path:备份数据目录,默认此目录在 seabox recover 初始化时自动创建,为了兼容之前的备份数据
- backup_log_path:sdbackrest 使用的日志目录,默认此目录在 seabox recover 初始化时自动创建,为了兼容之前的备份数据
- backup_wal_spool_path:WAL归档临时存储目录
- repo_type:存储库类型,默认值:posix,可设为s3
- repo_s3_bucket:s3桶名称
- repo_s3_endpoint:s3存储库端点
- repo_s3_key:s3存储库访问密钥
- repo_s3_key_secret:s3存储库秘密访问密钥
- repo_s3_region:s3所在的地域(对照AWS地域映射表)
- repo_s3_host:s3主机
- repo_s3_port:s3端口
- repo_s3_uri_style:s3 URI格式
- repo_s3_verify_tls:是否校验s3服务证书
-
如需对数据文件进行加密,需在init之前执行:
对备份数据加密时,则需在后续执行的所有操作后面添加如下命令:seabox recover gen-keyfile -k <密钥文件存储路径> --backup-cipher <密钥>
-e <密钥文件路径>
确保备份目录和日志目录都具有操作权限,在进行备份操作前,执行:
seabox recover init --db-port=<数据库端口> -U <数据库超级用户> -P <数据库用户密码>
init 的过程会创建需要的目录,包括配置目录、日志目录、数据目录、临时目录等
-
具体操作:
-
备份
seabox recover backup --db-port=<数据库端口> -U <数据库超级用户> -P <数据库用户密码>
-
全量备份
seabox recover backup -T full --db-port=<数据库端口> -U <数据库超级用户> -P <数据库用户密码>
-
增量备份
seabox recover backup -T incr --db-port=<数据库端口> -U <数据库超级用户> -P <数据库用户密码>
-
差异备份
seabox recover backup -T diff --db-port=<数据库端口> -U <数据库超级用户> -P <数据库用户密码>
-
查看备份信息
seabox recover info
-
数据恢复,需要指定超级用户名
-
恢复到最新的备份数据
seabox recover restore --db-port=<数据库端口> -U <数据库超级用户> -P <数据库用户密码>
-
恢复到某个备份点
seabox recover restore -s <备份记录> -r immediate --db-port=<数据库端口> -U <数据库超级用户> -P <数据库用户密码>
-
恢复到某个时间点
seabox recover restore -r time -t '2023-03-04 08:00:00.000000+00' --db-port=<数据库端口> -U <数据库超级用户> -P <数据库用户密码>
-
恢复到某个xid
seabox recover restore -r xid -t <xid> --db-port=<数据库端口> -U <数据库超级用户> -P <数据库用户密码>
-
在 recover.conf 中添加自定义操作
seabox recover restore -s <备份记录> --recovery-option=<自定义操作> --db-port=<数据库端口> -U <数据库超级用户> -P <数据库用户密码>
-
使用指定的时间线恢复数据库
seabox recover restore -s <备份记录> -L <时间线> --db-port=<数据库端口> -U <数据库超级用户> -P <数据库用户密码>
- 相关命令
- 无
MPP集群使用方法¶
- 开启归档:如果要使用增量备份,必须在备份前先执行此命令
seabox recover init --db-type mpp --archive-path /home/seabox/archive/
- 全量备份
seabox recover backup --db-type mpp --backup-type full --backup-path /home/seabox/backup --local
- 增量备份
seabox recover backup --db-type mpp --backup-type incr --archive-path /home/seabox/archive/ --backup-path /home/seabox/backup --local
- 查看备份信息
seabox recover info --db-type mpp --backup-path /home/seabox/backup
- 恢复备份
seabox recover restore --db-type mpp --backup-path /home/seabox/backup
- 恢复到指定时间,指定的时间为增量备份时间中的一个
seabox recover restore --db-type mpp --backup-path /home/seabox/backup -r 'time' -t 20230518134706
- 迁移恢复
在备份目录下的etc目录下创建新集群的拓扑文件
seabox-site.yml
,新集群必须与原集群结构完全一致 在备份目录下的etc目录创建hba ip映射文件node_ip_mapping.yml
,格式如下:mpp-1: old_address: 10.10.0.1 new_address: 10.10.0.11
seabox recover restore --db-type mpp --backup-path /home/seabox/backup --migration