#S3适配器

S3适配器(libyas_xbsa_s3.so)是基于XBSA标准接口在S3兼容对象存储上的具体实现。通过S3适配器,用户可以将数据库备份直接写入AWS S3、阿里云OSS、MinIO、SeaweedFS等支持S3协议的对象存储服务。

S3适配器继承XBSA接口定义,并将XBSA的操作转换为S3 API调用,实现将备份数据存储到S3兼容对象存储中。

# 环境准备

使用yasrman的XBSA-S3备份功能前,需要完成以下准备工作。

  • 当前数据库和yasrman工具的版本为v23.4.15.100及以上,且yasrman工具的安装路径下存在lib/libyas_xbsa_s3.so动态库文件。

  • 已获取支持S3协议的对象存储服务的以下信息,并确保网络通畅。

    • S3服务地址(URL),例如http://192.168.1.100:9000
    • 存储桶名称,例如yashan-backup
    • Access Key(访问密钥ID),例如admin
    • Secret Key(访问密钥密码),例如MinioStrongPassword123
    • 区域(部分S3服务需要),例如us-east-1

# PARAMS参数配置

通过PARAMS参数指定S3适配器配置信息:

syntax
PARAMS XBSA_LIBRARY=xbsa_library_path, TOKEN=token_value, ENV=(key1=val1,key2=val2,...)
  • xbsa_library_path:XBSA动态链接库的绝对路径或库名称,必须为Linux动态链接库
  • token_value:调用BSAInit接口时的token入参,S3适配器使用固定值NULL
  • ENV参数:键值对格式的环境参数

S3适配器ENV参数如下表所示:

参数名 必填 说明 示例
S3_ENDPOINT 是 S3服务地址(URL) http://192.168.1.100:9000
S3_BUCKET 是 存储桶名称 yashan-backup
S3_AK 是 Access Key(访问密钥ID) admin
S3_SK 是 Secret Key(访问密钥密码) MinioStrongPassword123
S3_REGION 否 区域(部分S3服务需要) us-east-1

# 备份全库

备份会消耗一定的系统和数据库资源,请根据业务负载酌情选择备份窗口。当待备份对象的数据量大或希望提升备份效率时,可适当增大并发度,并发度默认为2。

通过yasrman工具的XBSA服务备份必须将备份集文件存放至工具端(DEST CLIENT),并通过PARAMS指定S3对象存储服务相关信息。

# 全量备份

全量备份是指对某一时间点上的所有数据进行完全复制,不依赖之前的备份集。

$ yasrman sys/********@192.168.1.2:1688 -c "backup database tag 's3_full_1' dest client params 'XBSA_LIBRARY=/home/yashan/lib/libyas_xbsa_s3.so, TOKEN=NULL, ENV=(S3_ENDPOINT=http://192.168.1.100:9000,S3_BUCKET=yashan-backup,S3_AK=admin,S3_SK=MinioStrongPassword123)'" -D /home/yashan/catalog

# 增量备份

# Level 0

$ yasrman sys/********@192.168.1.2:1688 -c "backup database incremental level 0 tag 's3_incr_base' dest client params 'XBSA_LIBRARY=/home/yashan/lib/libyas_xbsa_s3.so, TOKEN=NULL, ENV=(S3_ENDPOINT=http://192.168.1.100:9000,S3_BUCKET=yashan-backup,S3_AK=admin,S3_SK=MinioStrongPassword123)'" -D /home/yashan/catalog

# Level 1

$ yasrman sys/********@192.168.1.2:1688 -c "backup database incremental level 1 tag 's3_incr_1' dest client params 'XBSA_LIBRARY=/home/yashan/lib/libyas_xbsa_s3.so, TOKEN=NULL, ENV=(S3_ENDPOINT=http://192.168.1.100:9000,S3_BUCKET=yashan-backup,S3_AK=admin,S3_SK=MinioStrongPassword123)'" -D /home/yashan/catalog

# 备份表空间

表空间备份仅适用于单机部署,若为主备高可用环境则只能连接主库执行相关操作。

表空间备份时,不会备份对应的归档文件、BUCKET文件。

$ yasrman sys/********@192.168.1.2:1688 -c "backup tablespace user tag 's3_tbs_user' dest client params 'XBSA_LIBRARY=/home/yashan/lib/libyas_xbsa_s3.so, TOKEN=NULL, ENV=(S3_ENDPOINT=http://192.168.1.100:9000,S3_BUCKET=yashan-backup,S3_AK=admin,S3_SK=MinioStrongPassword123)'" -D /home/yashan/catalog

# 备份归档日志

备份归档日志适用于单机部署和共享集群/分布式集群部署。

$ yasrman sys/********@192.168.1.2:1688 -c "backup archivelog all tag 's3_arch' dest client params 'XBSA_LIBRARY=/home/yashan/lib/libyas_xbsa_s3.so, TOKEN=NULL, ENV=(S3_ENDPOINT=http://192.168.1.100:9000,S3_BUCKET=yashan-backup,S3_AK=admin,S3_SK=MinioStrongPassword123)'" -D /home/yashan/catalog

# 备份集管理

# 查看备份集信息

恢复前可以先查看S3中备份集的详细信息:

$ yasrman sys/********@192.168.1.2:1688 -c "list backup tag 's3_full_1'" -D /home/yashan/catalog

# 删除备份集

删除备份集操作会删除S3存储桶中以指定TAG为前缀的所有对象。例如,删除s3_full_1会删除所有s3_full_1/*路径下的备份文件。

$ yasrman sys/********@192.168.1.2:1688 -c "delete backupset tag 's3_full_1' params 'XBSA_LIBRARY=/home/yashan/lib/libyas_xbsa_s3.so, TOKEN=NULL, ENV=(S3_ENDPOINT=http://192.168.1.100:9000,S3_BUCKET=yashan-backup,S3_AK=admin,S3_SK=MinioStrongPassword123)'" -D /home/yashan/catalog

delete backupset successfully

# 恢复整库

# 完整恢复整库

$ yasrman sys/********@192.168.1.2:1688 -c "restore database from tag 's3_full_1' dest client params 'XBSA_LIBRARY=/home/yashan/lib/libyas_xbsa_s3.so, TOKEN=NULL, ENV=(S3_ENDPOINT=http://192.168.1.100:9000,S3_BUCKET=yashan-backup,S3_AK=admin,S3_SK=MinioStrongPassword123)'" -D /home/yashan/catalog

# 基于时间点恢复整库

# 指定时间戳
$ yasrman sys/********@192.168.1.2:1688 -c "restore database from tag 'full_1' until time '2023-11-13' dest client params 'XBSA_LIBRARY=/home/yashan/lib/libyas_xbsa_s3.so, TOKEN=NULL, ENV=(S3_ENDPOINT=http://192.168.1.100:9000,S3_BUCKET=yashan-backup,S3_AK=admin,S3_SK=MinioStrongPassword123)'" -D /home/yashan/catalog

# 指定SCN
$ yasrman sys/********@192.168.1.2:1688 -c "restore database from tag 'full_1' until scn 499833430256541696 dest client params 'XBSA_LIBRARY=/home/yashan/lib/libyas_xbsa_s3.so, TOKEN=NULL, ENV=(S3_ENDPOINT=http://192.168.1.100:9000,S3_BUCKET=yashan-backup,S3_AK=admin,S3_SK=MinioStrongPassword123)'" -D /home/yashan/catalog

# 恢复加密备份

如果备份时使用了加密,恢复时需要提供解密密码:

$ yasrman sys/********@192.168.1.2:1688 -c "restore database from tag 's3_full_enc' decryption 123456 dest client params 'XBSA_LIBRARY=/home/yashan/lib/libyas_xbsa_s3.so, TOKEN=NULL, ENV=(S3_ENDPOINT=http://192.168.1.100:9000,S3_BUCKET=yashan-backup,S3_AK=admin,S3_SK=MinioStrongPassword123)'" -D /home/yashan/catalog

# 恢复表空间

表空间恢复仅适用于单机部署,恢复前需确保目标表空间处于OFFLINE状态。

$ yasrman sys/********@192.168.1.2:1688 -c "restore tablespace user from tag 's3_tbs_user' dest client params 'XBSA_LIBRARY=/home/yashan/lib/libyas_xbsa_s3.so, TOKEN=NULL, ENV=(S3_ENDPOINT=http://192.168.1.100:9000,S3_BUCKET=yashan-backup,S3_AK=admin,S3_SK=MinioStrongPassword123)'" -D /home/yashan/catalog

# 恢复归档日志

$ yasrman sys/********@192.168.1.2:1688 -c "restore archivelog all from tag 'arch_bak002' dest client params 'XBSA_LIBRARY=/home/yashan/lib/libyas_xbsa_s3.so, TOKEN=NULL, ENV=(S3_ENDPOINT=http://192.168.1.100:9000,S3_BUCKET=yashan-backup,S3_AK=admin,S3_SK=MinioStrongPassword123)'" -D /home/yashan/catalog

$ yasrman sys/********@192.168.1.2:1688 -c "restore archivelog sequence between 10 and 20 dest client params 'XBSA_LIBRARY=/home/yashan/lib/libyas_xbsa_s3.so, TOKEN=NULL, ENV=(S3_ENDPOINT=http://192.168.1.100:9000,S3_BUCKET=yashan-backup,S3_AK=admin,S3_SK=MinioStrongPassword123)'" -D /home/yashan/catalog
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流