Вопрос

Мой вопрос во многом похож этот.Однако я работаю на MySQL и ищу "самое технологичное" решение, которое я могу найти.

Ситуация такова, что у меня есть 2 базы данных, в которых должны быть одинаковые данные, но они обновляются в основном тогда, когда не могут связаться друг с другом.Я подозреваю, что существует какая-то кластеризация или система master / slave, которая могла бы их просто отлично синхронизировать.Однако в моих случаях это большой перебор, поскольку это всего лишь scratch DB для моего собственного использования.

Какой хороший способ сделать это?

Мой текущий подход заключается в том, чтобы создать объединенную таблицу на одном из них и время от времени передавать данные по проводам в другой с помощью insert / select .Это становится немного запутанным, пытаясь разобраться с первичными ключами, а с чем нет.(insert ignore кажется, работает некорректно)

p.s.Я могу легко создать запрос, который выбирает строки для передачи.

Это было полезно?

Решение 2

Мое текущее решение таково

  • настройте объединенную таблицу в исходном поле, которая захватывает таблицу в целевом поле
  • настройте представление в окне источника, в котором выбираются строки, подлежащие обновлению (в виде объединения объединенной таблицы).
  • настройте другую объединенную таблицу в целевом поле, которая отображает представление в исходном поле
  • выдать INSERT...SELECT...ON DUPLICATE UPDATE на целевом поле для запуска вытягивания.

Думаю, я мог бы просто взять исходную таблицу и сделать все это одним выстрелом, но, основываясь на журналах запросов, которые я просматривал, я предполагаю, что в итоге будет выполнено около 20 тыс. запросов или около 100-300 МБ передачи данных, в зависимости от того, как все происходит.Описанная выше настройка привела примерно к 4 запросам и передаче немного большего количества данных, чем на самом деле было необходимо.

Другие советы

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

Видишь http://www.howtoforge.com/mysql_database_replication для получения инструкций, вы должны быть готовы к работе через 10-15 минут, и вам не придется думать об этом снова.

Единственный недостаток, который я вижу, это то, что он асинхронный - ie.у вас должен быть один назначенный мастер, который получает все изменения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top