概述
OceanBase 数据库 V4.1.0 版本支持 OSS、NFS 两种备份介质,提供了备份、恢复、清理三大功能。不管是社区版还是企业版,备份恢复功能应该是一致的。
由于企业版 4.1 没有对外发布,所以本文分享的是 社区版 4.1 的备份恢复实践。
跟 3.2 版本相比, 4.1 版本在备份方面最大的变化就是支持租户级别的物理备份。备份策略依然是支持数据全量备份、增量备份和事务日志备份(即归档)。备份目录有些变化,这个以后再专门分析。
本次实践是将一个单副本架构的 OB 社区版集群里的业务租户备份,并还原到历史时间点。新租户就在当前 OB 集群中(也可以在其他独立的 OB 集群中)。 OB 租户还原不支持覆盖形式恢复,可以恢复出新名字的租户。如果需要替换原租户,可以通过租户重命名的方式。
备份介质准备
OB 的备份目前支持 NFS 和 云盘 OSS 。这个参考文章:OB 企业版 3.2 备份恢复实践 (qq.com) ,这里就不再重复了。
OB 集群手动备份
本文演示的是 OB 社区版 5.7.25-OceanBase_CE-v4.1.0.0 。
OB 4.1 版本支持租户级别的备份,所以备份参数设置也改为租户级别了。
此外,加上 4.1 版本支持日志流(Log stream)设计,租户的事务日志也是独立的。所以事务日志备份也要按租户粒度开启。
配置 OB 事务日志备份参数
l 配置租户备份目录
备份目录依然是通过参数 LOG_ARCHIVE_DEST 配置。
如果是在 SYS 租户里设置业务租户的备份目录,需要加上生效范围 TENANT = obmysql 。
[root@server066 ~]$mysql -h10.0.0.66 -uroot@sys#obcedemo -P2883 -paaAA11__ -c -A oceanbase
(root@10.0.0.66:2883) [oceanbase]> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///backup/obbackup/' TENANT = obmysql;
ERROR 9080 (HY000): the format file does not exist under the destination
(root@10.0.0.66:2883) [oceanbase]> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///backup/obcebackup/obmysql' TENANT = obmysql;
Query OK, 0 rows affected (0.55 sec)
如果是在业务租户里,就可以直接设置。
[root@server066 ~]$mysql -h10.0.0.66 -uroot@obmysql#obcedemo -P2883 -paaAA11__ -c -A test
ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///backup/obcebackup/obmysql' ;
上面第一次设置备份目录,报错信息官网有解释,这个设计跟之前的备份逻辑有所变化。目录不为空时会检查是否有 Format 文件(设置过备份目录为当前目录)。
ERROR 9080 (HY000) : the format file does not exist under the destination
OceanBase 错误码:9080
错误原因:备份目的端的 Format 文件不存在。原因如下:
目的端在参与备份任务前,Format 文件被移除。
设置的目的端非空,且目的端下没有 Format 文件。
解决方式:检查备份目的端的 Format 文件是否存在,如果不存在,则此目的端已失效。设置新的目的端时,需要将目的端的文件都清空后,再加入备份。
设置后,OB 会在备份目录生成一个 format 文件,用于校验备份目录的有效性。
[root@server066 obmysql]$ls -lrth /backup/obcebackup/obmysql/
total 8.0K
drwx------. 2 nfsnobody nfsnobody 4.0K Jun 13 2023 check_file
-rw-------. 1 nfsnobody nfsnobody 141 Jun 13 2023 format.obbaks
LOG_ARCHIVE_DEST 有多个属性,其中 LOCATION 是必填的,指定备份目录。 BINDING 属性是可选的,默认值是 Optional 模式,另外一种值是 Mandatory 模式。选哪个取决于在事务日志备份速度赶不上事务日志生成速度时,是备份重要还是业务可用性重要。如果是备份重要,OB 会减慢或者挂起租户的事务;如果是业务可用性重要,事务日志可能被回收导致日志归档断流,从而导致备份链路设计出现缺口,影响恢复的能力。
l 配置归档目的端状态
通常第一次设置归档目的端后,状态都是 ENABLE 状态。后期也可以通过参数 LOG_ARCHIVE_DEST_STATE 暂停这个归档目录。这个应该是参考 ORACLE 设计。也许将来还会支持多个归档路径。
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE='DEFER';
l 查看日志归档参数。
租户日志归档参数查看租户下的视图。
SELECT * FROM DBA_OB_ARCHIVE_DEST ;
DEST_NO | NAME | VALUE |
0 | binding | OPTIONAL |
0 | dest_id | 1004 |
0 | lag_target | 2m |
0 | path | file:///backup/obcebackup/obmysql |
0 | piece_switch_interval | 1d |
0 | state | ENABLE |
在 SYS 租户则查看视图 CDB_OB_ARCHIVE_DEST 。
发起事务日志备份(归档)
可以在 SYS 租户里发起所有租户的事务日志归档,也可以指定某个租户的事务日志归档。该命令对后期创建的租户不会生效(即使租户删除重建)。
ALTER SYSTEM ARCHIVELOG TENANT = obmysql ;
也可以登录业务租户发起该租户的事务日志归档。
ALTER SYSTEM ARCHIVELOG ;
l 查看租户的事务日志归档状态
查看租户视图 DBA_OB_TENANTS 。
SELECT TENANT_ID , TENANT_NAME , TENANT_TYPE , COMPATIBILITY_MODE ,status, IN_RECYCLEBIN , TENANT_ROLE , LOG_MODE FROM DBA_OB_TENANTS t;
业务租户结果:
业务租户结果:
TENANT_ID | TENANT_NAME | TENANT_TYPE | COMPATIBILITY_MODE | status | TENANT_ROLE | LOG_MODE |
1,004 | obmysql | USER | MYSQL | NORMAL | PRIMARY | ARCHIVELOG |
SYS 租户结果:
TENANT_ID | TENANT_NAME | TENANT_TYPE | COMPATIBILITY_MODE | status | TENANT_ROLE | LOG_MODE |
1 | sys | SYS | MYSQL | NORMAL | PRIMARY | NOARCHIVELOG |
1,001 | META$1002 | META | MYSQL | NORMAL | PRIMARY | NOARCHIVELOG |
1,002 | ocp | USER | MYSQL | NORMAL | PRIMARY | NOARCHIVELOG |
1,003 | META$1004 | META | MYSQL | NORMAL | PRIMARY | NOARCHIVELOG |
1,004 | obmysql | USER | MYSQL | NORMAL | PRIMARY | ARCHIVELOG |
l 关闭事务日志归档
关闭事务日志归档用 NOARCHIVELOG 命令,跟前面一样,可以在 SYS 租户和业务租户执行。
ALTER SYSTEM NOARCHIVELOG TENANT = obmysql ;
l 查看事务日志归档文件 Pieces 信息。
在 SYS 租户下查看视图 CDB_OB_ARCHIVELOG_PIECE_FILES , 在业务租户下查看视图 DBA_OB_ARCHIVELOG_PIECE_FILES 。
SELECT dest_id, ROUND_ID ,PIECE_ID ,INCARNATION ,DEST_NO ,status, COMPRESSION ,INPUT_BYTES_DISPLAY ,OUTPUT_BYTES_DISPLAY ,COMPRESSION_RATIO ,FILE_STATUS ,PATH
FROM oceanbase.DBA_OB_ARCHIVELOG_PIECE_FILES ;
dest_id | ROUND_ID | PIECE_ID | INCARNATION | DEST_NO | status | COMPRESSION | INPUT_BYTES_DISPLAY | OUTPUT_BYTES_DISPLAY | COMPRESSION_RATIO | FILE_STATUS | PATH |
1,004 | 1 | 1 | 1 | 0 | ACTIVE | none | 57.72MB | 57.72MB | 1 | AVAILABLE | file:///backup/obcebackup/obmysql |
SELECT TENANT_ID ,DEST_ID ,ROUND_ID ,PIECE_ID ,INCARNATION ,DEST_no,STATUS ,COMPRESSION ,INPUT_BYTES_DISPLAY ,OUTPUT_BYTES_DISPLAY ,COMPRESSION_RATIO ,FILE_STATUS ,path
FROM oceanbase.CDB_OB_ARCHIVELOG_PIECE_FILES ;
TENANT_ID | DEST_ID | ROUND_ID | PIECE_ID | INCARNATION | DEST_no | STATUS | COMPRESSION | INPUT_BYTES_DISPLAY | OUTPUT_BYTES_DISPLAY | COMPRESSION_RATIO | FILE_STATUS | path |
1,004 | 1,004 | 1 | 1 | 1 | 0 | ACTIVE | none | 58.63MB | 58.63MB | 1 | AVAILABLE | file:///backup/obcebackup/obmysql |
l 查看事务日志归档进度信息。
在 SYS 租户下查看视图 CDB_OB_ARCHIVE_LOG , 在业务租户下查看视图 DBA_OB_ARCHIVE_LOG 。
SELECT DEST_ID ,ROUND_ID ,INCARNATION ,DEST_NO ,STATUS ,BASE_PIECE_ID ,USED_PIECE_ID ,INPUT_BYTES_DISPLAY ,OUTPUT_BYTES_DISPLAY ,COMPRESSION ,COMPRESSION_RATIO ,COMMENT , `PATH`
FROM oceanbase.DBA_OB_ARCHIVELOG ;
DEST_ID | ROUND_ID | INCARNATION | DEST_NO | STATUS | BASE_PIECE_ID | USED_PIECE_ID | INPUT_BYTES_DISPLAY | OUTPUT_BYTES_DISPLAY | COMPRESSION | COMPRESSION_RATIO | COMMENT | PATH |
1,004 | 1 | 1 | 0 | DOING | 1 | 1 | 59.66MB | 59.66MB | none | 1 | file:///backup/obcebackup/obmysql |
SELECT TENANT_ID ,DEST_ID ,ROUND_ID ,INCARNATION ,DEST_NO ,STATUS ,BASE_PIECE_ID ,USED_PIECE_ID ,INPUT_BYTES_DISPLAY ,OUTPUT_BYTES_DISPLAY ,COMPRESSION ,COMPRESSION_RATIO ,COMMENT ,`PATH`
FROM oceanbase.CDB_OB_ARCHIVELOG l ;
TENANT_ID | DEST_ID | ROUND_ID | INCARNATION | DEST_NO | STATUS | BASE_PIECE_ID | USED_PIECE_ID | INPUT_BYTES_DISPLAY | OUTPUT_BYTES_DISPLAY | COMPRESSION | COMPRESSION_RATIO | COMMENT | PATH |
1,004 | 1,004 | 1 | 1 | 0 | DOING | 1 | 1 | 60.19MB | 60.19MB | none | 1 | file:///backup/obcebackup/obmysql |
l 查看事务日志归档历史
在 SYS 租户查看视图 CDB_OB_ARCHIVELOG_SUMMARY ,在业务租户查看视图 DBA_OB_ARCHIVELOG_SUMMARY 。
这个字段跟上面一样,不重复展示了。
发起数据备份
l 设置数据备份目录。
数据备份目录参数是 DATA_BACKUP_DEST ,也支持在 SYS 租户和业务租户下设置两种方法。
下面在业务租户下设置。
ALTER SYSTEM SET DATA_BACKUP_DEST = 'file:///backup/obcebackup/obmysql_data';
(root@10.0.0.66:2883) [test]> ALTER SYSTEM SET DATA_BACKUP_DEST = 'file:///backup/obcebackup/obmysql_data';
ERROR 4009 (58030): IO error
(root@10.0.0.66:2883) [test]> ALTER SYSTEM SET DATA_BACKUP_DEST = 'file:///backup/obcebackup/obmysql_data';
Query OK, 0 rows affected (0.12 sec)
第一次报错的原因是新增的目录没有读写权限。需要在 NFS Server 上将新增目录 owner 设置为 nfsnobody 。
l 查看数据备份目录信息
在 SYS 租户可以查看视图 CDB_OB_BACKUP_PARAMETER ,在业务租户查看视图 DBA_OB_BACKUP_PARAMETER 。
SELECT * FROM oceanbase.CDB_OB_BACKUP_PARAMETER ;
TENANT_ID | NAME | VALUE |
1,004 | data_backup_dest | file:///backup/obcebackup/obmysql_data |
这两个视图字段略显单薄,后面估计还会进一步丰富。
l 发起全量数据备份
首先全量数据备份之前要自己确认事务日志归档已经打开。
备份之前也可以在会话级别设置密码。
SET ENCRYPTION ON IDENTIFIED BY 'aaAA11__' ONLY;
全量备份可以在 SYS 租户里发起,指定所有租户或者某个租户。也可以在业务租户里发起。这里我选用先在业务租户下发起备份。
ALTER SYSTEM BACKUP DATABASE;
再到 SYS 租户发起一次全量备份和增量备份。
mysql -h10.0.0.66 -uroot@sys#obcedemo -P2883 -paaAA11__ -c -A oceanbase
ALTER SYSTEM BACKUP TENANT = obmysql ;
ALTER SYSTEM BACKUP INCREMENTAL TENANT = obmysql ;
l 查看备份进度和历史。
在 SYS 租户查看视图 CDB_OB_BACKUP_JOBS 和 CDB_OB_BACKUP_TASKS , 在业务租户查看视图 DBA_OB_BACKUP_JOBS 和 DBA_OB_BACKUP_TASKS 。这些视图也有响应的历史视图。
这里我在业务租户查询。
SELECT jh.JOB_ID ,jh.INCARNATION ,jh.BACKUP_SET_ID ,jh.INITIATOR_TENANT_ID ,jh.EXECUTOR_TENANT_ID , jh.PLUS_ARCHIVELOG , jh.BACKUP_TYPE , jh.JOB_LEVEL , jh.ENCRYPTION_MODE ,jh.START_TIMESTAMP ,jh.END_TIMESTAMP , jh.STATUS , jh.`RESULT` , jh.COMMENT
, th.task_ID, th.INPUT_BYTES , th.OUTPUT_BYTES , th.`RESULT` , th.`PATH`
FROM DBA_OB_BACKUP_JOBS jh, DBA_OB_BACKUP_TASKS th
WHERE jh.JOB_ID =th.JOB_ID AND jh.BACKUP_SET_ID = th.BACKUP_SET_ID
;
SELECT jh.JOB_ID ,jh.INCARNATION ,jh.BACKUP_SET_ID ,jh.INITIATOR_TENANT_ID ,jh.EXECUTOR_TENANT_ID , jh.PLUS_ARCHIVELOG , jh.BACKUP_TYPE , jh.JOB_LEVEL , jh.ENCRYPTION_MODE ,jh.START_TIMESTAMP ,jh.END_TIMESTAMP , jh.STATUS , jh.`RESULT` , jh.COMMENT
, th.task_ID, th.INPUT_BYTES , th.OUTPUT_BYTES , th.`RESULT` , th.`PATH`
FROM DBA_OB_BACKUP_JOB_HISTORY jh, DBA_OB_BACKUP_TASK_HISTORY th
WHERE jh.JOB_ID =th.JOB_ID AND jh.BACKUP_SET_ID = th.BACKUP_SET_ID
;
JOB_ID | INCARNATION | BACKUP_SET_ID | INITIATOR_TENANT_ID | EXECUTOR_TENANT_ID | PLUS_ARCHIVELOG | BACKUP_TYPE | JOB_LEVEL | ENCRYPTION_MODE | START_TIMESTAMP | END_TIMESTAMP | STATUS | RESULT | COMMENT | task_ID | INPUT_BYTES | OUTPUT_BYTES | RESULT | PATH |
1 | 1 | 1 | 1,004 | 1004 | OFF | FULL | USER_TENANT | PASSWORD | 2023-06-13 11:05:15.516 | 2023-06-13 11:08:27.251 | COMPLETED | 0 | 1 | 6,804,143,719 | 6,321,315,070 | 0 | file:///backup/obcebackup/obmysql_data | |
2 | 1 | 2 | 1 | 1004 | OFF | FULL | USER_TENANT | NONE | 2023-06-13 11:29:27.120 | 2023-06-13 11:32:27.638 | COMPLETED | 0 | 2 | 6,885,941,198 | 6,322,193,311 | 0 | file:///backup/obcebackup/obmysql_data | |
3 | 1 | 3 | 1 | 1004 | OFF | INC | USER_TENANT | NONE | 2023-06-13 11:37:53.299 | 2023-06-13 11:39:18.864 | COMPLETED | 0 | 3 | 185,533,642 | 26,475,442 | 0 | file:///backup/obcebackup/obmysql_data |
(可选)停止备份
如果数据库很大,备份时间很久,中间想取消,可以发命令: CANCEL BACKUP 。
这个就不演示了。
OB 集群手动恢复
OB 4.1 版本的恢复依然是租户粒度的恢复,需要提前准备新租户的资源池,(可选)设置加密信息等。
准备恢复租户的资源池
首先查看当前租户剩余资源。
select svr_ip, CPU_CAPACITY, (CPU_CAPACITY-CPU_ASSIGNED) CPU_FREE
, round(MEM_CAPACITY/1024/1024/1024) MEM_CAPACITY_GB, round((MEM_CAPACITY-MEM_ASSIGNED)/1024/1024/1024,2) MEM_FREE_GB
, round(DATA_DISK_CAPACITY/1024/1024/1024) DATA_CAPACITY_GB, round((DATA_DISK_CAPACITY-DATA_DISK_IN_USE)/1024/1024/1024,2) DATA_FREE_GB
, round(DATA_DISK_CAPACITY/1024/1024/1024) LOG_CAPACITY_GB, round((LOG_DISK_CAPACITY-LOG_DISK_IN_USE)/1024/1024/1024,2) LOG_FREE_GB
from GV$OB_SERVERS ;
svr_ip | CPU_CAPACITY | CPU_FREE | MEM_CAPACITY_GB | MEM_FREE_GB | DATA_CAPACITY_GB | DATA_FREE_GB | LOG_CAPACITY_GB | LOG_FREE_GB |
10.0.0.66 | 16 | 0 | 7 | 0 | 30 | 23.18 | 30 | 28.69 |
内存资源没有剩余。
先创建一个用于检验的表,然后再删除这个业务租户释放一些资源。
[root@server066 ~]$mysql -h10.0.0.66 -uroot@obmysql#obcedemo -P2883 -paaAA11__ -c -A test
<...>
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
(root@10.0.0.66:2883) [test]> create table t_backup(id bigint not null auto_increment primary key, c1 varchar(100) , c2 timestamp default current_timestamp );
Query OK, 0 rows affected (0.88 sec)
(root@10.0.0.66:2883) [test]> insert into t_backup(c1) values('test ob 4.1 backup and restore');
Query OK, 1 row affected (0.41 sec)
(root@10.0.0.66:2883) [test]> insert into t_backup(c1) values('test ob 4.1 backup and restore 2 ');
Query OK, 1 row affected (0.03 sec)
(root@10.0.0.66:2883) [test]> select * from t_backup;
+----+-----------------------------------+---------------------+
| id | c1 | c2 |
+----+-----------------------------------+---------------------+
| 1 | test ob 4.1 backup and restore | 2023-06-13 11:47:11 |
| 2 | test ob 4.1 backup and restore 2 | 2023-06-13 11:48:08 |
+----+-----------------------------------+---------------------+
2 rows in set (0.01 sec)
恢复目标是恢复到时间点: 2023-06-13 11:48:00 。
直接在 OCP-Express 里删除了租户。确认租户已经删除。
(root@10.0.0.66:2883) [oceanbase]> select tenant_id,tenant_name,status from __all_tenant;
+-----------+-------------+--------+
| tenant_id | tenant_name | status |
+-----------+-------------+--------+
| 1 | sys | NORMAL |
| 1001 | META$1002 | NORMAL |
| 1002 | ocp | NORMAL |
+-----------+-------------+--------+
3 rows in set (0.01 sec)
再次确认剩余可分配资源。
svr_ip | CPU_CAPACITY | CPU_FREE | MEM_CAPACITY_GB | MEM_FREE_GB | DATA_CAPACITY_GB | DATA_FREE_GB | LOG_CAPACITY_GB | LOG_FREE_GB |
10.0.0.66 | 16 | 10 | 7 | 3 | 30 | 29.44 | 30 | 48.5 |
创建用于恢复的租户的资源池。
CREATE RESOURCE UNIT b_4c2g MAX_CPU 4, MEMORY_SIZE = '2G', MAX_IOPS 10240, MIN_IOPS=10240;
CREATE RESOURCE POOL restore_pool unit = 'b_4c2g', unit_num = 1, zone_list = ('zone1');
开始不完全恢复
恢复新租户到时间点:2023-06-13 11:48:00 。
l (可选)设置解密密码。
如果备份中使用了密码,这里就需要设置解密密码。否则后面恢复的时候会报错提示密码不对。
SET DECRYPTION IDENTIFIED BY 'aaAA11__' ;
l 恢复租户到指定时间点。
ALTER SYSTEM RESTORE restored_obmysql FROM 'file:///backup/obcebackup/obmysql_data,file:///backup/obcebackup/obmysql' UNTIL TIME='2023-06-13 11:48:00' WITH 'pool_list=restore_pool&locality=F@zone1' ;
跟 3.2 版本恢复不同的是,4.1 版本的恢复命令会阻塞一会,原因不明。
l 查看恢复进度和详情
在 SYS 租户查看视图 CDB_OB_RESTORE_PROGRESS 和 CDB_OB_RESTORE_HISTORY 。
SELECT p.TENANT_ID , p.JOB_ID , p.RESTORE_TENANT_ID , p.RESTORE_TENANT_NAME , p.BACKUP_TENANT_ID , p.BACKUP_TENANT_NAME, p.BACKUP_CLUSTER_NAME , p.BACKUP_DEST , p.RESTORE_OPTION , p.STATUS , p.START_TIMESTAMP , p.BACKUP_SET_LIST , p.BACKUP_PIECE_LIST , p.TOTAL_BYTES_DISPLAY , p.FINISH_BYTES_DISPLAY
FROM CDB_OB_RESTORE_PROGRESS p ;
SELECT h.TENANT_ID , h.JOB_ID , h.RESTORE_TENANT_ID , h.RESTORE_TENANT_NAME , h.BACKUP_TENANT_ID , h.BACKUP_TENANT_NAME, h.BACKUP_CLUSTER_NAME , h.BACKUP_DEST , h.RESTORE_OPTION , h.STATUS , h.START_TIMESTAMP , h.BACKUP_SET_LIST , h.BACKUP_PIECE_LIST , h.TOTAL_BYTES_DISPLAY , h.FINISH_BYTES_DISPLAY
FROM CDB_OB_RESTORE_HISTORY h ;
TENANT_ID | JOB_ID | RESTORE_TENANT_ID | RESTORE_TENANT_NAME | BACKUP_TENANT_ID | BACKUP_TENANT_NAME | BACKUP_CLUSTER_NAME | BACKUP_DEST | RESTORE_OPTION | STATUS | START_TIMESTAMP | BACKUP_SET_LIST | BACKUP_PIECE_LIST | TOTAL_BYTES_DISPLAY | FINISH_BYTES_DISPLAY |
1 | 2 | 1,006 | restored_obmysql | 1,004 | obmysql | obcedemo | file:///backup/obcebackup/obmysql_data,file:///backup/obcebackup/obmysql | pool_list=restore_pool&locality=F@zone1 | SUCCESS | 2023-06-13 12:06:40.323 | file:///backup/obcebackup/obmysql_data/backup_set_2_full,file:///backup/obcebackup/obmysql_data/backup_set_3_inc | file:///backup/obcebackup/obmysql/piece_d1004r1p1 | 25.25MB | 0.00MB |
1,006 | 2 | 1,006 | restored_obmysql | 1,004 | obmysql | obcedemo | file:///backup/obcebackup/obmysql_data,file:///backup/obcebackup/obmysql | pool_list=restore_pool&locality=F@zone1 | SUCCESS | 2023-06-13 12:06:40.323 | file:///backup/obcebackup/obmysql_data/backup_set_2_full,file:///backup/obcebackup/obmysql_data/backup_set_3_inc | file:///backup/obcebackup/obmysql/piece_d1004r1p1 | 25.25MB | 0.00MB |
一次租户恢复任务会产生两笔记录。分别是: sys 租户的任务记录(记录被恢复租户的恢复相关信息)和新租户的记录(记录被恢复出来的租户的恢复进度信息)。 status 字段会反应具体的恢复阶段。详情参考官网:查看恢复进度-OceanBase 数据库 -OceanBase文档中心-分布式数据库使用文档 。
验证恢复结果
登录被恢复出的租户,查看表的记录。
从上图结果看,符合不完全恢复的预期。
随后,修改租户名为 obmysql 。
alter tenant restored_obmysql rename global_name to obmysql;
select tenant_id, tenant_name , locality from __all_tenant;
租户恢复出来替换原租户后,租户的备份策略需要重新配置。
总结
在备份恢复功能上,OB 社区版跟企业版的能力应该是一致的。OB 4.1 版本的备份支持租户级别的备份后,备份参数的设置、备份命令的下达、备份相关视图都可以在 SYS 租户和业务租户下分别查询。SYS 租户下的视图是 CDB_ 开头,业务租户下的视图是 DBA_ 开头。SYS 租户下能查询和管理整个集群里所有租户的备份相关事情,业务租户只查看和管理当前租户的备份相关事情。
更多阅读
- OB 企业版 3.2 备份恢复实践 (qq.com)
- OB 社区版 4.1 和 OCP express 笔记本电脑部署体验 (qq.com)