集中式集群备份恢复说明
集中式集群备份恢复¶
集中式集群部署时,集群管理工具集成了sdBackRest工具相关功能,以满足集群形态下的备份/恢复操作,本节即该管理工具的使用方式说明。
集中式集群备份恢复功能语法简介¶
- 语法
bash seabox recover [COMMANDS] [OPTIONS]
- 选项
-
选项说明如下:
- Options
-
命令支持的选项
-T, --backup-type
- 备份类型, full: 全量备份; incr: 增量备份; diff: 差异备份; 默认值:incr
-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
- 使用指定的时间线恢复数据库
-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
--compress
- 是否对备份数据进行压缩,y: 压缩; n: 不压缩; 默认值:y
--db-type
- 数据库类型,centralized: 集中式集群, seaboxsql: 单机数据库,mpp:SeaboxMPP数据库
--encryption-key-file
- 加密备份文件的密钥文件路径
--local
- 数据库备份时,数据保存在executor所在的物理服务器上
--recovery-option
- 在 recover.conf 中添加自定义操作
--retention-full-count
- 保留的全量备份数目,全量备份数目超过此值,超出的全量备份以及相关的增量备份和差异备份都会被删除,最大值:100
-v, --verbose
- 运行时输出详细信息
--version
- 显示版本信息
-h, --help
- 使用该选项时返回seabox stop命令的帮助信息
- 命令
-
命令说明如下:
- Commands
-
命令支持的操作
init
- 初始化备份恢复的环境
backup
- 对数据库进行备份操作
info
- 查看备份数据的详细信息
restore
- 使用用户指定的备份数据对数据库进行恢复
- 注意: seabox recover命令要求数据库已经正确地安装,运行一切正常,且需通过以下命令设置正确的环境变量:
source $SDHOME/seaboxsql_path.sh
其中,$SDHOME为安装数据库服务的主目录。
集中式集群备份初始化¶
- 修已安装二进制程序的节点上(centra_cluster1)的配置文件,
$SDHOME/etc/db-recover.yml
中有配置文件的模板
# 数据库类型,必须设置
db_type : centralized
# 备份目录,必须设置
backup_path : /home/seabox/data
# 日志保存路径,必须设置
log_path : /home/seabox/seaboxAdminLogs
# 数据库超级用户,执行 restore 操作时,必须设置
db_user : seabox
# 保留全量备份的数目,超过此数据的全量备份将被自动移除,默认值为5,最大为100
retention_full_count : 5
# 数据库备份文件加密密钥,使用 aes-256-cbc 算法加密,密钥长度最小为 1byte
# backup_cipher : 7RJudA8MJQefAM4kZzplzaOLsNxymxqS
# 标签名称
# 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/data/data
# 日志目录
backup_log_path : /home/seabox/recover/log
# WAL归档临时存储目录
backup_wal_spool_path : /home/seabox/recover/spool
-
参数说明见下:
- backup_path
- 备份目录,默认情况下,会在此目录下分别创建 config/data/log 目录,存放 sdbackrest 的配置文件/备份数据/运行日志
- log_path
- sc_db_recover 日志目录,其运行日志会记录在这里
- db_user
- 数据库的超级用户名,当进行异地恢复后,其超级用户可能有变化,monitor 需要使用此用户来连接数据库,来监控集群。执行数据恢复时,必须指定此参数
- retention_full_count
- 保留的全量备份数目,全量备份数目超过此值,超出的全量备份以及相关的增量备份和差异备份都会被删除,最大值:100
- backup_cipher
- 对备份数据进行加密时的密钥。一旦设置了此密钥,后续所有的备份数据都会被加密。使用 aes-256-cbc 算法加密,密钥长度最小为 1byte
- stanza_name
- 备份文件标签名称。默认此标签在 sc_db_recover 初始化时自动创建,但是现场已经有环境使用 sdbackrest 创建了备份数据,为了兼容之前的备份数据,提供了此参数
- backup_config_file
- sdbackrest 使用的配置文件路径,默认此目录在 sc_db_recover 初始化时自动创建,为了兼容之前的备份数据
- backup_config_include_path
- sdbackrest 使用的配置临时文件目录,默认此目录在 sc_db_recover 初始化时自动创建,为了兼容之前的备份数据
- backup_data_path
- 备份数据目录,默认此目录在 sc_db_recover 初始化时自动创建,为了兼容之前的备份数据
- backup_log_path
- sdbackrest 使用的日志目录,默认此目录在 sc_db_recover 初始化时自动创建,为了兼容之前的备份数据
-
将修改完成的$SDHOME/etc/db-recover.yml 配置文件发送至另一节点
scp $SDHOME/etc/db-recover.yml seabox@centra_cluster2:/home/seabox/sdsql/etc
- 确保备份目录和日志目录都具有操作权限,在进行备份操作前,执行:
seabox recover init
init 的过程会创建需要的目录,包括配置目录、日志目录、数据目录、临时目录等
集中式集群执行备份¶
集中式集群通过以下命令执行备份
seabox recover backup
第一次执行时,为全量备份,再次执行时为增量备份,如果不希望使用默认操作,则可以通过参数指定需要进行的备份类型
-
全量备份
seabox recover backup -T full
-
增量备份
seabox recover backup -T incr
-
差异备份
seabox recover backup -T diff
查看备份信息
seabox recover info
集中式集群数据恢复¶
集中式集群执行数据恢复,需要指定超级用户名
-
恢复到最新的备份数据
seabox recover restore
-
恢复到某个备份点
seabox recover restore -s <备份记录> -r immediate
-
恢复到某个时间点
seabox recover restore -r time -t '2023-03-04 08:00:00.000000+00'
-
恢复到某个xid
seabox recover restore -r xid -t <xid>
-
在 recover.conf 中添加自定义操作
seabox recover restore -s <备份记录> --recovery-option=<自定义操作>
-
使用指定的时间线恢复数据库
seabox recover restore -s <备份记录> -L <时间线>
集中式集群执行异地恢复¶
在另外两个节点centra_cluster34布置一套集中式集群clusterB,且集中式集群运转正常
- 修clusterB已安装二进制程序的节点上(centra_cluster3)的配置文件,$SDHOME/etc/db-recover.yml 中有配置文件的模板
# 数据库类型,必须设置
db_type : centralized
# 备份目录,必须设置
backup_path : /home/test/data
# 日志保存路径,必须设置
log_path : /home/test/seaboxAdminLogs
# 数据库超级用户,执行 restore 操作时,必须设置
db_user : seabox
# 保留全量备份的数目,超过此数据的全量备份将被自动移除,默认值为5,最大为100
retention_full_count : 5
# 数据库备份文件加密密钥,使用 aes-256-cbc 算法加密,密钥长度最小为 1byte
# backup_cipher : 7RJudA8MJQefAM4kZzplzaOLsNxymxqS
# 标签名称
stanza_name : seabox
# 备份配置文件路径
backup_config_file : /home/test/recover/config/recover.conf
# 备份配置目录
backup_config_path : /home/test/recover/config
# 备份配置临时文件目录
backup_config_include_path : /home/test/recover/config/conf.d
# 备份数据目录
backup_data_path : /home/test/data/data
# 日志目录
backup_log_path : /home/test/recover/log
# WAL归档临时存储目录
backup_wal_spool_path : /home/test/recover/spool
- 将修改完成的$SDHOME/etc/db-recover.yml 配置文件发送至另一节点
scp $SDHOME/etc/db-recover.yml seabox@centra_cluster4:/home/test/sdsql/etc
- 确保备份目录和日志目录都具有操作权限,在进行备份操作前,执行:
seabox recover init
init 的过程会创建需要的目录,包括配置目录、日志目录、数据目录、临时目录等
- 在clusterB节点执行恢复操作
seabox recover retore
集中式集群本地执行恢复¶
在本地数据库节点执行以下命令进行数据恢复
seabox recover init
注意:执行数据恢复的数据库会关闭归档,无法再次进行备份操作,需要修改参数并重启数据库打开归档,修改参数命令如下:
seabox config -c listen_addresses -v '\*'
seabox config -c archive_mode -v on --skipvalidation
seabox config -c archive_command -v "sdbackrest --stanza=seabox --config=/home/seabox/recover/config/recover.conf --config-include-path=/home/seabox/recover/config/conf.d --config-path=/home/seabox/recover/config --log-path=/home/seabox/recover/log archive-push %p"