Различия

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

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

сети:резервное_копирование_mysql [2013/10/03 10:10]
сети:резервное_копирование_mysql [2022/04/01 15:08] (текущий)
Строка 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}}