首批通过分布式安全可靠测评,为关键业务系统打造
虚拟机 OBServer 启动失败:observer start fail (ret=-4052) 的原因和解决方法
更新时间:2026-06-08 02:41
问题现象
OceanBase 数据库集群采用虚拟机部署,重启集群时有一个节点出现重启失败的错误,observer.log 日志报 observer start fail(ret=-4052)。
[2024-05-22 09:26:47.029009] ERROR issue_dba_error (ob_log.cpp:1875) [2775063][observer][T0][Y0-0000000000000000-0-0] [lt=6][errcode=-4388] Unexpected internal error happen, please checkout the internal errcode(errcode=-4052, file="main.cpp", line_no=587, info="observer start fail")
[2024-05-22 09:26:47.029035] EDIAG [SERVER] main (main.cpp:587) [2775063][observer][T0][Y0-0000000000000000-0-0] [lt=25][errcode=-4052] observer start fail(ret=-4052) BACKTRACE:0x126580fd 0x7436bd3 0x557ca94 0x7436914 0x742e901 0x7431179 0x7430177 0x7f63cc35fb67 0x568f315
问题原因
slog 文件损坏,导致了重启 OBServer 节点时,slog 回放失败报错 observer start fail(ret=-4052)。排查 observer.log 的 ERROR 日志,发现以下日志记录,表明 slog 回放时日志校验错误。
[2024-05-22 09:25:32.636560] WDIAG [STORAGE.REDO] check_batch_header (ob_storage_log_batch_header.cpp:37) [2775063][observer][T1002][Y0-0000000000000000-0-0] [lt=1][errcode=-4103] Magic number doesn't match(ret=-4103, magic=2)
[2024-05-22 09:25:32.636574] WDIAG [STORAGE.REDO] get_next_batch_header (ob_storage_log_reader.cpp:310) [2775063][observer][T1002][Y0-0000000000000000-0-0] [lt=13][errcode=-4052] Fail to check batch header's integrity(ret=-4052, log_buffer=buffer=0x7f6324805000 capacity=66060288 position=4663221 limit=9705373)
[2024-05-22 09:25:32.637838] WDIAG [STORAGE] replay_checkpoint_and_slog (ob_tenant_checkpoint_slog_handler.cpp:353) [2775063][observer][T1002][Y0-0000000000000000-0-0] [lt=10][errcode=-4052] fail to replay_tenant_slog(ret=-4052, super_block={tenant_id:1002, replay_start_point:ObLogCursor{file_id=58, log_id=15523899, offset=30177379}, ls_meta_entry:[15553](ver=0,mode=0,seq=83448), tablet_meta_entry:[-1](ver=0,mode=0,seq=0), is_hidden:false, version:2})
由于前期物理服务器资源未到,客户采用虚拟机搭建的生产环境,底层是海光 7385_x86-64bit 物理机,采用华为 fusion compute 搭建的虚拟化环境。该系统曾经多次出现虚拟机内存读写异常的错误,怀疑 slog 文件损坏与此相关。
非标部署无法保证系统稳定与安全,可能导致以下问题:
性能下降: 在虚拟机上运行数据库会导致性能下降,因为虚拟化技术会消耗额外的计算资源和内存,从而影响数据库的运行速度和响应时间。
隔离性不足: 虚拟机上的数据库可能受到其他虚拟机的影响,因为它们共享同一物理服务器的资源。这可能导致数据库之间的性能干扰和资源争夺。
不稳定性: 虚拟化技术本身可能存在稳定性问题,虚拟机的故障可能会影响数据库的正常运行。此外,虚拟机的迁移或重启可能导致数据库服务中断。
安全风险: 虚拟机上的数据库对安全性的要求更高,因为虚拟化可能增加攻击面和安全漏洞,导致数据泄露或损坏。
适用版本
OceanBase 数据库 V4.2.x 版本。
解决方法
长期解决方案: 采用标准化部署的方式部署 OceanBase 系统。
临时解决方案: 通过先删除 OBServer 主机然后再添加回来的方式修复问题(先对租户执行缩容,Delete OBServer,再 Add OBServer,最后加副本)。