Бэкап баз mysql
Бэкап данных одно из очень важных мероприятий проводимых (настроенных …) системным администратором. Конечно на самом деле бэкап нужен везде, ведь Ваши фотки которые Вы копите уже 5 лет тоже важны и может быть даже важнее супер баз данных на Вашем предприятии или документы которые Вы набираете и храните годами.
Но сегодня мы остановимся на сохранение баз данных mysql. И хоть mysql мне перестает нравиться из за того что им теперь владеет Oracle, и я больше стал любить Postgres.
чтобы сделать бэкап баз mysql нужно определиться что нам нужно — или одна база конкретно, или все. Если одна то смотрим какие у нас есть базы
#mysql
#show databases;
Увидели базу и запоминаем название с которым будем работать. Для сохранения используется утилита mysqldump она имеет разнообразные параметры
-f, —force игнорировать ошибки
-u логин под которым работаем с БД
-p запрашиваем пароль (можно указать явно без пробела)
—databases для создания рабочей базы «с нуля», без использования данного ключа восстанавливается одну базу данных и явно указывается, куда нужно помещать восстанавливаемые данные.
—all-databases сделать копии всех баз данных.
—no-data. создается только копия структуры таблицы/баз без самих данных.
—result-file=название файла — этот ключ можно использовать для перенаправления вывода в файл. Можно использовать обычное перенаправление командой «>» или «< »
—quick пишет данные сразу на диск минуя запись в память
—default-character-set=название кодировки Указывает наименование кодировки
Зная все эти нехитрые параметры сделаем архив базы example
mysqldump -u root -p -f example > \example.mysql
и можно его развернуть обратно
mysql -u root -p -f example < \example.mysql
Также удобно сразу сжать базу (если она вдруг большая)
mysqldump -u root -p -f example | gzip -c > example.mysql.gz
Используя тот же gzip мы можем сделать название архива с датой
mysqldump -u root -p -f example | gzip -c > `date "+%Y-%m-%d"`example.mysql.gz
Таким образом можно создавать архив определенное количество раз (каждый день или чаще) через crontab (не забудьте прописать логин и пароль явно), у удалять старые архивы можно из того же crontab командой
find ~/backupdir -name "*.gz" -mtime +31 -exec rm -f {} \;