У меня есть база данных 4 ГБ в MySQL. Как мне сделать резервную копию? Кроме того, есть ли способ ускорить процесс восстановления в случае, если мне потребуется восстановление?
В настоящее время я каждую ночь использую задание cron, которое вызывает mysqldump
сбросить все, и я храню 3 дня бэкапов.
У нас есть около 90 ГБ в MySQL, поэтому вот несколько предложений:
mysqldump -u USER -pPASS --single-transaction -Q --databases foo bar
(Используйте документацию, чтобы проверить, работают ли эти переключатели для вас.)Лучше всего не прерывать нормальную работу. Для высоконадежных и отказоустойчивых систем у вас есть две синхронизированные базы данных, а вы создаете резервную копию вторичной. (например эта статья Howtoforge)
В противном случае прочтите руководство: используйте myseldump, как сейчас, или используйте скрипт mysqlhotcopy (используйте точно так же, как mysqldump), или остановите БД и просто скопируйте файлы frm, MID, MYI (используя rsync).
Я думаю, что механизм остановки + копирования файлов - это самый быстрый из возможных вариантов.
Если некоторые из ваших баз данных доступны только для чтения или редко модифицируются, выделите их как менее часто используемые cron.
Чтобы ответить на ваш вопрос - extended_insert вариант подходит мне. Если у вас достаточно ресурсов для восстановления, extended_insert вставит огромные фрагменты данных в один запрос, что ускорит восстановление.
Вам действительно стоит подумать о Percona Xtrabackup
Сценарий оболочки "innobackupex" может обрабатывать MyISAM, но для неблокирующего / оперативного резервного копирования все ваши таблицы должны быть InnoDB.
Ура