Автоматичне резервне копіювання mysql на ubuntu


13

У мене є сервер Ubuntu з даною базою даних Mysql. Я хотів би встановити автоматичне резервне копіювання цієї бази даних протягом ночі на іншому сервері (наприклад, ovh).

Я не знаю, що було б найкращим інструментом для цього. Якщо хтось має поради ...

Заздалегідь спасибі.

Відповіді:


29

Найпростішим способом автоматизувати це завдання було б поєднання дампів MySQL і роботи з кроном. Ви можете знайти багато інформації на цю тему на цьому та інших веб-сайтах, але заради завершення:

Створіть файл mysqldump.sh

Яка буде містити команду дампа mysql, яку ми заплануємо в роботі 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, додаток з відкритим кодом, який може полегшити процес налаштування електронного сповіщення, стиснення, шифрування, обертання та типу (наприклад, інкрементального) ваших резервних копій. Що стосується травня 2018 року, він доступний для сервера Ubuntu через APT.
  • хмарні сервіси резервного копіювання, такі як BackupBird, myRepono, Bitcan тощо, що може бути цікаво, якщо ви керуєте декількома серверами баз даних і хочете централізовано керувати всіма їхніми резервними копіями.

Будь ласка, майте на увазі, що я жодним чином не пов'язаний з жодним із вищезазначених рішень та послуг, і я перелічу їх лише для довідки, тому використовуйте їх на свій страх і ризик.

Корисні посилання / посилання:

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

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


4
Використовувати date +%F- це автоматично вибере комбінацію року + місяця + дати, відповідної місцевості користувача (наприклад, я отримаю YYYY-MM-DD).
муру

О так, набагато краще. Я відредагую відповідь :-)
Едуардо Лопес

+1 Гарна відповідь: саме те, що потрібно тут, ні більше, ні менше.
Джос

2
Якщо вам доведеться використовувати sudo для цієї операції (a) зателефонуйте sudo crontab -eі не забудьте зробити сценарій виконуваним:chmod +x /path/to/mysqldump.sh
zinon

zinon - Дякую за підказки! Я оновив відповідь.
Едуардо Лопес

0

Є кілька способів автоматизації резервного копіювання баз даних MySQL:

  1. Баш сценарій
  2. Використання automysqlbackup
  3. Інструменти третьої частини

Для автоматизації процесу резервного копіювання потрібно подбати про кілька кроків (принаймні):

- create a backup
- compress the backup (it is quite significant if your database is large)
- encrypt the compressed file
- upload the backup to a cloud storage (Dropbox, AWS, Google Drive, etc.)
- get a notifications concerning backup results
- schedule the backup process
- delete old backup files

Є стаття, що описує деталі кожного згаданих методів (і я один з авторів ...).

Кожен згаданий метод має свої плюси і мінуси. Коротко ...

Баш сценарій.

  • Плюси:
    • це абсолютно безкоштовно
    • ви можете додати все необхідне до скрипту bash для автоматизації резервного копіювання
  • Мінуси
    • Потрібно добре знати базові сценарії, щоб зробити складний процес резервного копіювання
    • важко налаштувати надсилання резервних копій у хмару

Automysqlbackup.

  • Плюси:
    • це безкоштовно
    • кілька сценаріїв резервного копіювання вже додані до сценарію
  • Мінуси:
    • ви можете вказати папку лише як місце резервного зберігання (це не безпечно)
    • немає можливості видалити старі файли резервної копії

Сторонній інструмент ( SqlBak ).

  • Плюси:

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

    • ще немає можливості робити додаткові резервні копії
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.