oceanbase数据备份失败

我在测试环境建了个1备份5节点的集群,昨天晚上新建备份任务,今天早上看备份失败


下面是任务日志:
subtask_14195.log (75.5 KB)

早上来执行过跳过操作。

手动点备份报如下错误:

Failed to start data backup. Error message: data backup pre-check failed, log backup not started.

  1. 日志归档没有开启 select * from oceanbase.CDB_OB_ARCHIVELOG 看下status 是doing嘛
  2. select * from __all_rootservice_event_history where module like ‘%archive%’; 也看下
  3. 有挂载NFS嘛?并有nfsnobody权限进行读写操作?

我刚才重新创建了一个租户级别的备份,还是失败了:


subtask_18786.log (72.1 KB)

SELECT * FROM oceanbase.CDB_OB_ARCHIVELOG;执行结果如下:


SELECT * FROM __all_rootservice_event_history WHERE module LIKE ‘%archive%’; 执行结果如下,红框应该是我手动执行的ALTER SYSTEM NOARCHIVELOG;

我们也是申请的云服务器,应该没有挂在NFS

你好,备份需要先开启日志归档。详情可以参考这个操作。
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000640000

image
我看开启了呀


开启后我点重试报如下错误:

你好,尝试第一步跳过看看,可能第一步检查的时候检查了所有租户,然后执行了开启日志归档的sql


跳过后执行第四步还是报错,日志如下:
subtask_18790.log (14.3 KB)

你好,辛苦执行下 select * from oceanbase.CDB_OB_ARCHIVELOG 看下 status


https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000641220

SELECT * FROM oceanbase.CDB_OB_ARCHIVELOG执行结果如下:

里面是空的,什么都没有

我执行了: ALTER SYSTEM ARCHIVELOG TENANT = ALL
但是sys租户还是没开启

observer.log麻烦提供下。 如果找不到可以看下配置文件中的home_path:参数 根据路径再log下寻找。

日志刷的很快,早前的找不到了。这个是我刚执行了一下 ALTER SYSTEM ARCHIVELOG ,你看看有用没有:
observer.log (4.1 MB)

执行完ALTER SYSTEM ARCHIVELOG TENANT = ALL 这个sql 之后查询状态是doing吗。正常执行完之后就是doing可以开始数据备份了。并且原本sys租户就不会开启备份

执行完ALTER SYSTEM ARCHIVELOG TENANT = ALL这个语句,CDB_OB_ARCHIVELOG这个表是空的,里面没数据。

不管执行还是不执行ALTER SYSTEM ARCHIVELOG TENANT = ALL这个语句,CDB_OB_ARCHIVELOG这个表里面都是空的,没数据。

试试到myoadb租户上执行看看。


myoadb上没权限执行。

顺便问一下,数据备份恢复必须通过nfs盘吗?ob的数据库不需要nfs盘的吧。
我现在数据备份目录是每个observer上建一个/webapps/obdata/obbackup,备份路径指到这个目录下。

我建了nfs了,又执行了ALTER SYSTEM ARCHIVELOG ;但是SELECT * FROM DBA_OB_ARCHIVELOG;这个表里面还是没数据。

我执行了ALTER SYSTEM NOARCHIVELOG; 再执行ALTER SYSTEM ARCHIVELOG ; 还是不行,SELECT * FROM DBA_OB_ARCHIVELOG;还是没数据。

如果ocp部署了多节点的ob,需要设置nfs,因为需要所有的observer 节点都可以访问。

先关掉 日志归档
obclient [test]> ALTER SYSTEM ARCHIVELOG ;
重新开启归档,按以下方式进行:

  1. 登录业务租户,设置ob_enable_show_trace变量
    SET ob_enable_show_trace='ON';
    
    1. 执行 SQL 语句,获取 trace_id
    obclient [test]> ALTER SYSTEM ARCHIVELOG ;
    
    obclient [test]> select last_trace_id();
    +-----------------------------------+
    | last_trace_id()                   |
    +-----------------------------------+
    | YB420BA1CC68-000615A0A8EA6511-0-0 |
    +-----------------------------------+
    1 row in set (0.002 sec)
    
    # 查看执行节点IP 
    obclient [test]> select * from oceanbase.gv$ob_sql_audit where trace_id='YB420BA1CC68-000615A0A8EA6511-0-0';
    
    1. 按上述获取的 SVR_IP 和 trace_id 过滤日志,如果最新日志无法过滤到,可以正则匹配多个日志进行过滤
    [root@x.x.x.x ~]$ grep "YB420BA1CC68-000615A0A8EA6511-0-0" rootservice.log
    [root@x.x.x.x ~]$ grep "YB420BA1CC68-000615A0A8EA6511-0-0" observer.log
    

提供下以上过滤出的日志。


以上几个命令执行完是空的呀。