2008-08-11 3 views
10

Когда у меня есть два сервера mysql, которые имеют разные задания (содержащие разные базы данных), но хотят иметь возможность использовать один из них для проскальзывания, когда другой не работает, что бы вы предложили, как я могу сохранить данные по обоим из них равны «близко к реальному времени»?Репликация MySQL для резервного сценария

Очевидно, что невозможно создать полную базу данных каждые 6 минут.

Я читал о Binary Log, это то, как мне нужно идти? Неужели это не замедлит резервный сервер? Есть ли способ не включать некоторые таблицы в двоичный журнал - где не имеет значения, что данные изменились?

+0

У меня была такая же проблема, но я не совсем уверен, что с ней делать. [Вот мой вопрос SO с несколькими другими предложениями] (http://stackoverflow.com/questions/3798/full-complete-mysql-db-replication-ideas-what-do-people-do)./тр – mauriciopastrana 2008-08-11 19:32:36

ответ

2

Двоичный журнал - это, безусловно, путь. Тем не менее, вы должны знать, что с MySQL вы не можете просто переключаться между серверами, как это.

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

Если вам нужны настоящие резервные базы с возможностью «горячей» замены, вам, возможно, придется перейти в систему, отличную от MySQL. Если все, что вам нужно, это резервная копия только для чтения, которую вы можете использовать мгновенно в наихудшем сценарии (мастер постоянно уничтожается), Binary Log подойдет вам просто отлично.

3

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

Для сервера 1 я бы добавил --replicate-do-db=server_2_db и на server2 --replicate-do-db=server_1_db на ваш my.cnf (или my.ini на Windows). Это означало бы, что только операторы для server_1_db будут реплицированы на сервер2 и наоборот.

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

Смежные вопросы