Подтвердить что ты не робот

Синхронизация базы данных Mysql между двумя базами данных

Мы запускаем приложение Java PoS (Point of Sale) в различных магазинах с бэкэндом MySql. Я хочу, чтобы базы данных в магазинах были синхронизированы с базой данных на хост-сервере.

Когда в магазине происходят какие-то изменения, они должны обновляться на главном сервере. Как мне этого добиться?

4b9b3361

Ответ 1

Репликация не очень сложно создать.

Вот несколько хороших уроков:

http://aciddrop.com/2008/01/10/step-by-step-how-to-setup-mysql-database-replication/

http://www.ghacks.net/2009/04/09/set-up-mysql-database-replication/

http://dev.mysql.com/doc/refman/5.5/en/replication-howto.html

http://www.lassosoft.com/Beginners-Guide-to-MySQL-Replication

Вот некоторые простые правила, которые вам нужно иметь в виду (там, конечно, конечно, но это основная концепция):

  • Установить 1 сервер (мастер) для записи данных.
  • Настройка 1 или более серверов (ведомых) для чтения данных.

Таким образом, вы избежите ошибок.

Например: Если ваш script вставить в те же таблицы как на главном, так и на ведомом, у вас будет повторяющийся конфликт первичного ключа.

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

ПРИМЕЧАНИЕ. Конечно, вы можете читать мастер, и вы можете писать на подчиненный, но убедитесь, что вы не пишете в одни и те же таблицы (мастер для подчиненного и подчиненного подчиненных).

Я бы рекомендовал следить за вашими серверами, чтобы убедиться, что все в порядке.

Сообщите мне, если вам нужна дополнительная помощь

Ответ 2

три разных подхода:

  • Классический подход клиент/сервер: не помещайте в магазины какую-либо базу данных; просто попросите приложения получить доступ к вашему серверу. Конечно, это лучше, если вы установите VPN, но просто обернуть соединение в SSL или ssh является разумным. Pro: это то, как изначально были задуманы базы данных. Con: если у вас высокая задержка, сложные операции могут замедляться, вам, возможно, придется использовать хранимые процедуры, чтобы уменьшить количество раундов.

  • реплицированный мастер/мастер: как предложил @Book Of Zeus. Минусы: несколько сложнее в настройке (особенно если у вас несколько магазинов), взлом в любом магазине может потенциально поставить под угрозу всю систему. Плюсы: лучшая отзывчивость, поскольку операции чтения полностью локальны, а операции записи распространяются асинхронно.

  • автономные операции + шаг синхронизации: все работает локально и время от времени (может быть один раз в час, ежедневно, еженедельно и т.д.) записывать сводку со всеми новыми/измененными записями из последней операции синхронизации и отправлять к серверу. Плюсы: может работать без сети, быстро, легко проверить (если сводка читаема). Минусы: у вас нет информации в режиме реального времени.

Ответ 3

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

Комплексный и надежный Java API для ваших нужд.

Ответ 4

Посмотрите Инструменты сравнения схем и данных в dbForge Studio для MySQL. Этот инструмент поможет вам сравнить, увидеть различия, создать синхронизацию script и синхронизировать две базы данных.