Синхронизация двух баз данных MySQL в двух разных местах


19

У меня есть две идентичные базы данных MySQL, одна на внутреннем сервере, а другая на сервере веб-хостинга. Я хочу обновлять базу данных на веб-хосте каждый день с базой данных на внутреннем сервере. Есть ли способ автоматизировать этот процесс, и как я могу сделать это вручную? Если я делаю это вручную, требуется ли мне получить дамп SQL базы данных на внутреннем сервере и затем импортировать его в базу данных на веб-хосте? Может кто-то совет, пожалуйста.


Вы можете сослаться на существующий ответ, опубликованный здесь, в StackOverflow stackoverflow.com/questions/52583/…
Махеш Патил

о # 2, если я сделаю полный дамп из внутреннего хранилища и импортирую в производство, это перезапишет онлайн-базу данных, я имею в виду, что у меня есть онлайн-покупатели на базе данных, размещенной в Интернете, и я хочу перенести покупки внутренней базы данных в оперативный режим, не могли бы вы уточнить, что случиться с автоинкрементами между двумя, если они оба резервируют один и тот же идентификатор, это будет грязно!
Шариф

Ответы:


20

У вас есть несколько вариантов:

  1. Настройте репликацию MySQL между серверами. Ваш внутренний сервер может выступать в качестве главного, а сервер веб-хоста - в качестве подчиненного. Любые обновления, выполненные на ведущем устройстве, будут немедленно реплицированы на ведомое устройство (при условии работающего соединения). Скорее всего, это будет самый простой и эффективный вариант выбора. Чтобы использовать репликацию, ваша внутренняя база данных должна быть доступна по сети с веб-хоста.

    Вы можете прочитать больше о репликации здесь .

  2. Каждый день вы можете выполнить mysqldump на внутреннем сервере, загрузить файл дампа на веб-хостинг и импортировать данные. Поскольку это полный дамп, если у вас очень большая база данных, это может оказаться невозможным. Если хотите, эту процедуру можно было бы написать в сценарии, чтобы избежать необходимости делать это вручную.

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

Если нет никакой связи между двумя базами данных, проще всего выбрать mysqldumps каждый день.


о # 2, если я сделаю полный дамп из внутреннего хранилища и импортирую в производство, это перезапишет онлайн-базу данных, я имею в виду, что у меня есть онлайн-покупатели на базе данных, размещенной в Интернете, и я хочу перенести покупки внутренней базы данных в оперативный режим, не могли бы вы уточнить, что случиться с автоинкрементами между двумя, если они оба резервируют один и тот же идентификатор, это будет грязно!
Шариф

4

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


2

Как настроить репликацию базы данных с MariaDB: https://www.techrepublic.com/article/how-to-set-up-database-replication-with-mariadb/


1
Добро пожаловать в DBA.SE. Мы ценим ваш вклад / участие. Тем не менее, сообщество ожидает определенного качества в ответах. Пожалуйста, прочитайте следующую статью: Как мне написать хороший ответ? (Справочный центр) В разделе « Ответить на вопрос» есть короткое предложение, которое гласит: Ссылки на внешние ресурсы приветствуются, но, пожалуйста, добавьте контекст вокруг ссылки, чтобы ваши коллеги-пользователи имели представление о том, что это такое и почему оно есть
Джон ака hot2use

0

Вы можете использовать Navicat . Это в первую очередь менеджер БД, но он имеет функции передачи и синхронизации данных, а также планировщик, поэтому вы можете автоматизировать. Это не бесплатно, но есть 30 полнофункциональных пробных версий.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.