Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

сети:резервное_копирование_mysql [2013/10/03 10:10] (текущий)
Строка 1: Строка 1:
 +====== Резервное копирование MySQL ======
 +Применимость:​ Linux, mysql
  
 +Слова для поиска:​ бэкап, СУБД
 +
 +----
 +===== Задача:​ =====
 +
 +При работе сервера баз данных файлы базы данных постоянно открыты на запись и непрерывно модифицируются и скопировать их в таком состоянии невозможно. ​
 +
 +Мы используем для резервного копирования мгновенные снимки файловой системы (snapshot) и обходим это обстоятельство.  ​
 +
 +Однако это не гарантирует сохранение баз данных в  согласованном состоянии и иногда приводит к невозможности восстановления работоспособного состояния сервера. Вероятность подобного очень невелика,​ но она существует по объективным причинам.
 +
 +
 +===== Решение:​ =====
 +Для решения этой задачи существуют специальные инструменты.
 +==== mysqldump, mysqlhotcopy ====
 + 
 +Все СУБД имеют в своем составе собственные средства для получения резервной копии (дампа) базы данных. Это mysqldump для mysql, pg_dump для postgresql и т.п. ​
 +
 +В качестве одного из возможного варианта решения этой задачи мы рекомендуем использовать утилиту mysqlhotcopy.
 +
 +Утилита mysqlhotcopy представляет собой Perl-сценарий,​ использующий SQL-команды LOCK TABLES, FLUSH TABLES и Unix-утилиты cp или scp для быстрого получения резервной копии базы данных.
 +
 +Подробности по ссылкам внизу статьи.
 +
 +Еще более проработанное решение - утилита **AutoMySQLBackup**
 +
 +
 +==== AutoMySQLBackup ====
 +
 +AutoMySQLBackup с базовой конфигурации может создавать ежедневные,​ еженедельные и ежемесячные резервные копии баз данных MySQL с одного или нескольких серверов MySQL.
 +
 +Прочие ​ функции:​
 +  * Уведомление по электронной почте
 +  * Сжатие и шифрование копий
 +  * Управление правилами ротации
 +  * Инкрементальные резервные копии
 +
 +**Порядок установки в CentOS:**
 +
 +1. Скачайте ​ [[http://​sourceforge.net/​projects/​automysqlbackup/​|последнюю версию]] и распакуйте архив в отдельном каталоге и выполните скрипт установки **install.sh**  ​
 +
 +**Например:​**
 +  mkdir ~/tmp1
 +  cd ~/tmp1
 +  wget http://​downloads.sourceforge.net/​project/​automysqlbackup/​AutoMySQLBackup/​AutoMySQLBackup%20VER%203.0/​automysqlbackup-v3.0_rc6.tar.gz
 +  tar -xzf automysqlbackup-v3.0_rc6.tar.gz
 +  ./​install.sh
 +
 +**Порядок установки в Debian / Ubuntu:**
 +
 +Пакет automysqlbackup есть в репозиториях debian и усттановка производится командой:​
 +
 +  apt-get install automysqlbackup
 +
 +<wrap hi>​Для настройки можно использовать глобальный файл параметров (/​etc/​automysqlbackup/​automysqlbackup.conf) или создать отдельный конфиг для каждого задания,​ например - /​etc/​automysqlbackup/​myserver.conf
 +</​wrap>​
 +
 +2. Откройте в любимом текстовом редакторе файл ​ /​etc/​automysqlbackup/​myserver.conf,​ раскомментруйте ​ и укажите необходимые вам параметры.
 +
 +Наиболее важные - имя, пароль и где хранить архивы:​
 +  CONFIG_mysql_dump_username='​root'​
 +  CONFIG_mysql_dump_password='​mega_password'​
 +  CONFIG_backup_dir='/​var/​backup/​db'​
 +  CONFIG_mail_address='​webmaster@mydomain.com'​
 +
 +Каждый параметр описан в конфигурационном файле, изучите его не спеша.
 +
 +Большинство параметров закомментировано символом #. Если вас устраивает значение по умолчанию оставьте параметр как есть, если нужно изменить значение,​ то нужно убрать # и задать желаемое значение.
 +
 +Уделите внимание разделу "​Rotation Settings"​ в конфигурационном файле если у вас особые правила ротации бэкапов.
 +
 +<WRAP center round info 60%>
 +Глобальные параметры automysqlbackup в Debian находятся в файле **/​etc/​default/​automysqlbackup**
 +</​WRAP>​
 +
 +
 +==== Запуск automysqlbackup ====
 +
 +Если просто выполнить команду **automysqlbackup**,​ то он будет выполнена с параметрами из файла /​etc/​automysqlbackup/​automysqlbackup.conf
 +Если вы создали для каждой базы данных отдельный конфиг,​ то можно выполнить команду с указанием конкретного конфига:​
 +
 +  automysqlbackup -c /​etc/​automysqlbackup/​myserver.conf
 +
 +Для выполнения в фоновом режиме,​ что подходит для заданий cron лучше использовать:​
 +
 +  automysqlbackup -bc /​etc/​automysqlbackup/​myserver.conf
 +
 +Пример задания для cron (делать бэкап ежедневно в 4:22):
 +
 +  22 4  *   ​* ​  ​* ​ root /​usr/​local/​bin/​automysqlbackup -bc /​etc/​automysqlbackup/​myserver.conf
 +
 +<wrap em>​Убедитесь,​ что путь к исполняемому файлу у вас именно такой</​wrap>​
 +
 +==== Восстановление базы данных ====
 +
 +Если база данных удалена,​ то создайте новую. Пример команды создания базы данных.
 +
 +  mysqladmin -u USER -pPASSWORD create NEWDATABASE
 +
 +Выберите нужный файл и декопрессируйте его и загрузите в базу данных. В зависимости от выбранного в конфиге automysqlbackup архиватора (компрессора) используйте соответствующую утилиту - gunzip для ​ file.gz (или ​ bunzip2 для file.bz2)
 +
 +Это можно сделать одной командной конструкцией:​
 +
 +Для архивов gzip:
 +  gunzip < /​path/​to/​backupfile.sql.gz | mysql -u USER -pPASSWORD DATABASE
 +или так
 +  zcat /​path/​to/​backupfile.sql.gz | mysql -u USER -pPASSWORD DATABASE
 +
 +Для архивов bzip2
 +  bunzip2 < /​path/​to/​backupfile.sql.bz2 | mysql -u USER -pPASSWORD DATABASE
 +или так
 +  bzcat /​path/​to/​backupfile.sql.bz2 | mysql -u USER -pPASSWORD DATABASE
 +
 +
 +===== Смотрите также: =====
 +  * [[сети/​бинарный_журнал_обновлений_mysql]]
 +  * [[http://​sourceforge.net/​projects/​automysqlbackup/​|AutoMySQLBackup]]
 +  * [[http://​www.howtoforge.com/​creating-mysql-backups-with-automysqlbackup-on-ubuntu-9.10|Creating MySQL Backups With AutoMySQLBackup On Ubuntu]]
 +  * [[http://​dev.mysql.com/​doc/​refman/​5.0/​en/​mysqlhotcopy.html|mysqlhotcopy — A Database Backup Program]]
 +  * [[http://​program.rin.ru/​razdel/​html/​554-4.html|mysqlhotcopy,​ Копирование баз данных и таблиц MySQL]]
 +  * [[http://​www.howtoforge.com/​back_up_mysql_dbs_without_interruptions|How To Back Up MySQL Databases Without Interrupting MySQL ]]
 +---- 
 +
 +
 +{{tag>​backup mysql}}