Автоматическое резервное копирование mysql на человечности

У меня есть сервер Ubuntu с базой данных Mysql. Я хотел бы настроить автоматическое резервное копирование этой базы данных в течение ночи на другом сервере (ovh, например).

Я не знаю то, что было бы лучшим инструментом для этого. Если у кого-то есть некоторые советы...

Заранее спасибо.

12
задан 16 November 2015 в 13:25

2 ответа

Самым легким способом автоматизировать эту задачу была бы комбинация Свалок MySQL и cronjob. Вы можете найти большую информацию об этой теме на этом и других сайтах, но ради завершения:

Создают mysqldump.sh файл

, Который будет содержать свалку mysql, приказывают, чтобы мы наметили в работе крона (замените пользователя, пароль и путь, чтобы соответствовать Вашей среде):

mysqldump -u root -p<mysql_root_password> --all-databases | gzip > /desired/backup/folder/mysqldb_`date +%F`.sql.gz

Отредактируйте: , Если Вы хотите, чтобы сценарий сохранил резервную копию в отдаленном месте, просто установите соответствующее устройство или разделите и используйте путь горы в сценарии.

Тест сценарий

Гарантирует, что у сценария есть разрешения выполнения:

chmod +x /path/to/mysqldump.sh

Выполняют сценарий:

sh /path/to/mysqldump.sh

И тест это работает правильно (Резервный файл будет создан в указанной резервной папке).

Создают и намечают новую работу крона

В типе

sudo crontab -e

командной строки И добавляют следующую линию в нижней части файла:

30 23 * * * /path/to/mysqldump.sh

Это выполнит сценарий каждый день в 23:30.

Расширяют этот простой сценарий

есть буквально множество вещей, которые Вы можете сделать, чтобы улучшить этот простой резервный метод:

  • Поддержка до другой системы
  • дисковое пространство Монитора
  • электронная почта, сообщая
  • ...

Так не заканчиваются здесь и эксперимент! :-)

резервные инструменты Использования или облачные резервные услуги

, Хотя вышеупомянутый метод - один из самых легких и может быть расширен, чтобы удовлетворить Вашим определенным потребностям, стоит упомянуть, что есть другие альтернативы:

  • резервные инструменты, такие как AutoMySQLBackup, общедоступное применение, которое могло бы ослабить процесс формирования Уведомления по электронной почте, сжатия, шифрования, вращения и типа (например, возрастающий) Ваших резервных копий. Что касается Мэй 2018, это доступно для Сервера Ubuntu через КВ.
  • облачные резервные службы, такие как BackupBird, myRepono, Bitcan, и т.д. который мог бы быть интересным, если Вы управляете несколькими серверами базы данных и хотите централизованно управлять всеми их резервными копиями.

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

Полезные ссылки / Ссылки:

Крон-> https://Свалка en.wikipedia.org/wiki/Cron

MySQL-> https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html

29
ответ дан 23 November 2019 в 03:30

Существует несколько способов автоматизации резервного копирования баз данных MySQL:

  1. Скрипт Bash
  2. Использование automysqlbackup
  3. Дополнительные инструменты

Скрипт Bash

# Backup storage directory 
backup_folder=/var/backups

# Notification email address 
recipient_email=<username@mail.com>

# MySQL user
user=<user_name>

# MySQL password
password=<password>

# Number of days to store the backup 
keep_day=30 

sqlfile=$backup_folder/all-database-$(date +%d-%m-%Y_%H-%M-%S).sql
zipfile=$backup_folder/all-database-$(date +%d-%m-%Y_%H-%M-%S).zip 

# Create a backup 
sudo mysqldump -u $user -p$password --all-databases > $sqlfile 

if [ $? == 0 ]; then
  echo 'Sql dump created' 
else
  echo 'mysqldump return non-zero code' | mailx -s 'No backup was created!' $recipient_email  
  exit 
fi 

# Compress backup 
zip $zipfile $sqlfile 

if [ $? == 0 ]; then
   echo 'The backup was successfully compressed' 
else
   echo 'Error compressing backup' | mailx -s 'Backup was not created!' $recipient_email 
   exit 
fi 

rm $sqlfile 

echo $zipfile | mailx -s 'Backup was successfully created' $recipient_email 

# Delete old backups 
#find $backupfolder -mtime +$keep_day -delete
find $backup_folder -mtime +$keep_day -delete      
  • Плюсы:
    • абсолютно бесплатно
    • все необходимое можно добавить в bash-скрипт для автоматизации резервного копирования
  • Минусы:
    • необходимо хорошее знание bash-скриптов для создания сложного процесса резервного копирования
    • сложно настроить отправку резервных копий в облако

Automysqlbackup

sudo apt-get install automysqlbackup
wget https://github.com/sixhop/AutoMySQLBackup/archive/master.zip

mkdir /opt/automysqlbackup
mv AutoMySQLBackup-master.zip 
cd /opt/automysqlbackup
tar -zxvf AutoMySQLBackup-master.zip

./install.sh

sudo nano /etc/automysqlbackup/automysqlbackup.conf

CONFIG_configfile="/etc/automysqlbackup/automysqlbackup.conf"
CONFIG_backup_dir='/var/backup/db'
CONFIG_mysql_dump_username='root'
CONFIG_mysql_dump_password='my_password'
CONFIG_mysql_dump_host='localhost'
CONFIG_db_names=('my_db')
CONFIG_db_exclude=('information_schema')
CONFIG_mail_address='mail@google.com'
CONFIG_rotation_daily=6
CONFIG_rotation_weekly=35
CONFIG_rotation_monthly=150

automysqlbackup /etc/automysqlbackup/automysqlbackup.conf
  • Плюсы:
    • это бесплатно
    • несколько частей процесса резервного копирования уже добавлены в скрипт
  • Минусы:
    • в качестве места хранения резервных копий можно указать только папку (это небезопасно)
    • нет возможности удалить файлы старых резервных копий

Сторонний инструмент

Если вам нужно что-то готовое, легко использовать со многими параметрами, которые вы можете использовать SqlBak.

  • Плюсы:

    • бесплатно
    • просто использовать
    • поддерживается множество облачных хранилищ
    • есть разные виды уведомлений
    • есть автоматическое удаление старых резервных копий из облаков
    • ]один веб-интерфейс для множества серверов СУБД
    • различные виды СУБД (MySQL, PostgreSQL, MS SQL Server)
  • Минусы:

    • пока нет возможности делать инкрементальные бэкапы
3
ответ дан 27 March 2020 в 11:18

Другие вопросы по тегам:

Похожие вопросы: