2016-01-28 4 views
0

Я ищу конфигурацию с несколькими мастерами для баз данных MySQL, которая более безопасна/эффективна, чем использование круговой моды.Multi-Master (n> = 3 узла) Paradigm

генплан:

  • Центральная база данных (A)
  • Периферии Базы данных (BZ)

Взаимодействие Требования (A < -> (BZ)):

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

Данные, которые централизованы, в основном статичны. Изменения в базе данных периферии, которые добавляются, - это, в основном, записи о продажах, которые не обязательно должны немедленно удалять узлы. Все таблицы используют auto_increment_increment и auto_increment_offset, чтобы позаботиться обо всех ошибках перезаписи при слиянии журналов.

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

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

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

ответ

0

Да, запуская асинхронную кластеризацию на трех узлах отстой - на самом деле он может даже сосать через 2 узла. Percona и MariaDB - оба вилки MySQL, и оба вместе с MySQL поддерживаются Galera cluster.

В любой из этих 3 вы можете заменить текущие серверы MySQL, но есть some caveats.

Они должны быть только хозяином и подчиненным центральной базы данных.

Вы, кажется, несколько смущены отношениями хозяин/раб.Для высокой доступности, масштабируемости и производительности вы действительно хотите, чтобы все узлы были эквивалентными или выполнялись с разбиением на разделы/федерацией (но разделение/федерация действительно сложно сделать). Нет «центральной базы данных».

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

(обратите внимание, что переход на PstgreSQL, в то время как отличный продукт, потребует много регрессионного тестирования и перезаписи кода).

+0

Что я должен был сказать, базы данных периферии должны зависеть только от центральной базы данных. Если другой периферийный узел опускается, я не хочу, чтобы моя текущая репликация завершилась неудачей или вам нужно пройти какой-то резервный механизм для восстановления. Я хочу, чтобы все записи проходили через центральную базу данных и, если возможно, разгонялись по всем другим периферийным базам данных. Я просто не хочу, чтобы временные базы других периферийных баз влияли на другие базы данных, как то, что произойдет в круговой системе. Все периферийные узлы используют Java (Hibernate/JDBC), а центральная база данных имеет веб-интерфейс в PHP. –