跳转至

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
使用该选项时返回帮助信息
集中式集群使用方法
  1. 修改配置文件,$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服务证书
  2. 如需对数据文件进行加密,需在init之前执行:

    seabox recover gen-keyfile -k <密钥文件存储路径> --backup-cipher <密钥>
    
    对备份数据加密时,则需在后续执行的所有操作后面添加如下命令:
    -e <密钥文件路径>
    

确保备份目录和日志目录都具有操作权限,在进行备份操作前,执行:

seabox recover init --db-port=<数据库端口> -U <数据库超级用户> -P <数据库用户密码>

init 的过程会创建需要的目录,包括配置目录、日志目录、数据目录、临时目录等

  1. 具体操作:

  2. 备份

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