#yasrman使用指导
# 查看帮助
使用yasrman -h命令可查看帮助信息。
$ yasrman -h
# 命令格式
yasrman <user>/<password>@<host>:<port> -c <command> [-D <catalog_path>]
user/password/host/port
指向CN节点(分布式部署)或者主机节点(单机部署)的连接信息,支持远程TCP连接及本地UDS连接,IP协议支持IPV4和IPV6,user需为拥有DBA角色的有效数据库用户。
Note:
仅BACKUP、RESTORE、DELETE语句会与DB发生数据交互的语句需DBA角色才可执行。 用户名,密码和IP仅在上述三种语法中才会校验其连接正确性,其他语句不与数据库交互,不会进行校验,只是为了保持命令格式统一。
command
具体的命令语句,见下文描述。
catalog_path
指定catalog路径,必须指定为绝对路径。-D命令省略时,catalog_path默认为当前路径。
当command为CREATE CATALOG时,catalog_path必须为一个新路径用于创建;当command为其他时,catalog_path必须为一个已存在的catalog路径。
# command-创建catalog
本命令将根据-D选项指定的路径和名称创建一个catalog文件夹,未指定时在当前路径下创建一个名称为catalog的文件夹。若文件夹已存在,本命令报错。
首次使用yasrman进行备份恢复前,必须使用本命令创建catalog。
Note:
catalog文件文件包含记录备份集元数据信息的二进制文件,不可手动删除。若发生删除或者更换catalog路径等异常操作,可能导致无法使用yasrman恢复其包含的备份集、无法查看备份集信息等异常情况。 catalog并不绑定某个具体的数据库,但是建议为不同的数据库创建独立的catalog文件。 yasrman不支持catalog的备份和恢复,用户可以手动拷贝catalog目录进行备份,拷贝catalog时需要保证yasrman没有工作。 catalog备份集元数据信息与DB的系统表元数据信息不会自动同步,若发生过catalog迁移、重建等操作可能出现备份指定tag已存在报错。
示例
$ yasrman sys/sys@192.168.1.2:1688 -c 'create catalog' -D /home/yashan/catalog
# command-配置config
执行本命令将所配置的内容持久化到catalog的config.ini文件中,在后续的备份和恢复过程中,如果没有显示指定配置,将按照config.ini里的配置。
Note:
配置参数命令优先级:backup或restore命令指定的参数 > configure命令配置的参数 > 默认参数。
# PARALLELISM
指定每个节点执行多线程备份恢复的并行度,其中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
指定生成备份集的压缩算法,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
指定生成备份集的切片大小,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
# DEST
指定备份集的存储位置,client表示存储到工具端(备份集会保存在yasrman所在服务器),server表示备份到数据库主机端(备份集会保存在数据库所在服务器)。不指定时默认为server。
指定CLEAR时,config.ini文件的DEST参数值被置为默认值。
示例
$ 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
执行本命令将列出在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 |
| DEST | SERVER | SERVER |
+---------------------------+-----------+----------------+
# command-备份
成功执行本命令完成备份的前提是,所有节点上的数据库为OPEN状态,且已开启归档。
对于启用了HA的分布式数据库,在部署时已打开归档开关,但对于非HA的分布式数据库,默认安装时归档开关为可选项,用户需注意此时应该增加该开关设置,否则后续无法执行备份。
如在初始安装时未增加归档开关设置,在执行备份前,用户需登录至每一节点,将该节点数据库切换至MOUNT状态,打开归档,然后再打开数据库。
# CLUSTER
使用本关键字用于分布式备份,表示对分布式集群中的所有CN节点、DN主节点和MN主节点发起备份。
分布式集群包含多个节点,执行过程中任何一个节点备份出现异常时,所有节点备份都将失败,本命令抛出错误。
# DATABASE
使用本关键字表示对单机数据库发起备份。
# 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语句定义及描述。
# DEST
指定备份集的存储位置,client表示存储到工具端(备份集会保存在yasrman所在服务器),server表示备份到数据库主机端(备份集会保存在数据库所在服务器)。不指定时默认为server。
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 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接口的配置参数,进行远程流式备份。格式如下: 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
Note:
必须同时指定DEST CLIENT参数。 FORMAT参数将被忽略。 不支持分布式集群备份。
# command-恢复
使用本命令与RESTORE DATABASE语句所执行操作类似,但是和基于SQL的restore命令不同的是,在恢复备份集后,yasrman会继续open主机,如存在备机会build备机,所以本命令完成后整个数据库包括HA集群即可正常使用。
成功执行本命令完成恢复的前提是,所有节点上实例的数据文件目录、归档文件目录、bucket目录已清空,并启动至NOMOUNT状态。
对于分布式集群,可使用yasboot clean的--restore选项完成上述前提要求,具体请参考yasboot中cluster clean命令描述。
Warn:
请务必使用cluster clean --restore,而非cluster clean,未带--restore选项的clean命令将会完全清除节点上的DATA目录且无法被恢复,如在BACKUP CLUSTER命令中使用了备份集的缺省路径,则位于DATA目录中的备份集也将被清除。
# CLUSTER
使用本关键字表示对分布式集群执行恢复。
# DATABASE
使用本关键字表示对单机数据库执行恢复。
# TAG
指定执行恢复的备份集唯一标识。
# 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 cluster from tag 'full_1'" -D /home/yashan/catalog
# PARAMS
该语句用于进行流式备份集的恢复,指定XBSA接口的配置参数,格式如下: '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
Note:
必须指定DEST CLIENT参数。 不支持分布式集群备份。
# UNTIL TIME
该语句用于将数据库恢复到此指定的时间点,time_string必须是时间格式的字符串, 格式需与TIMESTAMP_FORMAT参数定义的格式一致。
指定的时间点必须在备份集生成时间之后。
# UNTIL SCN
该语句用于将数据库恢复到此指定的SCN号。指定的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
$ yasrman sys/sys@192.168.1.2:1688 -c "restore database from tag 'full_1' until time '2023-11-13 18:55:00'" -D /home/yashan/catalog
$ yasrman sys/sys@192.168.1.2:1688 -c "restore database from tag 'full_1' 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
Note:
- 最小时间点是保证数据库恢复到一致性的时间点,该时间点对应与备份完datafile,开始备份归档时的SCN对应的时间点,略小于备份完成时间。
- 如果归档日志不够,或者指定的时间点(或SCN)过大,回放完毕后也达不到指定的时间点,数据库会报错,用户可以查询V$DATABASE的current_scn来查看实际回放进度。如果有可用的归档日志副本,可以注册归档,重新执行restore操作。如果没有多余的归档,当前时间点是唯一的选择,继续执行resetlogs操作。
- 分布式不支持指定时间点恢复。
# command-备份集管理
# 查看备份集
通过指定备份集别名查看所有节点上的该备份集信息,不指定TAG时将展示所有节点上的所有备份集。
示例
$ yasrman sys/sys@192.168.1.2:1688 -c "list backup tag 'full_1'" -D /home/yashan/catalog
Group: 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
Note:
list命令仅列出指定的catalog文件中存在的备份集元数据信息,因为catalog不会与数据库自动同步备份元信息,可能与数据库中DBA_BACKUP_SET视图内容不同。
# 删除备份集
删除指定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和系统表中的备份集信息。