Отказоустойчивость через репликацию баз данных SQL - PullRequest
0 голосов
/ 21 июля 2011

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

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

Какое наилучшее практическое решение для отказоустойчивости используется в реальном мире.

1 Ответ

1 голос
/ 21 июля 2011

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

Классическим примером являются первичные ключи - если у вас есть 3 внутренних сервера, которые могут получать инструкцию «создать новую запись в таблице x» от серверов промежуточного программного обеспечения, и вы хотите реплицировать данные, вы должны убедиться, что в них нет столкновений.первичный ключ.Если вы используете целые числа в качестве типа данных первичного ключа, вы должны убедиться, что db server 1 не создает запись клиента с идентификатором 1, если этот идентификатор уже используется для записи на сервере 2. Это не трудная задача, но выможет легко потратить несколько недель на сборку и тестирование решения.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...