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

как зеркалировать базу данных и реализовать отказоустойчивое решение

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

моя настройка выглядит следующим образом:

  1. У меня три сервера под управлением ubuntu linux 16.04. у всех трех есть свои фиксированные IP-адреса.

  2. В августе на одном из серверов будет размещен веб-сайт с большой серверной базой данных mysql. Пользователи (порядка 500-1000) будут постоянно регистрировать записи в базе данных в основном в дневное время, например, с 8 до 20 часов. Администраторы будут запрашивать в базе данных различную статистику.

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

Я действительно не знаю, с чего начать. Мои основные вопросы

  1. Как сохранить синхронизацию большой базы данных mysql на двух разных машинах? база данных будет большой (возможно, 5-10 ГБ), поэтому потребуется время, чтобы вывести и перестроить базу данных из файла .sql. Если случится катастрофа, я потерял 10 минут регистрации и времени безотказной работы, но не часы, чтобы восстановить базу данных на другом сервере из файла sql.

  2. Как передать управление второму серверу, если первый выйдет из строя? Могу ли я отслеживать активность этих двух серверов с помощью третьего сервера и переключать IP-адреса, если основной сервер выходит из строя? В таком случае были бы признательны за некоторые подробные шаги. Я видел, как в этом вопросе использовались такие жаргоны, как «сердцебиение» и «виртуальные IP-адреса», что для меня слишком абстрактно. Мне нужно как можно больше деталей, и если это выходит за рамки моего опыта, мне нужно выяснить это, чтобы я мог вовремя сообщить об этом своему боссу.

Спасибо за помощь

Согласитесь с предыдущим ответом, репликация mysql может быть возможным решением.

Кроме того, вы можете создать общее хранилище между некоторыми из ваших серверов и разместить на нем виртуальную машину с базой данных, таким образом, она будет перемещаться между серверами, если что-то произойдет. Для этого сценария используйте что-то вроде HPE VSA или StarWind. У них также есть бесплатные версии.

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

Mysql Replication неплохо решает эти проблемы даже для географически распределенных баз данных.

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