Работает ли gearmand с libdrizzle, когда mysql-database некоторое время не работает?

Используйте-Case:

  • Gearmand полностью работоспособен с libdrizzle в качестве персистентного уровня к базе данных mysql
  • Дождевое соединение разрывается (например, база данных gearmand блокируется на несколько минут во время ночных операций резервного копирования, или происходит сбой сервера mysql или проблемы с сетью на сервере базы данных).

Вопрос:

Работает ли gearmand без упорства в этот момент (MySQL) и наверстывает упущенное позже?

1 ответ

Решение

Ответ

Нет.

подробности

  • Debian 6
  • gearmand 1.1.8 (через https://launchpad.net/gearmand)
  • ровно 5000 рабочих мест будет создано с помощью doBackground
  • сохранить рабочие места в MySQL

/usr/local/sbin/gearmand -q mysql --mysql-user user1 --mysql-пароль pass1 --mysql-db gearmand

Сценарий № 1

Сценарий:

  • Включить блокировку READ для таблицы очереди gearman

Результат:

  • Сценарий, который создает фоновые задачи, приостановлен.
  • После снятия блокировки чтения сценарий продолжается и успешно создает все 5000 заданий.
  • Примечание: я только что проверил блокировку на несколько секунд. Сценарий может произойти сбой из-за тайм-аута.

Сценарий № 2

Сценарий:

  • Остановите весь экземпляр сервера mysql (с очередью gearman)

Результат:

  • Без mysqld рабочие места не могут быть созданы.
  • Создано 3974 рабочих места из 5000.
  • выход редуктора:

    Ошибка mysql_stmt_prepare: не удается подключиться к локальному серверу MySQL через сокет X

  • Вывод PHP-скрипта:

    Предупреждение PHP: GearmanClient::doBackground(): gearman_client_run_tasks:QUEUE_ERROR:QUEUE_ERROR

К сожалению, в моих тестовых сценариях механизм перестает работать, если уровень персистентности mysql недоступен.

Другие вопросы по тегам