резервное копирование (backup) всех баз mysql

Запись создана февраля 11, 2009

Прошелся по нескольким блогам. почитал и удивился тому что для того чтобы сделать дампы всех баз mysql люди используют mysqldump —all-databases. На мой взгляд вариант более чем неудобный.

Предложу более правильный вариант, снимаются дампы со всех баз данных каждая база в отдельный файл. Для пояснения:
/backup/mysql/ — папка куда будем складывать дампы.
megapass — пароль root к mysql

итак собственно сам скрипт:

for i in `mysql -pmegapass -e'show databases;' | grep -v information_schema | grep -v Database`; do mysqldump -pmegapass $i > `date +%Y-%m-%d`-$i; gzip `date +%Y-%m-%d`-$i;done

теперь поясню что делается, в цикле вывода имен всех баз данных кроме information_schema и Database выполняется mysqldump в файл дата-имя_базы, затем дамп жмется gzip-ом.

На выходе получаем пачку файлов на подобии:
2009-02-11-shakirov_kayako.gz
2009-02-11-shakirov_mantis.gz
2009-02-11-shakirov_openfire.gz

Например если в системе несколько пользователей и базы данных у них сделаны правильно (имя базы с префиксом имени пользователя, например shakirov_base), то можно делать бакапы баз разных пользователей в разные папки. С полученными бакапами можно поступать как удобно, хранить на отдельном диске, разделе. внешнем ftp сервере или заливать куда-то по scp.

» Запись из раздела CentOS Linux, MySQL, Unix | 5 комментариев

Комментарии



5 комментариев to “резервное копирование (backup) всех баз mysql”

  1. SeoMazzi on июня 3, 2009 10:15

    Сначала списком бекапил, но стало неудобно из-за необходимости каждый раз прописывать базу. Спасибо за совет!

  2. adw0rd on июля 2, 2009 10:03

    Сенк за совет, заюзаю!

  3. Dominatos on октября 14, 2009 19:53

    А каким образом все их восстановить за раз?

  4. DoC on мая 11, 2011 14:28

    спасибо — интересное решение

  5. hawk on октября 3, 2013 10:31

    Спасибо за скрипт!




Ответить