Прежде всего, почему любой из вас, ребята, не ответить на вопрос этот чувак? Иногда мы должны это делать из-за ограничений безопасности/соответствия/устаревших систем.
Есть некоторые варианты, которые я напишу здесь с псевдокодом. Не уверен, как в режиме реального времени ваша база данных, так что это не будет работать во всех случаях.
Требования
для этой работы базы данных должны быть в том же сервере. Если нет, вам нужно настроить механизм хранения в формате federate для доступа к удаленным данным. Как заявил другой человек, репликация MySQL по-прежнему может быть полезной, по крайней мере, при получении данных на один и тот же сервер, что делает синхронизацию быстрее без необходимости установки интегрированного хранилища. Ссылка: https://dev.mysql.com/doc/refman/5.7/en/federated-storage-engine.html
синхронизации Timing
можно синхронизировать по event
графику
MySQL позволит вам создавать события на определенном графике, чтобы выполнить свою работу (если вы не иметь любые внешние средства планирования заданий).
Надеюсь, у вас есть дата изменения какой-то, вы можете запросить один раз в день или более жесткие интервалы на всех полях, где modified_at
> = DATE_SUB (NOW(), ИНТЕРВАЛ? ЧАС)
Если вы в состоянии добавьте столбец, вы можете создать один под названием synced_at
, который будет немного более устойчивым к разным частотам сервера. Тогда вы можете просто запросить где synced_at
IS NULL или synced_at
< = modified_at
В качестве альтернативы, использование триггеров
MySQL поддерживает ДО и ПОСЛЕ триггеров INSERT/UPDATE/DELETE и т.д ... Вы можете использовать эти для запуска вашей логики.Имейте в виду, что для каждой транзакции вы получите небольшое снижение производительности, и это может легко перегрузить очень активные серверы производства.
Разница между BEFORE и AFTER невелика, за исключением того, что если вы используете триггеры типа BEFORE, вы можете выбросить sqlstate, чтобы предотвратить вставку в исходную таблицу, если важно, чтобы обе таблицы были сильно синхронизированы.
Синхронизация Логические
Инструкция INSERT/UPDATE/DELETE шаблон
Это псевдо-код, но ...
# new and updated records
INSERT ... ON DUPLICATE KEY UPDATE ...
SELECT FROM source_table
JOIN target_table.id
WHERE target_table.id IS NULL or modified_at > DATE_SUB(NOW(), INTERVAL ..)
# deleted records
TRIGGER ПОСЛЕ INSERT/UPDATE/DELETE
Как и выше, вы просто управляете одной записью за раз, и вы зеркалируете оператор триггера. Например: INSERT TRIGGER в исходной таблице должен просто запрашивать INSERT в целевой таблице.
Ядерное DROP/CREATE/INSERT
Простой, но не рекомендуется ничего, кроме, может быть, базы данных отчетов. Отбросьте всю таблицу и перестройте ее из других записей.
у вас абсолютно * есть * для репликации данных? Репликация данных может иметь много плохих вещей. –
@Marshall Tigerus - у каких плохих вещей есть репликация. его стандарт в MySQL и работает очень хорошо. –
есть. мы хотим в конечном итоге перейти к новым базам данных. у нас есть разные приложения для чтения и записи в OLD-базу данных. Но в промежутке времени мы хотели бы настроить новую базу данных и попросить приложения перемещаться один за другим. – sumajumd