Подскажите правильный способ организации сохранности базы данных. Понятное дело что надо делать резервное копирование, но вот самый интересный вопрос, как это дело организовать непрерывно. У себя на некритичных проектах делал бэкап по крону раз в сутки и сливал на отдельный сервер. В случае чего максимум потеряю данные за день. Можно конечно этот интервал уменьшить, но все равно остаются окна, когда данные не успевают попасть к копию. Как такие моменты решаются на реальных проектах, тем более если в базе присутствуют платежные данные?
Говорить о какой то надежности можно имея минимум 2 (а лучше больше) физических сервера.
Дальше настраиваем master-slave репликацию, если есть платежные данные - то в максимально параноидальном синхронном режиме.
Запрос не будет закончен пока данные не сохранятся на 2й сервер.
Спасибо. Никогда не сталкивался репликациями. Займусь изучением этого вопроса.
А что произойдет если один сервер умирает. То как в этом случае данные восстанавливаются?
Dmitry Shnyrev: если умирает слейв - ну и хрен с ним, если умирает мастер - ручками админа какой то из слевов назначается мастером. Поэтому рекомендуют иметь хотя бы 3 сервера.
Есть еще master-master репликация - но там многократно возрастает риск или нарваться на deadlock, или порушить репликацию. По крайней мере у нас с mysql как то не срослось.
Но есть galeracluster.com который обеспечивает синхронный master-master с практически автоматическим поднятием нод и гарантирует отсутствие дедлоков (в ущерб производительности понятное дело). Используем в продакшене, пока полет нормальный.
Dmitry Shnyrev: все данные будут лежать на сервере с репликой, можно запустить его как мастер, и потом настроить ему слейва, либо поднять из пепла мастер, залить дамп со слейва и дальше продолжить по старой схеме