Синхронизация двух баз данных mysql на разных серверах (один и тот же провайдер) - PullRequest
2 голосов
/ 04 июня 2011

У меня очень мало опыта работы с MySQL / SQL в целом - на самом деле всего n00b!

У меня есть работающий сайт и сайт разработчика, которые размещены на одном и том же интернет-провайдере, но на разных серверах, т.е. mysql1.foo.net и mysql2.foo.net.

Я хотел бы выяснить самый простой способ синхронизации двух баз данных - без необходимости экспорта целиком, стереть базу данных dev и восстановить.

Ответы [ 4 ]

1 голос
/ 04 июня 2011

Боюсь, что нет «легкого» решения. За исключением довольно маленьких баз данных, чтобы сваливать производство и восстанавливать на dev в течение ночи. Малый определяется как принятие <12 часов для операций резервного копирования, которые все еще очень значительны. </p>

Репликация, вероятно, не обрезает его, поскольку наличие копии только для чтения имеет ограниченную ценность, и я предполагаю, что вы не хотите, чтобы изменения в базе данных dev распространялись на prod.

Дамп - Восстановление (если возможно) имеет преимущества, хотя - вы регулярно проверяете, что резервная копия действительно работает - вам нужно регулярно писать и тестировать скрипты миграции схемы - вам нужно сделать их "невмешательными", чтобы они могли работать как задание cron

Эти методы значительно облегчают жизнь ИТ-специалистам и позволяют снизить риски, чтобы клиенты лучше спали.

На больших базах данных я не думаю, что есть простые (или дешевые!) Методы.

0 голосов
/ 03 мая 2017

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

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

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

Этот способ будет сложным, но вы сэкономите тонны серверного времени.Кроме того, это хороший способ контроля версий ваших серверов, так как они будут жаловаться каждый раз, когда ваши типы данных собираются урезать.

0 голосов
/ 03 мая 2017

Помимо репликации, вы должны посмотреть на MySQLdbcopy из MySQl Utilities. Ваши базы данных могут быть достаточно маленькими, чтобы скопировать их с помощью MySQLdbcopy, и вы можете поместить их в задание cron для автоматизации

0 голосов
/ 04 июня 2011

MySQL поддерживает репликацию master + slave и master + master, однако ваш хостинг-провайдер должен будет настроить ее для вас.

См. Дополнительную информацию, если вы заинтересованы: http://www.howtoforge.com/mysql_master_master_replication

Если вы хотите синхронизировать эти два раза как время от времени, просто используйте:

mysqldump -h server1.example.com -u user -p password database | mysql -u user -p database
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...