首批通过分布式安全可靠测评,为关键业务系统打造
日志归档无法停止, 报错 invalid archive_round
更新时间:2026-05-12 09:06
适用版本
OceanBase 数据库 V2.x 和 V3.x 版本。
问题描述
日志归档无法停止,日志报如下错误。
observer.log.20230410094024:635273:[2023-04-10 09:35:23.317183] ERROR [STORAGE] get_tenant_log_archive_status_v2 (ob_partition_service.cpp:7420) [75246][1446][YB428B00F80B-0005F8B9CAA7784D] [lt=12] [dc=0] invalid archive_round, incarnation or piece(pkey={tid:1109407232620529, partition_id:0, part_cnt:0}, pg_status={status:1, status_str:"STOP", round_start_ts:-1, round_start_log_id:18446744073709551615, round_snapshot_version:-1, round_log_submit_ts:-1, round_clog_epoch_id:-1, round_accum_checksum:0, archive_incarnation:1, log_archive_round:12, last_archived_log_id:18446744073709551615, last_archived_checkpoint_ts:-1, last_archived_log_submit_ts:-1, clog_epoch_id:-1, accum_checksum:0, cur_piece_id:0}, arg={incarnation:1, round_:12, backup_piece_id:369}, rs_piece_id=369, ret=-4016, ret="OB_ERR_UNEXPECTED") BACKTRACE:0xd6bc718 0xd6a4659 0x34fef61 0x899cdf8 0x899d41a 0x899d851 0x8b0cfe5 0x9ee211e 0xa04f72e 0x32886e9 0x32860c1 0x3280dd4 0xa882eca 0x3c1a7c7 0xd451a06 0xd44f02f 0xd44cdee
问题原因
已知问题。归档备份的 piece id 不符合预期(cur_piece_id:0)。
原因:执行了停止归档操作后,未等待所有分区停止归档又执行强制停止归档的操作。
解决方法
升级 OceanBase 数据库到问题已经修复的版本。问题已修复的版本包括 V2.2.77 BP13 (oceanbase-2.2.77-113000052022082622) 及之后版本。
应急办法:修改内部表,重启 OBServer。
警告
生产环境须找 OceanBase 技术支持确认后执行;只针对数据备份已经停止但日志备份停不掉的场景。
清理系统租户表。
start transaction; delete from __all_backup_log_archive_status_v2; delete from __all_backup_log_archive_status_history; delete from __all_backup_piece_files; delete from __all_tenant_backup_log_archive_status; delete from __all_tenant_backup_info; commit;切换 RS,要保证这个 zone 和老的 RS 不是同一个。
obclient> alter system switch rootservice leader zone='z1';清理配置项。
obclient> alter system set backup_dest='';清理普通租户的租户级内部表。需要切换所有的租户。
alter system change tenant tenant1; delete from __all_tenant_backup_log_archive_status; delete from __all_tenant_backup_info; alter system change tenant tenant2; delete from __all_tenant_backup_log_archive_status; delete from __all_tenant_backup_info; ......重启所有 OBServer 节点。