Мне нужно ежедневно делать резервную копию моей базы данных 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.