文档章节

Rabbitmq由于queen数据持久化错误,导致无法启动的解决办法

Jason_hu
 Jason_hu
发布于 2017/08/25 13:08
字数 718
阅读 129
收藏 0

Rabbitmq由于queen数据持久化错误,导致无法启动的解决办法

环境

  • os:centos 6.5
  • rabbitmq: 3.6.5

故障描述

  • 由于磁盘满,导致rabbitmq崩溃,无法提供服务
  • 清理磁盘空间后,rabbitmq无法自动恢复正常

处理办法

  • service rabbitmq-server stop 无法正确关闭rabbitmq
  • ps -AF | grep rabbitmq,将rabbitmq相关进程全部kill
  • 使用 service rabbitmq-server start 重启,显示启动错误
  • 查看服务口状态:service rabbitmq-server status
Status of node rabbit@gitlab ...
Error: unable to connect to node rabbit@gitlab: nodedown

DIAGNOSTICS
===========

attempted to contact: [rabbit@gitlab]

rabbit@gitlab:
  * connected to epmd (port 4369) on gitlab
  * epmd reports: node 'rabbit' not running at all
                  other nodes on gitlab: ['rabbitmq-cli-11']
  * suggestion: start the node

current node details:
- node name: 'rabbitmq-cli-11@localhost'
- home dir: /var/lib/rabbitmq
- cookie hash: qib2bCkQ8XIJmRtJP4qxFg==
=ERROR REPORT==== 24-Aug-2017::17:33:47 ===
** Generic server <0.215.0> terminating
** Last message in was {'$gen_cast',
                           {submit_async,
                               #Fun<rabbit_queue_index.32.103862237>}}
** When Server state == undefined
** Reason for termination == 
** {{case_clause,undefined},
    [{rabbit_queue_index,add_segment_relseq_entry,3,
                         [{file,"src/rabbit_queue_index.erl"},{line,1091}]},
     {rabbit_queue_index,parse_segment_entries,3,
                         [{file,"src/rabbit_queue_index.erl"},{line,1075}]},
     {rabbit_queue_index,'-recover_journal/1-fun-0-',1,
                         [{file,"src/rabbit_queue_index.erl"},{line,863}]},
     {lists,map,2,[{file,"lists.erl"},{line,1239}]},
     {rabbit_queue_index,segment_map,2,
                         [{file,"src/rabbit_queue_index.erl"},{line,989}]},
     {rabbit_queue_index,recover_journal,1,
                         [{file,"src/rabbit_queue_index.erl"},{line,856}]},
     {rabbit_queue_index,scan_segments,3,
                         [{file,"src/rabbit_queue_index.erl"},{line,676}]},
     {rabbit_queue_index,queue_index_walker_reader,2,
                         [{file,"src/rabbit_queue_index.erl"},{line,664}]}]}
=INFO REPORT==== 24-Aug-2017::17:44:51 ===
Error description:
   {could_not_start,rabbit,
       {{badmatch,
            {error,
                {{{{case_clause,undefined},
                   [{rabbit_queue_index,add_segment_relseq_entry,3,
                        [{file,"src/rabbit_queue_index.erl"},{line,1091}]},
                    {rabbit_queue_index,parse_segment_entries,3,
                        [{file,"src/rabbit_queue_index.erl"},{line,1075}]},
                    {rabbit_queue_index,'-recover_journal/1-fun-0-',1,
                        [{file,"src/rabbit_queue_index.erl"},{line,863}]},
                    {lists,map,2,[{file,"lists.erl"},{line,1239}]},
                    {rabbit_queue_index,segment_map,2,
                        [{file,"src/rabbit_queue_index.erl"},{line,989}]},
                    {rabbit_queue_index,recover_journal,1,
                        [{file,"src/rabbit_queue_index.erl"},{line,856}]},
                    {rabbit_queue_index,scan_segments,3,
                        [{file,"src/rabbit_queue_index.erl"},{line,676}]},
                    {rabbit_queue_index,queue_index_walker_reader,2,
                        [{file,"src/rabbit_queue_index.erl"},{line,664}]}]},
                  {gen_server2,call,[<0.266.0>,out,infinity]}},
                 {child,undefined,msg_store_persistent,
                     {rabbit_msg_store,start_link,
                         [msg_store_persistent,
                          "/var/lib/rabbitmq/mnesia/rabbit@gitlab",[],
                          {#Fun<rabbit_queue_index.2.103862237>,
                           {start,
                               [{resource,<<"yun">>,queue,
                                    <<"com.yun.app.api.internal.AppUserEvents:1.0.1:app-server">>},
                                {resource,<<"/">>,queue,
                                    <<"com.yun.kcbp.finance.api.TicketService:1.0.1">>},
                                {resource,<<"yun">>,queue,
                                    <<"com.yun.park.api.internal.ParkRecordEvents:1.0.1:park-server">>},
                                {resource,<<"yun">>,queue,
                                    <<"com.yun.park.api.internal.ParkBusinessEvents:1.0.1:app-server">>},
                                {resource,<<"yun">>,queue,
                                    <<"com.yun.park.api.internal.ParkRecordEvents:1.0.1:monitor-server">>},
                                {resource,<<"yun">>,queue,
                                    <<"com.yun.sys.api.internal.SysLogEvents:1.0.1:sys-server">>},
                                {resource,<<"yun">>,queue,
                                    <<"com.yun.park.api.internal.ParkRecordEvents:1.0.1:app-server">>}]}}]},
                     transient,30000,worker,
                     [rabbit_msg_store]}}}},
        [{rabbit_variable_queue,start_msg_store,2,
             [{file,"src/rabbit_variable_queue.erl"},{line,454}]},
         {rabbit_variable_queue,start,1,
             [{file,"src/rabbit_variable_queue.erl"},{line,436}]},
         {rabbit_priority_queue,start,1,
             [{file,"src/rabbit_priority_queue.erl"},{line,92}]},
         {rabbit_amqqueue,recover,0,
             [{file,"src/rabbit_amqqueue.erl"},{line,239}]},
         {rabbit,recover,0,[{file,"src/rabbit.erl"},{line,652}]},
         {rabbit_boot_steps,'-run_step/2-lc$^1/1-1-',1,
             [{file,"src/rabbit_boot_steps.erl"},{line,49}]},
         {rabbit_boot_steps,run_step,2,
             [{file,"src/rabbit_boot_steps.erl"},{line,49}]},
         {rabbit_boot_steps,'-run_boot_steps/1-lc$^0/1-0-',1,
             [{file,"src/rabbit_boot_steps.erl"},{line,26}]}]}}

Log files (may contain more information):
   /var/log/rabbitmq/rabbit@gitlab.log
   /var/log/rabbitmq/rabbit@gitlab-sasl.log

最终办法

  • 搜索百度、google无果
  • 仔细看日志内容,发现应该是mq启动时候,恢复队列内容数据时候发生了错误
  • 可能是由于磁盘满了,队列数据写磁盘时候发生日常,导致数据文件格式错误了
  • 进入 cd /var/lib/rabbitmq/mnesia/rabbit@gitlab/queues
  • 该目录是存放队列的数据文件的地方
  • 找到子目录中的数据文件,把可能损坏的文件删除。(或者全部删掉,不过这些队列中的数据就丢失了)
  • 然后重启,就正常了
  • service rabbitmq-server start

PS:还好只是测试服务器,数据丢掉点问题不大。

© 著作权归作者所有

共有 人打赏支持
Jason_hu
粉丝 8
博文 19
码字总数 8642
作品 0
浦东
RabbitMQ入门之安装配置与简单实例

简介 由于某些原因,今天接触了一下一个新的东西RabbitMQ( http://www.rabbitmq.com/)总的来说给人的感觉就是安装简单方便,同时功能强大。而且官网也给出了几个相当实用的例子,不管关于消...

墨鱼ID
2012/08/08
0
5
配置RabbitMQ默认群集模式

RabbitMQ是什么? MQ(Msaaage Queue,消息队列)是一种应用程序对应用程序的通信方式。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无须专用链接来连接它们。消息传递指...

cchenyz
07/31
0
0
高可用RabbitMQ安装及使用 

高可用RabbitMQ安装及使用 引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用、通讯的问题而苦恼、挣扎?如果是,那么恭喜你,消...

DemonsI
08/20
0
0
RabbitMQ 安装使用及集群架设

Ubuntu 系统安装 RabbitMQ 写在前面 链接rabbitMQ官网 php教程。PHP-RabbitMQ 1.关于RabbitMQ安装  由于rabbitMq需要erlang语言的支持,在安装rabbitMq之前需要安装erlang,执行命令: sudo...

青瓶冷水
08/02
0
0
RabbitMQ学习系列(六): RabbitMQ 高可用集群

前面讲过一些RabbitMQ的安装和用法,也说了说RabbitMQ在一般的业务场景下如何使用。不知道的可以看我前面的博客,http://www.cnblogs.com/zhangweizhong/category/855479.html 本来一直想写一...

andrewniu
05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Vue学习资料

一直以为Vue是依赖nodejs的。 作为前端也可以耦合性就很低了。 //npm包管理器 进行管理npm install vue//初始化一个项目vue init//本地调试npm run dev//编译完成 ...

大灰狼wow
29分钟前
1
0
fullcalendar重新渲染

uiCalendarConfig.calendars.lesson_calendar.fullCalendar('removeEvents');var ym = uiCalendarConfig.calendars.lesson_calendar.fullCalendar('getView').title;$scope.get_lesson(y......

人来疯啊
34分钟前
1
0
多渠道打包总结

https://www.jianshu.com/p/2130db7584c8 https://blog.csdn.net/u011153817/article/details/50772496...

塔塔米
43分钟前
1
0
android -------- Data Binding的使用 ( 六) 自定义属性

今天来说说DataBinding在自定义属性的使用 默认的android命名空间下,我们会发现并不是所有的属性都能直接通过data binding进行设置,比如margin,padding,还有自定义View的各种属性。 默认...

切切歆语
49分钟前
1
0
收邮件 下载附件

uses IdMessage, IdMessageParts, IdAttachment, IdGlobalProtocols, ...;procedure SaveAttachmentsFromFile(FileName: String)var IdMessage: TIdMessage; MsgPart: Ti......

vga
55分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部