Ошибка при восстановлении данных из rabbitmq mnesia
У нас есть серверы, на которых запущен rabbitmq 3.5.6, и однажды он заполнил диск.
На сервере возникла проблема, поэтому мы попытались скопировать файлы из папки mnesia на другой сервер, на котором также есть rabbitmq. Мы изменили то, что требуется на новом сервере, чтобы соответствовать имени хоста из предыдущего.
Мы попробовали это с файлами с нескольких сбойных серверов, и мы можем восстановить сообщения очереди.
Но для некоторых других кажется, что он не в состоянии это сделать, а просто зависает или зависает, когда я запускаю команду запуска службы rabbitmq-server. Основываясь на 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 ответ
Мы нашли этот инструмент, который может читать файлы idx очереди rabbitmq и файлы постоянного хранения rdq. Затем мы смогли повторно импортировать эти данные обратно в rabbitmq по одному сообщению и позволить нашим потребителям обрабатывать данные в обычном режиме.