ITPub博客

首页 > 数据库 > 国内数据库 > OceanBase NFS备份路径注册失败

OceanBase NFS备份路径注册失败

国内数据库 编辑:ITPUB 时间:2024-11-28 17:21:40 0 删除 编辑
Approximate reading time: 15 minutes
1. Cite article
2. [Oracle租户错误信息概述](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000881417)
3. [知识库](https://www.oceanbase.com/knowledge-base)
4. [MySQL租户错误信息概述](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000749638)

1 APPLIES TO 适用于

OceanBase 数据库  V3.1.x、V3.2.x、V3.3.x、V4.0.x、V4.1.x

2 SYMPTOMS 症状情况

因测试需求,需进行部署NFS服务进行OceanBase备份恢复,在进行备份路径注册发现如下情况:

ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/nfs/backup/oracle_pdb_archive BINDING=Optional PIECE_SWITCH_INTERVAL=2d';--因内入OBProxy集群管理,执行SQL失败时,可以第一时间执行如下如下语句,获取当前obclient连接的observerselect utl_inaddr.get_host_address from dual;

1732245189

如上图可知,注册备份路径失败,且当前OBClient分配的处理OBServer IP为192.168.24.52,也就是节点二。

3 Root Cause 问题原因

OceanBase Oracle租户黑屏注册日志归档目录失败,是因其所预注册的备份NFS目录权限异常,其拥有者并非为nobody用户而是root,导致客户端无法写入文件。

4 SOLUTION 解决过程

4.1 查询错误码信息

进入到OceanBase知识库进行文档搜索:

1732245231

根据错误关键词,搜索 ORA-00600 相关文档概述信息:

1732245243

有关 ORA-00600:

在 Oracle 数据库中, ORA-00600 表示内部错误,是针对 Oracle 程序异常的 Catchall 内部错误消息。它表示进程遇到了低级或意外的错误。

在 OceanBase 数据库的 Oracle 租户中, 对于不兼容 Oracle 的错误,也会返回该错误码,格式为:

ORA-00600: internal error code, arguments: %d, %s

其中, %d 为 OceanBase 数据库错误码, %s 为 OceanBase 数据库错误信息。

报错信息如下:

ORA-00600: internal error code, arguments: -4009, IO error

基于此,我们查询Oracle模式的错误码并未有详细信息展示,因此获取arguments:4009 编号,查询MySQL模式【OceanBase 错误码:4009】错误码,反而会有详细一些的解释:

1732245267

## ERROR 4009 (58030 ) : IO error- OceanBase 错误码:4009
    - 错误原因:READ 或 WRITE 等 IO 相关的系统调用失败。    
- 解决方式:请联系技术支持人员协助排查。

4.2 检查数据库日志

当前部署的OceanBase为 单机房3副本,因此需要检查每一个节点OBServer的数据库日志【虽然我们已经提前知道执行配置修改的数据库节点是节点二】。

进入各节点服务器的/home/admin/oceanbase/log目录

4.2.1 节点OBServer1

1732245289

4.2.2 节点OBServer2

1732245299

[2024-11-19 11:02:21.892325] WDIAG [SERVER] do_process (obmp_query.cpp:903) [21777][T1002_L0_G0][T1002][YB42C0A81834-00062639955E6ED4-0-0] [lt=25][errcode=-5001] query failed(ret=-5001, session={this:0x7fe785a6fe18, id:3221852338, deser:false, tenant:"OraclePDB", tenant_id:1002, effective_tenant:"OraclePDB", effective_tenant_id:1002, database:"SYS", user:"SYS", consistency_level:3, session_state:2, autocommit:false, tx:null}, sql=ORA-00600: internal error code, arguments: -4009, IO errorORA-00600: internal error code, arguments: -4009, IO error, retry_ctrl_.need_retry()=0)

OBServer节点二是有相应告警,但未有其他有价值信息。

4.2.3 节点OBServer3

1732245308

4.3 3.检查NFS服务

4.3.1 检查NFS服务器状态

systemctl status nfs

1732245322

4.3.2 检查NFS客户端状态

systemctl status nfs

1732245355

检查NFS的客户端服务端可知其状态正常,根据OceanBase错误码提示,进行以下共享目录文件创建测试:

touch test01.txt

1732245372

创建文件发现,客户端root用户无法在NFS共享目录创建文件,显示权限异常。

4.3.3 检查NFS共享目录

1732245379

1732245391

经检查,目录拥有者为root用户,而不是nobody用户,导致客户端无法正常往目录写入。

4.3.4 修改NFS共享目录

cd /data/nfs_share/chown nobody:nobody -R backup

1732245403

4.4 4.注册备份目录

修改备份路径权限后,再次进行备份路径测试:

ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/nfs/backup/oracle_pdb_archive BINDING=Optional PIECE_SWITCH_INTERVAL=2d';SELECT * from DBA_OB_ARCHIVE_DEST;

1732245429

备份目录注册成功!

5 Conclusion 总结

OceanBase目前的告警信息显示较为 委婉,不仅有租户之间的 错误码区别、不同节点执行的 日志记录区别,还有较为 复杂日志架构的区别【日志刷新写入频率极高】,与Oracle数据库告警日志获取ORA ERROR信息方式相比,还是较为 曲折。

本文故障案例虽然较为简单,但主要是想与大家分享一下如何去快速进行OceanBase告警信息的解读,提供一些可行的方法与路径。


来自 “ ”, 原文作者: ;原文链接:,如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2018-09-19

  • 博文量
    240
  • 访问量
    510675