初始化集群之后数据丢失,我该如何恢复?数据库重启失败,一直显示8001 server is initializing

【 使用环境 】生产环境
【 OB or 其他组件 】observer
【 使用版本 】社区版4.3.1.0
【问题描述】两台数据库,
1 初始化集群之后数据丢失,我该如何恢复?
2 数据库重启失败,一直显示8001 server is initializing
【复现路径】无特殊操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

根据您的描述,您遇到了两个问题:一是初始化 OceanBase 集群后出现了数据丢失的情况;二是数据库在重启时遇到了错误代码 8001,提示“Server is initializing”。针对这两个问题,我们可以分别进行处理。

对于数据丢失问题:

由于 obdiag 目前没有直接针对数据丢失的诊断场景,因此我们首先需要收集集群的基础信息来进一步分析可能的原因。请您先执行以下命令来收集相关信息:

日志采集场景: 集群基础信息
日志采集命令: obdiag gather scene run --scene=observer.base

对于重启失败问题:

错误代码 8001 表示在 OBServer 节点启动过程中收到了 RPC 请求。根据文档,解决方法是等待 OBServer 节点重启完成。但为了更深入地了解问题原因,我们可以通过 obdiag 来收集更多日志信息。

日志采集场景: observer无故重启
日志采集命令: obdiag gather scene run --scene=observer.restart

执行上述命令后,请将生成的日志压缩包发送给我们,以便我们能够更准确地定位问题。

另外,为了更好地帮助您解决问题,请您提供以下信息:

  1. 初始化集群的具体步骤是什么?
  2. 在数据丢失之前是否有执行过任何特殊的操作或命令?
  3. 当前集群的状态如何?是否能看到某些节点的状态异常?
  4. 在尝试重启数据库时,除了错误代码 8001 外,是否还有其他错误信息或日志记录?

通过以上信息,我们将能够更全面地理解您的问题并提供更有效的解决方案。

详情请参考:

  1. 800.8000-8999-of-mysql-mode.md
  2. 4000 ~ 4499
  3. 使用 oatcli 初始化 OBServer 服务器

附上敏捷诊断工具 obdiag 使用帮助链接

无法重启的数据库诊断日志:
[root@cdzwbigdata-db2 log]# obd obdiag gather log obtest --from “2024-10-14 00:00:00” --to “2024-10-14 19:00:00”
Get local repositories and plugins ok
The tool oceanbase-diagnostic-tool is already installed the latest version 2.0.0
Open ssh connection ok
gather_log start …
[ERROR] ssh root@127.0.0.1: failed, Please check the ~/.obdiag/config.yml
Gather Ob Log Summary:
±----------±--------------------------------------------±-------±-------±-----------+
| Node | Status | Size | Time | PackPath |
+===========+=============================================+========+========+============+
| 127.0.0.1 | Error:Please check the ~/.obdiag/config.yml | 0.000B | 0 s | |
±----------±--------------------------------------------±-------±-------±-----------+
Trace ID: 579fa4b4-8a98-11ef-b91b-0cda411ddebe
If you want to view detailed obdiag logs, please run: obdiag display-trace 579fa4b4-8a98-11ef-b91b-0cda411ddebe

Trace ID: 566261fe-8a98-11ef-b0e6-0cda411ddebe
If you want to view detailed obd logs, please run: obd display-trace 566261fe-8a98-11ef-b0e6-0cda411ddebe

是使用obd的 redeploy指令了么。这种相当于集群重建数据无法恢复的

根据您提供的信息,您在尝试使用 obd obdiag gather log 命令收集日志时遇到了错误,提示您检查 ~/.obdiag/config.yml 文件。这意味着 obdiag 在尝试连接到您的 OBServer 时遇到了配置问题。

如何解决这个问题

  1. 检查配置文件:首先,请确保 ~/.obdiag/config.yml 文件存在,并且配置正确。这个文件通常包含 obdiag 连接到 OBServer 所需的凭据和其他设置。请检查以下几点:

    • 用户名和密码是否正确。
    • SSH 密钥是否配置正确。
    • OBServer 的 IP 地址和端口是否正确。
  2. 手动验证 SSH 连接:尝试手动通过 SSH 连接到 OBServer,以确认 SSH 配置是否正确:

    ssh root@127.0.0.1
    

    如果连接失败,请检查 SSH 配置。

  3. 重新配置 obdiag:如果配置文件存在问题,您可以尝试重新配置 obdiag。您可以删除现有的配置文件并重新创建它,或者使用 obdiag 的配置命令重新配置:

    obd obdiag config set --deploy_name=obtest --user=root --password=your_password --ssh_port=22
    
  4. 检查 obdiag 版本:确保您使用的 obdiag 版本是最新的。您可以使用以下命令检查版本:

    obd obdiag --version
    
  5. 查看详细日志:根据提示信息,您可以运行以下命令查看详细的 obdiag 日志:

    obdiag display-trace 579fa4b4-8a98-11ef-b91b-0cda411ddebe
    

示例配置文件

以下是一个典型的 config.yml 文件示例:

deployments:
  obtest:
    user: root
    password: your_password
    ssh_port: 22
    nodes:
      - ip: 127.0.0.1
        port: 2881

请确保您的 config.yml 文件与此类似,并且所有字段都是正确的。

总结

  1. 检查 ~/.obdiag/config.yml 文件是否正确配置。
  2. 手动验证 SSH 连接是否正常。
  3. 重新配置 obdiag 或更新配置文件。
  4. 查看详细日志以获取更多信息。

如果您仍然遇到问题,请提供更多关于您的配置文件和环境的信息,以便我们进一步帮助您解决问题。

检索到的文档如下:

  1. 诊断工具命令组
  2. 快速入门:obdiag 全链路功能诊断

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

我的配置文件:
obcluster:
db_host: 127.0.0.1
db_port: 2881
ob_cluster_name: obtest
tenant_sys:
password: ******
user: ******
servers:
nodes:
- ip: 127.0.0.1
ssh_port: 22
ssh_username: root
ssh_password: ‘’
private_key: ‘’
home_path: /data/observer
data_dir: /data/obdata
redo_dir: /data/obredo
global: {}
obproxy:
servers:
nodes:
- ip: 127.0.0.1
ssh_port: 22
ssh_username: root
ssh_password: ‘’
private_key: ‘’
home_path: /data/obproxy
global: {}
其中ssh_password需要设置当前服务器root账号的密码吗?

ssh_password需要设置部署ob的服务器用户密码,比如如果你用admin用户部署的observer就提供admin的密码就行。参考文档:

https://www.oceanbase.com/docs/common-obdiag-cn-1000000001326875

未使用redeploy命令,使用的是destroy 命令 能恢复吗?

destroy是铲除集群,回复不了