Назад | Перейти на главную страницу

Как безопасно реплицировать данные Memcached?

У меня есть ~ 100 ГБ данных, работающих на нескольких серверах Memcached, но мы переносим всю нашу инфраструктуру на Amazon AWS, поэтому я хотел бы найти способ реплицировать эту информацию на этих новых серверах.

Проблема, с которой я столкнулся прямо сейчас, заключается в том, что для фиксации всей информации в базе данных мне нужно около 12-14 часов, и пока это происходит, приложение. должен снизиться (мы получаем больше данных на единицу времени, чем то, что можем сохранить в базе данных).

Наша основная забота заключается в том, чтобы приложение оставалось в живых в течение этого периода, поэтому мне было интересно, можете ли вы предложить какой-либо инструмент, который позволяет нам копировать данные с одного сервера memcached на другой без необходимости останавливать серверы или беспокоиться об этом рука.

См. Эту ссылку:

http://horicky.blogspot.com/2009/10/notes-on-memcached.html

Где сказано:

Когда один из серверов выходит из строя, все записи, принадлежащие этому серверу, теряются. Более высокая устойчивость может быть достигнута за счет хранения избыточных копий данных на разных серверах. Memcached не поддерживает репликацию данных. Об этом должно позаботиться приложение (или клиентская библиотека).

Обратите внимание, что алгоритм хеширования сервера по умолчанию не очень хорошо справляется с ростом и уменьшением количества серверов. Когда количество серверов изменится, уравнение владения (ключ мода N) будет неверным. Другими словами, если сбойный сервер необходимо удалить из пула, общее количество серверов будет уменьшено на единицу, а все существующие записи необходимо перераспределить на другой сервер. Фактически, весь кеш (среди всех серверов) становится недействительным, даже когда выходит из строя только один сервер.

Есть "перепкэшированные":

http://repcached.lab.klab.org/

но это набор патчей для memcached. Я думаю, это будет сложно реализовать против вашего производственного приложения.