Оптимальный способ сделать MySQL копирует для довольно больших баз данных (MyISAM / InnoDB)

6 ответов

Я имел хороший успех с репликацией MySQL и ночным tarballs. Для меньшего дб, mysql базы данных и схемы я использую комбинацию сценариев, разработанных для использования mysqlhotcopy и mysqldump.

Горячее резервное копирование InnoDB является большим коммерческим продуктом, но я не уверен, как оно обрабатывает смешанные таблицы в той же базе данных. рекомендация pQd для XtraBackup может быть хорошей для сравнения с этим.

Другие как снимки LVM и я сказал бы, что это - определенно что-то для рассмотрения. В конечном счете комбинация решений, вероятно, была бы лучшей.

Также известно, что это - старая тема. Между книгой MySQL High Performance, руководством MySQL и предыдущими вопросами о ServerFault - это было исчерпано на общей основе. См.:

5
ответ дан 2 December 2019 в 22:56
  • 1
    +1; с myisam Вы никогда не знаете, есть ли у Вас логически последовательное резервное копирование [взятый lvm/mysqldump/from, моют] или нет. возможно, если Вы изменения приложений только во время рабочего времени - можно безопасно вывести его ночью, иначе - Вы никогда не уверены, и никакой метод не поможет. –  pQd 7 May 2010 в 18:18
  • 2
    Я думаю you' ре прямо о смешивании решений. Как упомянуто под pQd' s отвечают I' ll, вероятно, берут снимки LVM и изучают xtrabackup утилиту (говорит, что она может обработать смешанные таблицы). Я изучил InnoDB' s горячее резервное копирование однако I' m всегда один для проектов с открытым исходным кодом. Спасибо за ссылки я изучил, 2 из, но ответы довольно универсальны / doesn' t решают проблемы I' m имеющий / they' ре, относящееся ot больше " normal" и " mundane" базы данных. –  WinkyWolly 7 May 2010 в 20:49

xtrabackup - по крайней мере, для innodb.

4
ответ дан 2 December 2019 в 22:56
  • 1
    Интересный однако I' d как более корректное решение не волноваться о моем соединении таблиц InnoDB / MyISAM. –  WinkyWolly 7 May 2010 в 17:25
  • 2
    xtrabackup идет со сценарием, который может помогать Вам со взятием резервных копий myisams также, но проверять мой комментарий под Warner' s сообщение –  pQd 7 May 2010 в 18:19
  • 3
    Спасибо, похож, я мог бы пойти это направление и соединение в снимках LVM в придачу. Это действительно указывает, что может " handle" таблицы MyISAM также через " innobackupex" сценарий. Я предполагаю I' ll дают этому водоворот и видят точно, что происходит. –  WinkyWolly 7 May 2010 в 20:46

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

3
ответ дан 2 December 2019 в 22:56

На EC2 EBS я прямо сейчас использую xfs_freeze. Я изучаю возможное переключение на xtrabackup в какой-то момент, но когда я дал ему первый тестовый прогон, это было очень, очень голодный ЦП.

0
ответ дан 2 December 2019 в 22:56
  • 1
    К сожалению, я только использую XFS на медиасерверах прямо сейчас так that' s не опция. Какой опыт (кроме голодного ЦП, возможно, больше детали?) Вы имели с xtrabackup? Вы создавали резервную копию чистых таблиц InnoDB или соединения? –  WinkyWolly 7 May 2010 в 21:33
  • 2
    Мое самое большое колебание было то, что это уничтожило ЦП в течение приблизительно 30 минут, поскольку это завершилось (резервное копирование DB данных приблизительно на 35 ГБ), представив сервер БД, только незначительно функциональный - конечно, не что-то I' d, вероятно, для работы производственного ведущего устройства. Я на самом деле уже преобразовал свое оставление немногими таблицами MyISAM в InnoDB частично в целях этого. Я думаю it' d, вероятно, быть в порядке для работы ведомого устройства пока он doesn' t заставляют репликацию падать существенно позади. –  user5336 7 May 2010 в 22:17

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

0
ответ дан 2 December 2019 в 22:56

Если вы сохраняете свои таблицы MyISAM только для устаревших целей (вы не удосужились их изменять), вот что я использую, чтобы легко это исправить:

    mysql -u root --password=<password> --database=db_name -B -N -e "SHOW TABLES" | awk '!/not_this_db/ && !/or_this_one/ && /^[a-z]/ {print "ALTER TABLE", $1, "ENGINE=INNODB;"}' | mysql -u root --password=<password> --database=db_name

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

Затем используйте xtrabackup, чтобы скопировать всю базу данных прямо на другой сервер без блокировки каких-либо таблиц или использования слишком большого количества операций ввода-вывода диска (после установки ключей ssh ​​rsa):

innobackupex --throttle=500 --compress --stream=xbstream /doesntneedtoexist | ssh user@otherhost "xbstream -x -C /root/backup/"

, а затем вы можете сделать шаг применения журнала полностью разделить и сэкономить дисковое пространство, ввод-вывод и ЦП на производственном сервере.

HowTO от Percona для использования xtrabackup

0
ответ дан 2 December 2019 в 22:56

Теги

Похожие вопросы