Является ли копирование каталога / var / lib / mysql хорошей альтернативой mysqldump?

Поскольку я делаю полную резервную копию всей моей системы debian, я подумал, является ли копия каталога /var/lib/mysql жизнеспособной альтернативой сбросу таблиц с помощью mysqldump.

  • вся необходимая информация содержится в этом каталоге?
  • Можно ли импортировать отдельные таблицы в другой MySQL?
  • Могут ли возникнуть проблемы при восстановлении этих файлов на (возможно, немного) другой версии сервера mysql?

person Matteo Riva    schedule 20.03.2010    source источник
comment
Делаем это годами, никаких противоречий!   -  person sepehr    schedule 20.03.2010
comment
У Percona есть инструмент, который в основном использует этот подход для горячего резервного копирования работающих серверов: percona. com / doc / percona-xtrabackup / 2.1   -  person Eli    schedule 27.03.2014


Ответы (5)


  • да
  • Да, если таблица использует механизм MyISAM (по умолчанию). Нет, если он использует InnoDB.
  • Вероятно, нет, и если есть, вам просто нужно выполнить mysql_upgrade, чтобы исправить их

Чтобы избежать получения базы данных в несогласованном состоянии, вы можете либо выключить MySQL, либо использовать LOCK TABLES, а затем FLUSH TABLES перед резервным копированием. Второе решение немного лучше, потому что сервер MySQL останется доступным во время резервного копирования (хотя и только для чтения).

person Etienne Dechamps    schedule 20.03.2010
comment
Спасибо всем за это решение. Вырезано как минимум час времени на реимпорт! И если вы хотите сделать это одной инструкцией: введите FLUSH TABLES WITH READ LOCK ;. - person Jan Goyvaerts; 29.07.2010
comment
Не могли бы вы подробнее ответить на вопрос, можно ли импортировать отдельные таблицы в другой MySQL? Да, если это MyISAM, это довольно скудный ответ. - person bobpaul; 15.11.2013

Этот подход будет работать безопасно только в том случае, если вы сначала выключите базу данных. В противном случае вы вполне можете впоследствии оказаться в противоречивом состоянии. Сначала используйте команду /etc/init.d/mysql stop. Затем вы можете перезапустить его после создания резервной копии.

person AlBlue    schedule 20.03.2010

Это нормально, если вы сначала выключите сервер MySQL и используете ту же версию для получения «резервной копии». В противном случае это не так.

person Joonas Pulakka    schedule 20.03.2010

Для полного обсуждения двух стратегий вам необходимо прочитать это: https://dev.mysql.com/doc/refman/5.5/en/backup-types.html

На данный момент лучшим бесплатным решением с открытым исходным кодом является Percona: http://www.percona.com/software/percona-xtrabackup

person TomDogg    schedule 20.04.2014

Я решительно скажу НЕТ.

По моему опыту, резервное копирование / восстановление файлов сырых данных mysql можно использовать только в одной и той же версии ОС / сервера. Он не работает кросс-платформенный (например, ubuntu / macos) с одинаковыми версиями сервера, а также если версии сервера mysql разные на одной платформе.

Percona XtraBackup (innobackupex) из дистрибутива Percona MySQL позволит вам жить & дифференциальное резервное копирование mysql и предоставит вам файлы резервных копий, которые можно восстановить путем копирования в /var/lib/mysql/. Вам необходимо запустить Percona Server для MySQL, чтобы использовать все это.

person seven    schedule 02.06.2019