Как мне синхронизировать две базы данных scratch
-
08-07-2019 - |
Вопрос
Мой вопрос во многом похож этот.Однако я работаю на 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.у вас должен быть один назначенный мастер, который получает все изменения.