从rabbitmq mnesia恢复数据时出错

时间:2016-10-01 04:44:12

标签: rabbitmq recovery mnesia

我们有运行rabbitmq 3.5.6的服务器,它在一个点上运行到磁盘已满。

服务器有问题,所以我们尝试将文件从mnesia文件夹复制到另一台也有rabbitmq的服务器。我们在新服务器上更改了所需的内容,以匹配前一个主机名。

我们尝试使用来自几个崩溃服务器的文件,我们可以恢复队列消息。

但是对于其他一些人来说,当我运行服务rabbitmq-server start命令时,它似乎无法做到并且只是挂起或冻结。基于rabbit@host.log,似乎可能存在一些解析段问题。

但它会在vhost'/'中提及重启崩溃队列'点击'。并且要么花了太长时间(不知道它是否卡住),否则它会再次重复某些行并重新启动崩溃的队列。

任何帮助将不胜感激。感谢。

这是我们从服务器启动时的日志...

=INFO REPORT==== 30-Sep-2016::16:45:15 ===
Starting RabbitMQ 3.5.6 on Erlang R14B04
Copyright (C) 2007-2015 Pivotal Software, Inc.
Licensed under the MPL. See http://www.rabbitmq.com/
=INFO REPORT==== 30-Sep-2016::16:45:15 ===
node : rabbit@mq-mt10
home dir : /var/lib/rabbitmq
config file(s) : /etc/rabbitmq/rabbitmq.config
cookie hash : OHOm6cAi0pRByqTsrYdG1A==
log : /var/log/rabbitmq/rabbit@mq-mt10.log
sasl log : /var/log/rabbitmq/rabbit@mq-mt10-sasl.log
database dir : /var/lib/rabbitmq/mnesia/rabbit@mq-mt10
=INFO REPORT==== 30-Sep-2016::16:45:15 ===
Memory limit set to 12838MB of 16047MB total.
=INFO REPORT==== 30-Sep-2016::16:45:15 ===
Disk free limit set to 50MB
=INFO REPORT==== 30-Sep-2016::16:45:15 ===
Limiting to approx 924 file handles (829 sockets)
=INFO REPORT==== 30-Sep-2016::16:45:15 ===
FHC read buffering: ON
FHC write buffering: ON
=INFO REPORT==== 30-Sep-2016::16:45:16 ===
Priority queues enabled, real BQ is rabbit_variable_queue
=INFO REPORT==== 30-Sep-2016::16:45:16 ===
Management plugin: using rates mode 'basic'
=INFO REPORT==== 30-Sep-2016::16:45:16 ===
msg_store_transient: using rabbit_msg_store_ets_index to provide index
=INFO REPORT==== 30-Sep-2016::16:45:16 ===
msg_store_persistent: using rabbit_msg_store_ets_index to provide index
=ERROR REPORT==== 30-Sep-2016::16:45:18 ===
** Generic server <0.240.0> terminating
** Last message in was {init,{<0.159.0>,[non_clean_shutdown]}}
** When Server state == {q,{amqqueue,
{resource,<<"/">>,queue,<<"clicks">>},
true,false,none,[],<0.240.0>,[],[],[],
undefined,[],undefined,live},
none,false,undefined,undefined,
{state,
{queue,[],[],0},
{active,1475268316149018,1.0}},
undefined,undefined,undefined,undefined,
{state,fine,5000,undefined},
{0,nil},
undefined,undefined,undefined,
{state,
{dict,0,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],
[],[]},
{{[],[],[],[],[],[],[],[],[],[],[],[],[],
[],[],[]}}},
delegate},
undefined,undefined,undefined,undefined,0,running}
** Reason for termination ==
** {function_clause,
[{rabbit_queue_index,parse_segment_entries,
[<<"y">>,false,
{{array,16384,0,undefined,
{{{{{{{true,
<<6,79,246,149,241,55,30,251,55,72,30,36,11,132,
161,214,0,0,0,0,0,0,0,0,0,0,4,167>>,
<<131,104,6,100,0,13,98,97,115,105,99,95,109,101,
115,115,97,103,101,104,4,100,0,8,114,101,115,
111,117,114,99,101,109,0,0,0,1,47,100,0,8,101,
120,99,104,97,110,103,101,109,0,0,0,0,108,0,0,0,
1,109,0,0,0,6,99,108,105,99,107,115,106,104,6,
100,0,7,99,111,110,116,101,110,116,97,60,100,0,
4,110,111,110,101,109,0,0,0,3,16,0,2,100,0,25,
114,97,98,98,105,116,95,102,114,97,109,105,110,
103,95,97,109,113,112,95,48,95,57,95,49,108,0,0,
0,1,109,0,0,4,167,123,34,64,118,101,114,115,105,
111,110,34,58,34,49,34,44,34,64,116,105,109,101,
115,116,97,109,112,34,58,34,50,48,49,54,45,48,
57,45,50,57,84,49,48,58,48,57,58,50,56,46,54,49,
56,90,34,44,34,98,101,97,116,34,58,123,34,104,
111,115,116,110,97,109,101,34,58,34,105,112,45,
49,48,45,50,53,50,45,50,45,49,48,48,34,44,34,
110,97,109,101,34,58,34,105,112,45,49,48,45,50,
53,50,45,50,45,49,48,48,34,125,44,34,115,111,
117,114,99,101,34,58,34,47,118,97,114,47,108,
111,103,47,102,105,108,101,98,101,97,116,47,114,
97,98,98,105,116,109,113,95,99,108,105,99,107,
115,47,102,105,108,101,98,101,97,116,46,106,115,
111,110,34,44,34,116,121,112,101,34,58,34,108,
111,103,34,44,34,104,111,115,116,34,58,34,105,
.
.
.
                          50,56,46,57,54,52,55,125,44,34,108,111,103,116,
                          121,112,101,34,58,34,67,108,105,99,107,79,114,
                          69,114,114,111,114,34,125,106,109,0,0,0,16,209,
                          241,202,203,147,189,214,158,240,46,46,46>>},
                    del,no_ack},
                   undefined,undefined,undefined,undefined,undefined,
                   undefined},
                  10,10},
                 100,100,100,100,100,100,100},
                1000,1000,1000,1000},
               10000,10000,10000,10000,10000,10000,10000,10000,10000}},
          16384}]},
    {rabbit_queue_index,recover_segment,3},
    {rabbit_queue_index,'-init_dirty/3-fun-0-',5},
    {lists,foldl,3},
    {rabbit_queue_index,init_dirty,3},
    {rabbit_variable_queue,init,6},
    {rabbit_priority_queue,init,3},
    {rabbit_amqqueue_process,init_it2,3}]}
=ERROR REPORT==== 30-Sep-2016::16:49:54 ===
Restarting crashed queue 'clicks' in vhost '/'.

1 个答案:

答案 0 :(得分:4)

我们发现这个工具能够读取rabbitmq队列idx文件和持久存储rdq文件。然后我们能够将这些数据一次性重新导入rabbitmq一条消息,让我们的消费者正常处理数据。

https://github.com/jeffbryner/rdqdump