开发者社区> 问答> 正文

请大家帮忙看看OceanBase数据库这个报错怎么解决呢

"咨询一个重启observer的问题。版本是社区版4.1,all-in-one的版本,3个observer分别部署在3台虚拟机上。昨晚我模拟一个某个observer被杀掉的场景,单独重启某个observer。启动时,进入oceanbase目录,执行bin/observer命令行,发现observer进程启动成功,端口2881和2882都已启用。通过obclient连接时,发现:root用户的密码为空,且不能指定oceanbase数据库选项,登录后执行show databases;命令提示找不到__all_server(好像是,不确定),感觉是还没有初始化数据库。参考的主要步骤如下:

配置 LIBRARY PATH

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/oceanbase-ce/lib/

启动进程

cd /home/admin/oceanbase-ce && bin/observer3、配置环境变量,否则启动 observer 会报错:找不到 libmariadb.so.3: cannot open shared object file

将 OceanBase 数据库的 LIB 加到环境变量 LD_LIBRARY_PATH 中

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/oceanbase-ce/lib/' >> ~/.bash_profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/oceanbase-ce/lib/
4、启动进程

启动进程 (注意:直接执行./observer 不会启动成功)

[admin@obtest002 ~]$ cd /home/admin/observer && bin/observer

等待 10s 进程启动

[admin@obtest002 ~]$ sleep 10

反复确认进程启动时没有退出

[admin@obtest002 ~]$ ps -ef | grep observer | grep -v grep

等待 60s,等进程完全启动并恢复完毕

[admin@obtest002 ~]$ sleep 60问一下,正确的重启observer步骤是什么?主要问题是执行完 bin/observer 命令后,数据库未能正确初始化"

展开
收起
JWRRR 2023-07-24 11:21:46 214 0
来自:OceanBase
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    能是由于重启 Observer 进程后,该进程与其他进程之间的数据同步不一致导致的。

    按照以下步骤进行排查和修复:

    确认 Observer 进程状态:在重启 Observer 进程之前,需要确认该进程已经成功退出,并且其他进程已经感知到该进程的退出。可以使用以下命令来查询 Observer 进程的状态:

    Copy
    $ ps aux | grep observer
    ```

    您需要确认该进程已经退出,并且其他进程已经感知到该进程的退出。如果该进程没有成功退出,需要重新杀掉该进程,并等待其他进程感知到该进程的退出。

    等待数据同步完成:在重启 Observer 进程之前,需要等待其他进程完成数据同步,并且数据同步已经达到一致状态。可以使用以下命令来查询数据同步状态:

    Copy
    $ obctl show_replica_status -t all
    您需要确认所有的数据副本状态都为“SYNCED”,表示数据同步已经完成,并且数据已经达到一致状态。如果数据同步状态不一致,需要等待数据同步完成,或者手动进行数据复制和同步。

    重新初始化数据库:如果以上步骤无法解决问题,建议您重新初始化数据库,并重新启动 Observer 进程。可以使用以下命令来重新初始化数据库:

    Copy
    $ obctl restart_database -c
    该命令将会重新初始化数据库,并清除所有的数据。需要注意的是,该命令会清除所有的数据,请务必在执行该命令之前备份数据以防止数据丢失。

    2023-07-27 15:05:46
    赞同 展开评论 打赏
  • 针对您描述的情况,重启 Observer 后出现数据库未初始化的问题,大致有以下几个可能原因和解决方法:

    1. 数据库未成功启动:在重启 Observer 之前,请确保所有的 Observer 进程都已经停止,并且数据库实例处于正常关闭状态。然后再启动 Observer,确保 Observer 进程正确启动,并且相关端口(2881和2882)已被占用。

    2. Observer 配置文件问题:检查 Observer 的配置文件是否正确配置了数据库实例的相关参数,包括数据库名称、数据目录、网络地址等。确保配置文件中的参数与实际数据库实例的配置一致。

    3. 数据库实例未初始化:如果在重启 Observer 后发现数据库未初始化,您需要手动执行数据库初始化操作。进入 OceanBase 安装目录下的 bin 目录,执行 oceanbase initdb 命令来初始化数据库实例。确保在执行此命令之前,先备份好数据库数据目录中的数据文件。

    4. 用户权限问题:使用 obclient 连接到数据库时,如果 root 用户的密码为空,可能会导致无法成功登录。您可以尝试修改 root 用户的密码,并确保密码非空。例如,使用 ALTER USER 'root'@'%' IDENTIFIED BY 'new_password'; 命令修改密码。

    5. 数据库连接参数问题:当通过 obclient 连接数据库时,确保指定了正确的连接参数,包括数据库地址、端口、用户名和密码。例如,obclient -h localhost -P 2881 -u root -p

    6. 数据库状态检查:在连接数据库后,执行 show databases; 命令可能提示找不到指定的数据库。您可以尝试执行 show schemas; 命令来查看当前可用的数据库模式。确保所需的数据库已被正确创建或还原。

    2023-07-24 12:50:04
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
+ 订阅
蚂蚁OceanBase数据库团队,用于OceanBase技术原理、运维经验和案例分享、对外交流。
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载