Я ищу конфигурацию с несколькими мастерами для баз данных MySQL, которая более безопасна/эффективна, чем использование круговой моды.Multi-Master (n> = 3 узла) Paradigm
генплан:
- Центральная база данных (A)
- Периферии Базы данных (BZ)
Взаимодействие Требования (A < -> (BZ)):
- Все периферийные базы данных требуют доступа для чтения/записи к центральной базе данных.
- Все изменения, внесенные в центральную базу данных (будь то с самого сервера или смены ретрансляционной периферии), должны распространяться на все периферийные базы данных.
- Базы данных периферийных устройств не должны иметь никакого отношения к другим базам периферийных устройств.
- Они должны быть только хозяином и подчиненным центральной базы данных.
- Каждая база данных периферийных устройств должна работать с хост-сервером, не имеющим текущего интернет-соединения, ретранслируя все изменения в центральную базу данных при повторном подключении.
Данные, которые централизованы, в основном статичны. Изменения в базе данных периферии, которые добавляются, - это, в основном, записи о продажах, которые не обязательно должны немедленно удалять узлы. Все таблицы используют auto_increment_increment
и auto_increment_offset
, чтобы позаботиться обо всех ошибках перезаписи при слиянии журналов.
В настоящее время действует круговая система, но это определенно не идеально. Я не хочу, чтобы периферийные узлы полагались друг на друга или должны были быть переписаны для переназначения баз данных резервного копирования, чтобы поддерживать связь в течение времени простоя. Я хочу установить мастер-мастер между центральной базой данных и каждой отдельной базой данных периферии.
Если вы считаете, что совершенно другая парадигма уместна, не стесняйтесь рекомендовать как таковой. Программное обеспечение, работающее в той же сети, что и каждый сервер периферии, нуждается в оптимальной скорости с отказоустойчивостью для локальных интернет-отключений, где все изменения в конечном итоге превращают их в другие периферийные базы данных.
Если вы можете рекомендовать другое программное обеспечение базы данных, такое как MariaDB или PostgreSQL, с поддержкой того, что я хочу, не стесняйтесь публиковать решение, используя их структуру. Пока база данных реляционная, я, скорее всего, удастся выполнить порт.
Что я должен был сказать, базы данных периферии должны зависеть только от центральной базы данных. Если другой периферийный узел опускается, я не хочу, чтобы моя текущая репликация завершилась неудачей или вам нужно пройти какой-то резервный механизм для восстановления. Я хочу, чтобы все записи проходили через центральную базу данных и, если возможно, разгонялись по всем другим периферийным базам данных. Я просто не хочу, чтобы временные базы других периферийных баз влияли на другие базы данных, как то, что произойдет в круговой системе. Все периферийные узлы используют Java (Hibernate/JDBC), а центральная база данных имеет веб-интерфейс в PHP. –