#yasrman使用指导

# 查看帮助

使用yasrman -h命令可查看帮助信息。

$ yasrman -h

# 命令格式

yasrman <user>/<password>@<host>:<port> -c <command> [-D <catalog_path>]
yasrman -c <command> [-D <catalog_path>]

user/password/host/port

指向CN节点(分布式部署)或数据库实例(单机部署)的连接信息,支持远程TCP连接和本地UDS连接,IP协议支持IPv4和IPv6,user需为DBA角色的有效数据库用户。

Note

  • 备份命令仅SYS超级用户或拥有SYSDBA、SYSBACKUP权限的用户才可执行。恢复命令仅SYS用户才可执行。
  • RESTORE时数据库还没有OPEN,需要sys用户才可执行。
  • 其他语句不与数据库交互,用户名,密码和IP不会进行校验正确性,仅为保持命令格式统一。
  • BACKUP和RESTORE命令必须指定IP连接信息才可执行。

command

具体的命令语句,见下文描述。

catalog_path

指定catalog路径,必须指定为绝对路径。-D命令省略时,catalog_path默认为当前路径。

  • 当command为CREATE CATALOG时,catalog_path必须为新路径,用于创建catalog。
  • 当command为其他时,catalog_path必须为已存在的catalog路径。

# command-创建catalog

syntax
CREATE CATALOG

本命令将根据-D选项指定的路径和名称创建一个catalog文件夹,未指定时在当前路径下创建一个名称为catalog的文件夹。若文件夹已存在,本命令报错。

首次使用yasrman进行备份恢复前,必须使用本命令创建catalog。

Note

  • catalog文件包含记录备份集元数据信息的二进制文件,不可手动删除。若删除或更换catalog路径等,可能会导致无法使用yasrman恢复其包含的备份集、无法查看备份集信息等异常情况。
  • catalog不绑定某个具体的数据库,但建议为不同的数据库创建独立的catalog文件。
  • yasrman不对catalog进行备份和恢复,用户可以在yasrman非工作期间手动拷贝catalog目录进行备份。
  • catalog备份集元数据信息与数据库系统表元数据信息不会自动同步。若发生过catalog迁移、catalog重建等操作,可能会出现YAS-02505备份指定tag已存在的报错(即与数据库系统表元数据信息中的tag冲突),如需清理冲突TAG可查阅删除备份集

示例

$ yasrman sys/sys@192.168.1.2:1688 -c 'create catalog' -D /home/yashan/catalog

# command-配置config

syntax
configure parameter_name parameter_value

执行本命令将所配置的内容持久化到catalog的config.ini文件。后续执行备份或恢复时,若未显示指定相应配置,将默认调用config.ini文件中的配置。

Note

配置参数命令优先级:backup或restore命令指定的参数 > configure命令配置的参数 > 默认参数。

# PARALLELISM

syntax
configure PARALLELISM integer CLEAR

用于指定每个节点执行多线程备份恢复的并行度,其中integer见开发手册BACKUP DATABASE中PARALLELISM语句描述。

指定为CLEAR时,config.ini文件的PARALLELISM参数值被置为默认值。

示例

$ yasrman sys/sys@192.168.1.2:1688 -c 'configure PARALLELISM 3' -D /home/yashan/catalog

$ yasrman sys/sys@192.168.1.2:1688 -c 'configure PARALLELISM clear' -D /home/yashan/catalog

# COMPRESSION

syntax
configure COMPRESSION ALGORITHM LZ4 ZSTD CLEAR LEVEL LOW MEDIUM HIGH CLEAR

指定生成备份集的压缩算法,ALGORITHM及LEVEL同开发手册BACKUP DATABASE中COMPRESSION语句描述。

将ALGORITHM指定为CLEAR时,config.ini文件的COMPRESSION_ALGORITHM参数值被置为NULL,表示关闭压缩选项。

将LEVEL指定为CLEAR时,config.ini文件的COMPRESSION_LEVEL参数值被置为默认值。

示例

$ yasrman sys/sys@192.168.1.2:1688 -c 'configure COMPRESSION ALGORITHM lz4' -D /home/yashan/catalog
$ yasrman sys/sys@192.168.1.2:1688 -c 'configure COMPRESSION LEVEL HIGH' -D /home/yashan/catalog

$ yasrman sys/sys@192.168.1.2:1688 -c 'configure COMPRESSION ALGORITHM clear' -D /home/yashan/catalog
$ yasrman sys/sys@192.168.1.2:1688 -c 'configure COMPRESSION LEVEL clear' -D /home/yashan/catalog

# SIZE

syntax
configure SECTION SIZE size_clause CLEAR

指定生成备份集的切片大小,size_clause同开发手册BACKUP DATABASE中SECTION SIZE语句描述。

指定为CLEAR时,config.ini文件的SECTION_SIZE参数值被置为默认值。

示例

$ yasrman sys/sys@192.168.1.2:1688 -c 'configure section size 128M' -D /home/yashan/catalog

$ yasrman sys/sys@192.168.1.2:1688 -c 'configure section size clear' -D /home/yashan/catalog

# DSTB_NODES

syntax
configure DSTB_NODES dstb_nodes_file_path

指定分布式集群IP转换的配置文件路径,配置文件格式如下所示:

nodeCount=5
node_id=1-1, node_type=MN, listen_addr=127.0.0.1:11678, din_addr=127.0.0.1:11679, replica_addr=127.0.0.1:11680, data_path='/data/shm/databak/mn-1-1', hostname=host0001
node_id=3-1, node_type=DN, listen_addr=127.0.0.1:11698, din_addr=127.0.0.1:11699, replica_addr=127.0.0.1:11700, data_path='/data/shm/databak/dn-3-1', hostname=host0001
node_id=5-1, node_type=DN, listen_addr=127.0.0.1:11704, din_addr=127.0.0.1:11705, replica_addr=127.0.0.1:11706, data_path='/data/shm/databak/dn-5-1', hostname=host0001
node_id=2-1, node_type=CN, listen_addr=127.0.0.1:11688, din_addr=127.0.0.1:11689, replica_addr=127.0.0.1:11690, data_path='/data/shm/databak/cn-2-1', hostname=host0001
node_id=4-1, node_type=DN, listen_addr=127.0.0.1:11701, din_addr=127.0.0.1:11702, replica_addr=127.0.0.1:11703, data_path='/data/shm/databak/dn-4-1', hostname=host0001

其中首行为分布式所有节点个数,从第二行开始表示每个节点的NODEID和该节点的类型,且配置文件的节点类型、节点ID、节点个数必须和集群备份时保持完全一致。listen_addr字段表示更新后各个节点监听的IP和端口号,din_addr为分布式集群内部通信IP和端口,replica_addr为同一组内节点的主备的通信IP,data_path为新集群部署的$YASDATA_DATA的路径,hostname为集群节点部署的内部服务器地址。

示例

$ yasrman sys/sys@192.168.1.2:1688 -c 'configure dstb_nodes '/home/yashan/catalog/dstb_nodes_file'' -D /home/yashan/catalog

若未发生分布式的节点IP变更,执行以下命令可清理掉节点IP修改配置。

$ yasrman sys/sys@192.168.1.2:1688 -c 'configure dstb_nodes clear' -D /home/yashan/catalog

# DEST

syntax
configure DEST CLIENT SERVER CLEAR

指定备份集的存储位置,CLIENT表示存储到工具端(备份集会保存在yasrman所在服务器),SERVER表示备份到数据库服务器端(备份集会保存在数据库所在服务器)。不指定时默认为SERVER。

指定为CLEAR时,config.ini文件的DEST参数值被置为默认值。

Note

共享集群环境下,若format选项指定了YFS路径,例如:+DG0/bak1,则dest选项必须指定为SERVER。

示例

$ yasrman sys/sys@192.168.1.2:1688 -c 'configure DEST SERVER' -D /home/yashan/catalog

$ yasrman sys/sys@192.168.1.2:1688 -c 'configure DEST clear' -D /home/yashan/catalog

# command-SHOW ALL

syntax
SHOW ALL

执行本命令将列出在config.ini中已经配置的备份参数。但由于此类参数的优先级低于备份恢复语句中的显示指定,本命令的查询结果所示参数可能与实际执行备份时使用的参数不一致。

示例

$ yasrman sys/sys@192.168.1.2:1688 -c 'show all' -D /home/yashan/catalog
+---------------------------+-----------+----------------+
|           NAME            |  DEFAULT  |      VALUE     |
+---------------------------+-----------+----------------+
| PARALLELISM               | 2         | 2              |
| SECTION SIZE              | 134217728 | 134217728      |
| COMPRESSION ALGORITHM     | NONE      | NONE           |
| COMPRESSION LEVEL         | LOW       | LOW            |
| DSTB NODES                | ''        | /home/yashan/catalog/dstb_nodes_file |
+---------------------------+-----------+----------------+

backupCommonSpecifier::=

syntax
COMPRESSION ALGORITHM ZSTD LZ4 LOW MEDIUM HIGH ENCRYPTION AES128 AES192 AES256 SM4 IDENTIFIED BY password FORMAT backup_path PARALLELISM integer SECTION SIZE size_clause DEST server client PARAMS xbsa_parameter

archivelogRangeSpecifier::=

syntax
FROM SCN SCN BETWEEN interger AND UNTIL SCN interger FROM SEQUENCE SEQUENCE BETWEEN interger AND UNTIL SEQUENCE interger THREAD interger FROM TIME TIME BETWEEN date_string AND UNTIL TIME date_string ALL

# command-数据库备份

syntax
BACKUP CLUSTER DATABASE TAG tag_name FULL INCREMENTAL LEVEL integer CUMULATIVE backupCommonSpecifier

# command-归档备份

syntax
BACKUP ARCHIVELOG archivelogRangeSpecifier TAG tag_name backupCommonSpecifier

执行本命令备份前,必须确保所有节点上的数据库为OPEN状态,且已开启归档。

对于启用了HA的分布式数据库,在部署时已打开归档开关,但对于非HA的分布式数据库,默认安装时归档开关为可选项,用户需注意此时应该增加该开关设置,否则后续无法执行备份。

如在初始安装时未增加归档开关设置,在执行备份前,用户需登录至每个节点,将该节点数据库切换至MOUNT状态,打开归档,然后再打开数据库。

# cluster

使用本关键字用于分布式备份,表示对分布式集群中的所有CN节点、DN主节点和MN主节点发起备份。

分布式集群包含多个节点,执行过程中任何一个节点备份出现异常时,所有节点备份都将失败,本命令抛出错误。

# database

使用本关键字表示对单机或者共享集群数据库执行备份。

# archivelog

使用本关键字表示对目标数据库的归档日志文件执行备份(不适用于分布式部署)。

# tag

备份集的唯一标识,用来区分备份集。

同开发手册BACKUP DATABASE中TAG语句定义及描述。

# full

同开发手册BACKUP DATABASE中FULL语句定义及描述。

# incremental level

同开发手册BACKUP DATABASE中INCREMENTAL LEVEL语句定义及描述。

# compression

同开发手册BACKUP DATABASE中COMPRESSION语句定义及描述。

# encryption

同开发手册BACKUP DATABASE中ENCRYPTION语句定义及描述。

# format

同开发手册BACKUP DATABASE中FORMAT语句定义及描述。

当format未指定路径时,采用如下默认路径:

  • 备份在服务器端(DEST SERVER)的备份集默认存储在$YASDB_DATA/backup文件夹下。
  • 备份在工具端(DEST CLIENT)的备份集默认存储在catalog/backup文件夹下。

Note

分布式集群中存在几个节点部署在同一服务器时,FORMAT建议使用相对路径,而不是绝对路径,否则可能出现路径冲突的问题,导致备份失败。

# parallelism

同开发手册BACKUP DATABASE中PARALLELISM语句定义及描述。

# section size

同开发手册BACKUP DATABASE中SECTION SIZE语句定义及描述。

Note

请按照实际数据文件大小选择合适的分片大小,假设当前DB中单个数据文件最大大小为MAXSIZE,建议分片大小应该小于(MAXSIZE/(PARALLELISM*2)),且建议最大不超过4G,其中PARALLELISM为备份指定的并行度,可有效提高备份效率。

# dest

指定备份集的存储位置,CLIENT表示存储到工具端(备份集会保存在yasrman所在服务器),SERVER表示备份到数据库服务器端(备份集会保存在数据库所在服务器)。不指定时默认为SERVER。

# sequence

仅适用于在归档备份语句中指定归档日志的ASN范围。若指定SEQUENCE范围内没有归档文件,则会提示错误码YAS-02544,提示指定范围内不存在符合条件的归档文件。

# scn

仅适用于在归档备份语句中指定归档日志的SCN范围。

# time

仅适用于在归档备份语句中指定归档日志的时间范围。

$ yasrman sys/sys@192.168.1.2:1688 -c "BACKUP ARCHIVELOG TIME BETWEEN '2023-10-28 08:14:01' AND '2023-11-28 11:14:01'  FORMAT 'TIMERANGE' TAG 'TIMERANGE' COMPRESSION;" -D /home/yashan/catalog

Note

若需指定时间范围,时间格式必须保证为yyyy-mm-dd hh24:mi:ss格式,且输入格式必须与上述示例保持一致。

# from

在归档备份语句中,与SCN、TIME、SEQUENCE配合使用指定为归档日志备份或恢复的起点。指定FROM指令备份归档时,备份归档截止点为当前数据库的已存在归档的ASN,若指定起点超过当前数据库的最大ASN,则提示错误码YAS-02541,没有符合条件的归档文件。

# until

在归档备份语句中,与SCN、TIME、SEQUENCE配合使用指定为归档日志备份或恢复的终点。指定UNTIL指令备份归档时,备份归档范围的起点是当前数据库的已存在归档的最小ASN,若指定的UNTIL截止点小于当前数据库的最小ASN,则提示错误码YAS-02541,没有符合条件的归档文件。

Note

  • 对分布式集群备份时,不可指定为CLIENT,即只能备份到数据库所在服务器。
  • 增量备份时,同一基线的备份命令的DEST选项必须与基线保持一致,即同一组增量备份集要么都在工具端,要么都在服务器端,否则恢复时可能找不到基线备份集而报错。
  • 备份时指定的DEST和恢复时指定的DEST建议保持一致。
  • 归档的范围指定方式只能使用其中一种。

示例(单机部署)

$ yasrman sys/sys@192.168.1.2:1688 -c "backup database tag 'full_1' format 'full_bak_1'" -D /home/yashan/catalog

$ yasrman sys/sys@192.168.1.2:1688 -c "backup database incremental level 0 compression encryption aes128 identified by 123456 format 'incr_base' tag 'incr_base' dest server;" -D /home/yashan/catalog

$ yasrman sys/sys@192.168.1.2:1688 -c "backup database incremental level 1 compression algorithm lz4 encryption aes128 identified by 123456 format 'incr_1' tag 'incr_1' dest server;" -D /home/yashan/catalog

$ yasrman sys/sys@192.168.1.2:1688 -c "backup archivelog all tag 'arch_all' format 'arch_all'" -D /home/yashan/catalog

$ yasrman sys/sys@192.168.1.2:1688 -c "backup archivelog sequence between 10 and 20 tag 'sequence_10_20' format 'sequence_10_20'" -D /home/yashan/catalog

Note

共享集群部署中的yasrman备份恢复命令与单机部署中完全一致,且备份的目标节点可以指定任一存活节点。

示例(分布式部署)

$ yasrman sys/sys@192.168.1.2:1688 -c "backup cluster tag 'full_1' format 'full_bak_1'" -D /home/yashan/catalog

$ yasrman sys/sys@192.168.1.2:1688 -c "backup cluster incremental level 0 compression format 'cluster_incr_base' tag 'cluster_incr_base';" -D /home/yashan/catalog

$ yasrman sys/sys@192.168.1.2:1688 -c "backup cluster incremental level 1 compression algorithm zstd format 'cluster_incr_1' tag 'cluster_incr_1';" -D /home/yashan/catalog

# params

该语句用于对接第三方备份软件,指定XBSA接口的配置参数进行远程流式备份。使用该语句时,必须指定备份集的存储位置为工具端(DEST CLIENT),而FORMAT参数将被忽略。分布式部署中无法使用该语句。

格式如下: PARAMS 'XBSA_LIBRARY=xbsa_library_path, TOKEN=token_value, ENV=(key1=val1,key2=val2,...)'

  • xbsa_library_path:XBSA动态链接库的绝对路径,目前仅支持Linux的动态链接库。
  • token_value:BSAInit接口的token入参。
  • keyX, valX: BSAInit接口env入参,所有key-value对的最大总长度要小于4096。

示例(单机部署)

$ yasrman sys/sys@192.168.1.2:1688 -c "backup database tag 'xbsa_full_1' dest client params 'XBSA_LIBRARY=/home/yashan/lib/libxbsa.so, TOKEN=157257815837, ENV=(BSA_SERVICE_HOST=192.168.1.1:1601,BSA_BACKUP_UUID=yashan1234561)'" -D /home/yashan/catalog
$ yasrman sys/sys@192.168.1.2:1688 -c "backup database tag 'xbsa_incr_0' incremental level 0 compression algorithm lz4 dest client params 'XBSA_LIBRARY=/home/yashan/lib/libxbsa.so, TOKEN=157257815837, ENV=(BSA_SERVICE_HOST=192.168.1.1:1601,BSA_BACKUP_UUID=yashan1234562)'" -D /home/yashan/catalog
$ yasrman sys/sys@192.168.1.2:1688 -c "backup database tag 'xbsa_incr_1' incremental level 1 dest client params 'XBSA_LIBRARY=/home/yashan/lib/libxbsa.so, TOKEN=157257815837, ENV=(BSA_SERVICE_HOST=192.168.1.1:1601,BSA_BACKUP_UUID=yashan1234563)'" -D /home/yashan/catalog

$ yasrman sys/sys@192.168.1.2:1688 -c "backup archivelog all tag 'arch_all2' dest client params 'XBSA_LIBRARY=/home/yashan/lib/libxbsa.so, TOKEN=157257815837, ENV=(BSA_SERVICE_HOST=192.168.1.1:1601,BSA_BACKUP_UUID=yashan1234563)'" -D /home/yashan/catalog

Note

必须同时指定DEST CLIENT参数。

FORMAT参数将被忽略。

不能使用分布式集群备份。

# command-整库恢复

syntax
RESTORE CLUSTER DATABASE FROM TAG tag_name DBID database_id UNTIL SCN integer TIME time_string DECRYPTION password PARALLELISM integer PARAMS xbsa_parameter DEST SERVER CLIENT

使用本命令与RESTORE DATABASE语句所执行的操作类似,但使用本命令恢复备份集后会启动当前节点至open状态,分布式部署中还会build备库(若存在)。

执行本命令恢复前,必须确保:

  • 数据库当前版本与产生备份文件集时的版本完全一致。

  • 所有节点上实例的数据文件目录、归档文件目录、bucket目录已清空,并启动至NOMOUNT状态。

    在分布式部署中,可执行yasboot cluster clean --restore使集群环境满足该要求。

    Warn

    请务必执行cluster clean --restore,未带--restore选项的clean命令会完全清除节点上的DATA目录且无法被恢复,如在BACKUP CLUSTER命令中使用了备份集的缺省路径,则位于DATA目录中的备份集也将被清除。

  • 在共享集群部署中,执行恢复时连接的目标节点必须为MASTER ROLE节点(可通过查询视图V$INSTANCE的INSTANCE_ROLE字段确定),否则无法恢复数据库。

# cluster

使用本关键字表示对分布式集群执行恢复。

# database

使用本关键字表示对单机或者共享集群数据库执行恢复。

# command-归档日志恢复

syntax
RESTORE ARCHIVELOG archivelogRangeSpecifier DECRYPTION password PARALLELISM integer PARAMS xbsa_parameter FROM TAG tag_name DEST CLIENT SERVER

# archivelog

使用本关键字表示对数据库归档文件执行恢复。

# from

在归档恢复语句中,与SCN、TIME、SEQUENCE配合使用指定为归档日志恢复的起点。默认的恢复的终点为当前数据库的日志恢复点的上一个归档文件,详细内容参考视图V$DATABASE的RCY_POINT字段中的ASN。

# until

在归档备份语句中,与SCN、TIME、SEQUENCE配合使用指定为归档日志恢复的终点。默认恢复的起点为当前数据库的日志刷盘点ASN,详细内容参考视图V$DATABASE的FLUSH_POINT字段中的ASN。

# tag

指定执行恢复的备份集唯一标识。归档恢复中指定tag即只恢复该备份集中符合条件的归档日志备份文件。

# dest

仅做语法兼容,实际按照CATALOG记录位置灵活恢复。

# dbid

在PITR恢复时,搜索指定数据库ID的备份集。即恢复指定DATABASE_ID的数据库,DATABASE_ID可在V$DATABASE查询,在建库后DATABASE_ID不会发生变化,用来标识唯一的数据库。

# decryption

该语句用于指定备份集恢复时解密,此时需要同时指定解密密码。

# parallelism

该语句用于指定多线程恢复的并行度,该值范围为[1,8],省略时默认为2。

示例(单机、共享集群部署)

$ yasrman sys/sys@192.168.1.2:1688 -c "restore database from tag 'full_1'" -D /home/yashan/catalog

$ yasrman sys/sys@192.168.1.2:1688 -c "restore archivelog all " -D /home/yashan/catalog

$ yasrman sys/sys@192.168.1.2:1688 -c "restore archivelog sequence between 10 and 20" -D /home/yashan/catalog

示例(分布式部署)

$ yasrman sys/sys@192.168.1.2:1688 -c "restore cluster from tag 'full_1'" -D /home/yashan/catalog

# params

该语句用于进行流式备份集的恢复,指定XBSA接口的配置参数。使用该语句时,必须指定备份集的存储位置为工具端(DEST CLIENT)。分布式部署中无法使用该语句。

格式如下: 'XBSA_LIBRARY=xbsa_library_path, TOKEN=token_value, ENV=(key1=val1,key2=val2,...)'

  • xbsa_library_path:XBSA动态链接库的绝对路径,目前仅支持Linux的动态链接库。
  • token_value:BSAInit接口的token入参。
  • keyX, valX: BSAInit接口env入参,所有key-value对的最大总长度要小于4096。

示例(单机部署)

$ yasrman sys/sys@192.168.1.2:1688 -c "restore database from tag 'xbsa_full_1' dest client params 'XBSA_LIBRARY=/home/yashan/lib/libxbsa.so, TOKEN=157257815837, ENV=(BSA_SERVICE_HOST=192.168.1.1:1601,BSA_BACKUP_UUID=yashan1234561)'" -D /home/yashan/catalog
$ yasrman sys/sys@192.168.1.2:1688 -c "restore database from tag 'xbsa_incr_0' dest client params 'XBSA_LIBRARY=/home/yashan/lib/libxbsa.so, TOKEN=157257815837, ENV=(BSA_SERVICE_HOST=192.168.1.1:1601,BSA_BACKUP_UUID=yashan1234562)'" -D /home/yashan/catalog

$ yasrman sys/sys@192.168.1.2:1688 -c "restore archivelog all from tag 'arch_all2' dest client params 'XBSA_LIBRARY=/home/yashan/lib/libxbsa.so, TOKEN=157257815837, ENV=(BSA_SERVICE_HOST=192.168.1.1:1601,BSA_BACKUP_UUID=yashan1234562)'" -D /home/yashan/catalog

# pitr恢复

UNTIL选项用于PITR恢复。当使用PITR恢复时,可以指定数据库备份集,也可以指定DBID自动搜索时间最近的数据库备份集。如果不指定TAG和DBID,将搜索时间最近目标点的任意备份集。

执行PITR恢复时,首先恢复数据库备份集,然后尝试恢复目标范围内的归档文件备份,最后尝试复用数据库本地的归档文件,尽可能恢复到目标点。因此如果目标点以内的归档文件全部在yasrman备份,或者在数据库本地都存在,都可以恢复到目标点。

PITR不适用于分布式部署。

# until time

该语句用于将数据库恢复到此指定的时间点,即PITR恢复,time_string必须是时间格式的字符串,格式需与TIMESTAMP_FORMAT参数定义的格式一致。

指定的时间点必须在备份集生成时间之后。最终恢复到的时间,可能比目标小,但是误差在1s以内。

# until scn

该语句用于将数据库恢复到此指定的SCN号,即PITR恢复。指定的SCN号必须大于备份集中记录的SCN号。

示例(单机、共享集群部署)

-- 指定时间戳和数据库备份集
$ yasrman sys/sys@192.168.1.2:1688 -c "restore database from tag 'full_1' until time '2023-11-13'" -D /home/yashan/catalog

-- 指定时间戳和数据库ID
$ yasrman sys/sys@192.168.1.2:1688 -c "restore database dbid 12573483 until time '2023-11-13 18:55:00'" -D /home/yashan/catalog

-- 仅指定时间戳
$ yasrman sys/sys@192.168.1.2:1688 -c "restore database until time '2023-11-13 18:54:32:657892'" -D /home/yashan/catalog

-- 指定SCN
$ yasrman sys/sys@192.168.1.2:1688 -c "restore database from tag 'full_1' until scn 499833430256541696" -D /home/yashan/catalog

$ yasrman sys/sys@192.168.1.2:1688 -c "restore database until scn 499833430256541696" -D /home/yashan/catalog

Note

  • 最小时间点是保证数据库恢复到一致性的时间点,该时间点对应与备份完datafile,开始备份归档时的SCN对应的时间点,略小于备份完成时间。
  • 如果归档日志不够,或指定的时间点(或SCN)过大,回放完毕后也达不到指定的时间点,数据库会报错,用户可以查询V$DATABASE的current_scn来查看实际回放进度。如果有可用的归档日志副本,可以注册归档,重新执行restore操作。如果没有多余的归档,当前时间点是唯一的选择,继续执行resetlogs操作。
  • 当有多个数据库在同一个catalog备份时,执行PITR建议使用DBID区分不同数据库。

# command-备份集管理

# 查看备份集

syntax
LIST BACKUP TAG tag_name DETAIL FORMAT XML NODE INFO TO nodeinfo.txt DATABASE CONFIGURE PARAMETER

通过指定备份集别名查看所有节点上的该备份集信息,不指定TAG时将展示所有节点上的所有备份集。

# detail

指定DETAIL列出备份集详细信息,默认以XML格式显示。

# node info

列出分布式备份的节点部署详细信息输出至指定的临时文件nodeinfo.txt中,具体表现内容如下示例。

node_id=1-1, node_type=MN, role=PRIMARY, endpoint=1, data_path=/data/shm/data/mn-1-1
node_id=2-1, node_type=CN, role=PRIMARY, endpoint=2, data_path=/data/shm/data/cn-2-1
node_id=3-1, node_type=DN, role=PRIMARY, endpoint=3, data_path=/data/shm/data/dn-3-1
node_id=4-1, node_type=DN, role=PRIMARY, endpoint=4, data_path=/data/shm/data/dn-4-1
node_id=5-1, node_type=DN, role=PRIMARY, endpoint=5, data_path=/data/shm/data/dn-5-1

# database configure parameter

列出分布式备份集各个节点的配置文件的备份信息,具体表现内容如下示例。

  backupset ID: 0, node 1-1 
    configure backup path: /home/yashan/catalog/backup/bak1/MN-1-1_cfg.bak 
  backupset ID: 1, node 2-1 
    configure backup path: /home/yashan/catalog/backup/bak1/CN-2-1_cfg.bak 
  backupset ID: 2, node 3-1 
    configure backup path: /home/yashan/catalog/backup/bak1/DN-3-1_cfg.bak 
  backupset ID: 3, node 4-1 
    configure backup path: /home/yashan/catalog/backup/bak1/DN-4-1_cfg.bak 
  backupset ID: 4, node 5-1 
    configure backup path: /home/yashan/catalog/backup/bak1/DN-5-1_cfg.bak 

示例

$ yasrman sys/sys@192.168.1.2:1688 -c "list backup tag 'full_1'" -D /home/yashan/catalog
Group: type DB, tag: full_1, format: /home/yashan/catalog/backup/full_bak_1, connect url: 192.168.1.2:1688, nodeCount: 1, distribution: FALSE, isClient: TRUE, offset: 0
    backup path: /home/yashan/catalog/backup/full_bak_1
    instance: 0, archive range  sequence: 14-14 
                   scn: 524931827025387520-524931831243571200 

$ yasrman sys/sys@192.168.1.2:1688 -c "list backup tag 'arch_all'" -D /home/yashan/catalog
Group: type ARCHIVE, tag: arch_all, format: /data/regress/ha_regress/ha_home/catalog/backup/arch_all, connect url: 192.168.1.2:1688, nodeCount: 1, distribution: FALSE, isClient: TRUE, offset: 0
    backup path: /data/regress/ha_regress/ha_home/catalog/backup/arch_all
     instance: 0, archive range  sequence: 21-33 
                   scn: 524931839394082816-524931866077937664 

Note

list命令仅列出指定的catalog文件中存在的备份集元数据信息。由于catalog不会与数据库自动同步备份元信息,因此备份集元数据信息可能与数据库中DBA_BACKUP_SET视图内容不完全一致。

不指定DETAIL字段只列出备份概要信息,指定DETAIL字段默认以XML格式输出备份集详细内容。

以下为XML格式输出的备份集详细信息示例以及每个字段的含义说明。

<?xml version="1.0" encoding="UTF-8"?>
<backupsets>
	<group>
		<backup_type>DB_INCR</backup_type> # 备份类型,此处表示数据库增量备份
		<backup_tag>bak_incr1</backup_tag> # 备份集唯一标识
		<backup_path>/home/yashan/backup/bak_incr1</backup_path>  # 备份集路径
		<connect_url>192.168.1.2:1688</connect_url> # 执行备份的URL
		<node_count>1</node_count> # 分布式备份集里的节点个数
		<is_distribution>FALSE</is_distribution> # 是否为分布式数据库备份集
		<is_rman_side>FALSE</is_rman_side> # 是否在yasrman所在的服务器保存的备份集
		<dbinfo>
			<database_create_time>2024-01-30 17:34:39</database_create_time> # 数据库创建时间
			<database_id>3441381755</database_id> # 数据库唯一ID
			<restore_time>NULL</restore_time> # 数据库最近一次restore的时间,为NULL表示数据库没有执行过restore
			<instance_count>1</instance_count> # 数据库实例个数
			<instance_map>1</instance_map> # 数据库备份时,活跃实例的map
		</dbinfo>
		<backupset>
			<start_time>2024-01-30 17:35:31</start_time> # 备份开始时间
			<complete_time>2024-01-30 17:35:32</complete_time> # 备份结束时间
			<backup_path>/home/yashan/backup/bak_incr1</backup_path> # 备份集路径
			<base_backup_path>/home/yashan/backup/bak_incr0</base_backup_path> # 对于增量备份集,该值表示基线备份集的路径
			<base_lsn>6028</base_lsn> # 增量备份集的基线lsn
			<backup_type>DB_INCR</backup_type> # 备份类型
			<backup_level>1</backup_level> # 增量备份集的level
			<file_count>12</file_count> # 备份的文件总数
			<recover_begin>0-8-4-3275</recover_begin> # 备份集的回放开始点
			<flush_point>0-8-4-3275</flush_point> # 备份集至少要回放到日志点
			<reset_point>0-0-0-0</reset_point> # 执行resetlogs对应的日志点,为0表示没有做过resetlogs操作
			<trunc_lsn>6032</trunc_lsn> # 截断lsn,表示小于该lsn的所有数据页面都已经在备份集备份
			<flush_lsn>6032</flush_lsn> # 刷盘lsn,表示备份完数据文件后,数据库的lsn
			<consistence_scn>527444098809229312</consistence_scn> # 一致性scn,表示改备份集要回放redo或归档日志到该scn之后,数据库才能保证一致性
			<base_lfn>3271</base_lfn> # 增量备份集的基线lfn
			<encryption_algorithm>AES128</encryption_algorithm> # 加密算法
			<input_bytes>411283456</input_bytes> # 总的读IO大小
			<output_bytes>16792576</output_bytes> # 总的写IO大小
			<backup_tag>bak_incr1</backup_tag> # 备份集唯一标识
			<thread_id>0</thread_id> # 备份实例的ID
			<is_base_tag_incr_bak>FALSE</is_base_tag_incr_bak> # 是否为手动指定基线备份集的增量备份
			<instance>
				<instance_id>1</instance_id> # 实例ID
				<sequence_start>8</sequence_start> # 该实例第一个归档备份文件的asn
				<sequence_end>8</sequence_end> # 该实例最后一个归档备份文件的asn
			</instance>
			<scn_start>527444076943417344</scn_start> # 备份集所有归档里最小的scn
			<scn_end>527444098809229312</scn_end> # 备份集所有归档里最大的scn
			<create_time>2024-04-08 16:22:23</create_time> # 备份目标数据库的建库时间
			<database_version>571</database_version> # 备份目标数据库的版本
			<spc_import_scn>0</spc_import_scn> # 若发生过表空间迁移,该SCN更新为所有新迁移表空间的最大SCN
			<spc_import_lsn>0</spc_import_lsn> # 若发生过表空间迁移,该LSN更新为所有新迁移表空间的最大LSN
		</backupset>
	</group>
</backupsets>

# 删除备份集

syntax
DELETE BACKUPSET IF EXISTS TAG tag_name

删除指定TAG对应的备份集,本操作的前提是分布式集群或单机主库处于正常运行状态。

指定的tag_name不存在时,本命令报错。

指定IF EXISTS表示若备份集存在,则尝试删除,不论tag_name是否存在都返回删除成功。

示例

$ yasrman sys/sys@192.168.1.2:1688 -c "DELETE BACKUPSET tag 'full_1'" -D /home/yashan/catalog

Note

如果删除过程中断,可能出现部分节点的备份集已删除,但是剩余节点备份集和TAG还存在的情况,此时可以通过重新执行删除命令,继续删除。

如果catalog中存在备份集元信息,但是数据库中没有记录元信息,不加IF EXISTS删除备份集可能报错,请使用IF EXISTS来删除备份集。

仅使用该语句才可同时删除catalog和系统表中的备份集信息。

# 备份集校验

syntax
VALIDATE BACKUPSET TAG tag_name backupset_path

可以指定校验的备份集TAG,该tag必须存在于catalog中,且必须本地可访问。或者直接指定可访问的备份集绝对路径。

示例

$ yasrman -c "VALIDATE BACKUPSET tag 'full_1'" -D /home/yashan/catalog

$ yasrman -c "VALIDATE BACKUPSET '/home/yashan/full_1'" -D /home/yashan/catalog

$ yasrman -c "VALIDATE BACKUPSET '+DG0/bak1'" -D /home/yashan/catalog

Note: 校验命令无需与主机建立连接,故无需指定IP信息。必须指定catalog路径。 若需要校验共享存储内的备份集文件,则在执行前需要导入环境变量YASCS_HOME和YASFS_HOME,否则无法访问共享存储文件。