Mysql backup
Перейти к навигации
Перейти к поиску
Содержание
Backup данных в MySQL
Бэкап структуры:
% mysqldump --all --routines --add-drop-table [--all-databases] --force [--no-data] [-c] \ --password=password --user=user [база] [таблицы] > backup_file
- --routines - копировать хранимые процедуры
- -c - формировать в виде полных INSERT
- --all-databases - backup всех баз
- --no-data - backup только структуры таблиц в базах
- [таблицы] - backup-ить только указанные таблицы.
Восстановление:
% mysql < backupfile
(для прямой вставки из текстового файла можно воспользоваться mysqlimport) (для анализа структуры базы, например, списка таблиц: mysqlshow <база>)
Резервная копия с INSERT-ами и всеми метаданными (триггеры, процедуры, события)
mysqldump -u username -p --complete-insert --triggers --routines --events database_name > backup_file.sql
Эта команда создаст дамп базы данных в виде SQL-файла с полными INSERT-запросами, триггерами, хранимыми процедурами и событиями.
Теперь при восстановлении этот файл будет содержать всю информацию о структуре базы данных, данных, триггерах и других объектах.
Скрипт для backup-а
Для того чтобы сделать дамп всех баз удобно воспользоватся скриптом:
#!/bin/sh /usr/local/bin/mysql --password='Здесь_указать_пароль_root' --user=root -e 'show databases;' | grep -v ^Database | \ awk '{system ("/usr/local/bin/mysqldump -a -c --add-drop-database --add-drop-table --password=\"Здесь_указать_пароль_root\" --user=root "$1" > /home/mysql/"$1".sql; chmod 400 /home/mysql/"$1".sql")}'
Старый вариант
Для того чтобы дампить все базы по отдельности но запаковывать в общий архив удобно воспользоватся скриптом:
/usr/bin/touch ./mysql_dump_bases.sh /bin/chmod 600 ./mysql_dump_bases.sh DATEDIR=`/bin/date +%d_%m_%Y-%H_%M` mkdir ./$DATEDIR /bin/chmod -R 700 ./$DATEDIR /usr/local/bin/mysql -u root --password="здесь_указать_пароль_root" --execute="show databases" \ | /usr/bin/grep -v ^Database$ | /usr/bin/grep -v ^test$ \ | awk '{print "/usr/bin/touch ./"$1".sql && /bin/chmod 600 ./"$1".sql && /usr/local/bin/mysqldump --all --add-drop-table --force -c --password=\"здесь_указать_пароль_root\" --user=root "$1" > ./"$1".sql"}' \ > ./mysql_dump_bases.sh && /bin/chmod 600 ./mysql_dump_bases.sh && cd ./$DATEDIR \ && /bin/sh ../mysql_dump_bases.sh && cd ../ \ && /usr/bin/touch ./$DATEDIR.tar.gz && /bin/chmod 600 ./$DATEDIR.tar.gz \ && /usr/bin/tar cfz ./$DATEDIR.tar.gz ./$DATEDIR \ && /bin/rm -r ./$DATEDIR \ && /bin/rm ./mysql_dump_bases.sh
Файл с архивом создается в той же папке, из которой запускается скрипт.