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

Как синхронизировать базы данных сайта drupal с балансировкой нагрузки

У меня есть установка производственной среды, в которой мой сайт drupal размещен на двух серверах, сопоставленных с одним и тем же доменом, каждый с копией кода и базы данных, работающих на XAMPP. По сути, это две независимые сущности.

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

Какие у меня варианты? Есть ли способ «объединить» базы данных и сохранить все данные?

Вы можете решить эту проблему несколькими способами:

  1. Используйте только один сервер базы данных. Отключите один сервер mysql и подключите drupal на обоих серверах к одному серверу mysql. Это не лучшее решение, если ваша база данных загружена слишком быстро.

  2. Вы можете настроить master для репликации mysql. В этом сценарии вы сможете использовать оба сервера mysql, и все обновления будут реплицированы на оба сервера mysql. Это хорошо сбалансирует нагрузку на базу данных mysql без каких-либо изменений в коде drupal.

  3. Вы можете использовать главный подчиненный сервер репликации mysql. Здесь вы должны изменить код drupal, чтобы все обновления базы данных выполнялись на главном сервере, а затем реплицировались на подчиненный сервер. Это хорошее решение, если у вас небольшое количество обновлений в базе данных, потому что это решение не может сбалансировать ввод и обновления в базе данных как на mysql. Но репликация master-slave намного проще настраивать и обслуживать.

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

Я думаю, вам нужно посмотреть репликацию master-master / multi-master. Здесь на обоих серверах есть базы данных, которые являются ведущими, и каждое обновление будет фиксироваться в базе данных, а затем реплицироваться в другую базу данных, обеспечивая синхронизацию ваших баз данных.

http://en.wikipedia.org/wiki/Multi-master_replication
http://xeround.com/blog/2011/10/master-master-database-replication