Назад | Перейти на главную страницу

debian mysql автоматическое ежедневное резервное копирование

Мне нужно ежедневно делать резервную копию моей базы данных Mysql на сервере Debian. Я знаю, что существует множество сценариев, но мне нужно ежедневно выполнять резервное копирование в виде файла sql и размещать каждую резервную копию отдельно (может быть, текущая дата как имя файла?) В одной папке, чтобы не перезаписывать один файл при каждой резервной копии.

С уважением

Я постоянно использую automysqlbackup.sh Он выполняет mysqldump ежедневно, поддерживает их в течение недели, сохраняет еженедельные резервные копии в течение месяца и ежемесячно в течение года - или около того ... все это очень легко!

Что-то вроде:

 for db in $(mysql -e "show databases" -B  --skip-column-names); do
     mysqldump --opt --databases "$db" \
     | gzip -3 --rsyncable > "/var/backup/$db-$(date +%Y-%m-%d).sql.gz"
 done

Затем вы можете использовать это в задании cron для ежедневного резервного копирования.

Вы можете сделать так, чтобы mysqldump дамп всех баз данных в один файл, но это очень затрудняет восстановление только одной базы данных, если что-то пойдет не так. Если вы копируете файл на другой сервер через rsync, вам действительно нужна опция --rsyncable. Он тратит немного места на диске в обмен на лучшую производительность по сравнению с rsync. В основном это связано с тем, как rsync вычисляет блоки данных для передачи.

Мы используем что-то очень похожее на приведенный выше сценарий, за исключением того, что мы не используем дату в имени файла, поскольку это заставляет вас иметь дело с очисткой старых резервных копий. Мы используем backuppc, чтобы хранить старые копии. Если у вас еще нет решения для удаленного резервного копирования, я настоятельно рекомендую посмотреть на backuppc.

Не забудьте добавить скрипт в crontab

15 0 * * * /path/to/script.sh

Мне Дэвид хорошо выглядит, но еще пара для вашей справки (вторая создает резервную копию всех баз данных, но параметры mysql Дэвида лучше, чем команда sed, я думаю):

Пример 1:

#!/bin/bash
#Create local backups of the mysql drupal database for easy restore
#KMB 2008

dumpdir='/root/drupaldumps'
backupdir='/root/drupal_backups'
myuser='drupal'
mypass='SECRET'
dumpfile="${dumpdir}/drupal-$(date +%s).sql"

mysqldump -udrupal -p${mypass} drupal > $dumpfile
mv $dumpfile ${backupdir}/
find $backupdir -name '*.sql*' -type f -mtime +7 -exec rm {} +

Пример 2:

#!/bin/bash
#KMB March 2009 
umask u=rw,g=,o=
dumpdir='/root/db_backups'
backupdir='/root/db_backups/dumps'
myuser='backup_user'
mypass='SUPER_SECRET'

while read database; do
        dumpfile="${dumpdir}/${database}-$(date +%s).sql.bz2"
        mysqldump -u $myuser -p${mypass} $database | bzip2 > $dumpfile
        mv $dumpfile ${backupdir}/
done < <(mysql -u $myuser -p${mypass} -e 'show databases' -s | sed '1d;$d')

find $backupdir -name '*.sql.bz2*' -type f -mtime +7 -exec rm {} \;

Или, если вам просто нужны все базы данных в одном файле SQL:

mysqldump -u  -p --opt --all-databases > /path/to/backup/$(date -Imin).sql

а затем хранить резервные копии всего за несколько недель:

find /path/to/backup -type -f -mtime +7 -delete

Вы также можете попробовать Zmanda Recovery Manager (zrm-mysql).

Хотя на первый взгляд это может показаться слишком сложным, я создал полностью зашифрованное и хорошо управляемое централизованное решение для резервного копирования для ряда удаленных серверов MySQL, используя Community Edition ZRM.

Больше информации по теме можно найти на HowtoForge, например:

http://www.howtoforge.com/mysql-backups-with-zrm-2.0

Ура

Раньше я отправлял резервную копию файла по электронной почте. вне сервера после того, как он был сгенерирован. Таким образом, даже если сервер выйдет из строя, у меня все равно будет последняя резервная копия на другом сервере. Вы также можете использовать rsync или какой-либо другой метод для перемещения архива резервных копий на другую машину.

Используйте rsnapshot с сайта RSNAPSHOT.org. Это доступно через «apt-get install rsnapshot».

Он работает как шарм и через SSH после установки ключей SSH машины ... Веб-сайт предлагает несколько сценариев для резервного копирования MySQL. Вы можете изменить их в соответствии с вашими конкретными потребностями.

rsnapshot - это утилита моментального снимка файловой системы для создания резервных копий локальных и удаленных систем.

Используя rsync и жесткие ссылки, можно мгновенно хранить несколько полных резервных копий. Требуемое дисковое пространство немного больше, чем пространство одной полной резервной копии плюс инкрементальные.

В зависимости от вашей конфигурации это вполне возможно настроить всего за несколько минут. Файлы могут быть восстановлены пользователями, которым они принадлежат, без участия пользователя root.