Автоматическое резервное копирование нескольких баз данных MySQL или MariaDB

Вступление

В этой статье мы расскажем, как сделать резервную копию нескольких баз данных MySQL или MariaDB, которые находятся на одной машине, с помощью специального сценария bash и настройки задания cron.

Резервное копирование базы данных

Предположим, у нас есть три базы данных MySQL в нашем экземпляре Vultr с именами db-vultr-site , db-vultr-blog , db-vultr-app (не беспокойтесь о создании этих баз данных, вы сможете заменить их имена для вашего они были использованы в сценарии на шаге 2 ниже) .

  1. Войдите в базу данных MySQL или MariaDB и выполните приведенный ниже запрос, чтобы создать пользователя базы данных db_user_backupsдля обработки резервных копий.

    GRANT LOCK TABLES, SELECT, SHOW VIEW, REPLICATION CLIENT ON *.* TO 'db_user_backups'@'%' IDENTIFIED BY '{COMPLEX-PASSWORD}';
    

    Также запустите ниже, чтобы убедиться, что MySQL настроен на правильное восстановление хранимых процедур

    SET GLOBAL log_bin_trust_function_creators = 1;
    
  2. Установите необходимую структуру каталогов и необходимые файлы

    # create backup directory with environment and log file
    sudo mkdir /backups && cd /backups
    sudo touch .env db-backup.sh db-backup.log
    sudo chmod -R 775 /backups
    sudo chmod -R g+s /backups
    sudo chmod +x db-backup.sh
    
    # add mysql backup user credentials into environment file
    echo "export MYSQL_USER=db_user_backups" > /backups/.env
    echo "export MYSQL_PASS={COMPLEX-PASSWORD}" >> /backups/.env
    
  3. Откройте db-backup.sh nano /backups/db-backup.shи вставьте в него код ниже, затем сохраните файл (Ctrl + X -> Y -> нажмите Enter) .

    DB_NAMES=( 'db-vultr-site' 'db-vultr-blog' 'db-vultr-app' ) #replace with your own database name(s)
    BKUP_NAMES=()
    BKUP_DIR="/backups"
    
    # get total number of directories
    total_dbs=${#DB_NAMES[@]}
    
    # create backup file names
    for (( i=0; i<${total_dbs}; i++ )); do
        BKUP_NAMES[$i]="`date +%Y%m%d%H%M`-backup-$${DB_NAMES[$i]}.sql.gz"
    done
    
    # get backup users credentials
    source $BKUP_DIR/.env
    
    # create backups
    for (( i=0; i<${total_dbs}; i++ )); do
        # NOTE: --routines flag makes sure stored procedures are also backed up
        mysqldump --routines -u ${MYSQL_USER} -p${MYSQL_PASS} | gzip > ${BKUP_DIR}/${BKUP_NAMES[$i]}
    done
    

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

Настройка Cronjob

Установите cronjob для запуска каждую полночь, который запускает сценарий резервного копирования и сохраняет результат / вывод в журнал резервного копирования.

  1. Открыть crontab

    crontab -e
    
  2. Добавить ниже запись в crontab

    0 0 * * * /usr/bin/env bash /backups/db-backup.sh &>> /backups/db-backup.log
    

    Примечание: во время тестирования вы можете настроить запуск cronjob каждую 1 минуту, как показано ниже

    * * * * * /usr/bin/env bash /backups/db-backup.sh &>> /backups/db-backup.log
    

    -ИЛИ- каждые 5 минут (замените 5 на количество минут, которое вы хотите)

    */5 * * * * /usr/bin/env bash /backups/db-backup.sh &>> /backups/db-backup.log
    

Что дальше

Скорее всего, вы не захотите, чтобы ваши резервные копии находились на том же сервере (ах), на котором запущены ваши базы данных, а на сервере в другом географическом местоположении. Есть несколько способов сделать это - от использования SFTP до использования пользовательских инструментов, предоставляемых бесчисленным количеством поставщиков облачных хранилищ. Хорошей альтернативой является Rsync, как описано здесь - vultr.com/docs/setup-file-mirroring-using-rsync-in-debian-ubuntu

Автор Лами Адабонян

Оставить комментарий

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

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

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

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

Технологическая сингулярность: далекое будущее человеческой цивилизации?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

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

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

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

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

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

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше