Автоматическое резервное копирование MySQL на Ubuntu

12

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

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

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

user1260928
источник

Ответы:

29

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

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

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

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

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

Создать и запланировать новую работу cron

В командной строке введите

sudo crontab -e

И добавьте следующую строку внизу файла:

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

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

Расширить этот простой скрипт

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

  • Резервное копирование в другую систему
  • Мониторинг дискового пространства
  • Электронная почта
  • ...

Так что не кончайте здесь и экспериментируйте! :-)

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

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

  • инструменты резервного копирования, такие как AutoMySQLBackup, приложение с открытым исходным кодом, которое может упростить процесс настройки Email-уведомлений, сжатия, шифрования, ротации и типа (например, инкрементного) ваших резервных копий. Что касается Mai 2018, он доступен для Ubuntu Server через APT.
  • облачные сервисы резервного копирования, такие как BackupBird, myRepono, Bitcan и т. д., которые могут быть интересны, если вы управляете несколькими серверами баз данных и хотите централизованно управлять всеми их резервными копиями.

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

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

Cron -> https://en.wikipedia.org/wiki/Cron

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

Эдуардо Лопес
источник
4
Использовать date +%F- это автоматически выберет комбинацию год + месяц + дата, соответствующую локали пользователя (например, я получу YYYY-MM-DD).
Муру
Ах да, намного лучше. Я отредактирую ответ :-)
Эдуардо Лопес
+1 Хороший ответ: именно то, что нужно здесь, не больше, не меньше.
Йос
2
Если вам нужно использовать sudo для выполнения этой операции (a), вызовите sudo crontab -eи не забудьте сделать сценарий исполняемым:chmod +x /path/to/mysqldump.sh
zinon
Зинон - Спасибо за подсказки! Я обновил ответ.
Эдуардо Лопес