Как мне правильно сделать снимок тома EBS с запущенным экземпляром RabbitMQ?

StackOverflow https://stackoverflow.com/questions/1391034

  •  21-09-2019
  •  | 
  •  

Вопрос

Я использую RabbitMQ в экземпляре EC2, и у меня есть таблицы Mnesia на томе EBS, поэтому, когда я делаю снимок и пытаюсь запустить другой экземпляр с теми же данными, оказывается, что таблица используется другим экземпляром RabbitMQ.

Единственный способ обойти это - отключить RabbitMQ для сброса / моментального снимка, а затем запустить его обратно, как только это будет сделано?

Есть ли способ очистить файлы, чтобы они не казались заблокированными или были принудительно разблокированы?

Это не обычная проблема, с которой я столкнусь, просто любопытно, есть ли лучшее решение.

Чтобы уточнить, ошибка, которую я вижу, заключается в: timeout_waiting_for_tables.

Это было полезно?

Решение

Сначала вам нужно позаботиться о файловой системе.Не уверен, используете ли вы LVM, ext3, xfs или что-то еще, но если вы используете LVM, возможно, вы захотите проверить справочная страница dmsetup;в частности dmsetup приостановить / возобновить

В итоге вы получите что-то вроде:

dmsetup suspend <dev> 
ec2-create-snapshot <vol> 
dmsetup resume <dev> 

Как только вы включили / приостановили синхронизацию файловой системы, вам нужно беспокоиться о rabbitmq.Разработчик Rabbitmq Маттиас Радесток заявляет в поток электронной почты:

Но в отношении постоянных сообщений я не так уверен.Как осуществляется управление rabbit_persister.ЖУРНАЛОМ?Могу ли я просто сделать резервную копию этого когда угодно, или я могу взять только один из rabbit_persister.LOG.previous?

Я бы создал резервные копии обоих файлов. Она должна быть можно восстановить rabbit_persister.Журнал из резервной копии даже при том, что была сделана резервная копия в в середине добавление - я не чтобы хоть проверен. .Предыдущий журнал необходим на случай, если резервное копирование выполняется во время свертывания журнала.

Где я мог бы посмотреть, чтобы узнать, как часто это происходит?

Логика принятия решения о том, когда делать бросок журнал довольно сложный.

Могу ли я запустить ручной бросок?

rabbit__persister:force_snapshot() в оболочка Erlang делает свое дело.

Оформить заказ на принудительный снимок цель в Файл Rabbitmq Makefile.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top