Резервне копіювання бази даних MySQL до S3-сховища

Увага Стаття перебуває в розробці

Опис

У статті описано основні етапи резервного копіювання бази даних MySQL до S3-сумісного сховища.

Основна інформація

MySQL — система керування базами даних для малих і середніх застосунків. Вона входить до складу WAMP, AppServ і LAMP. Зазвичай MySQL працює як сервер, до якого підключаються локальні або віддалені клієнти. Це також одна з найпоширеніших систем керування базами даних із відкритим кодом для інтерактивних вебсайтів.

Якщо сайт або застосунок зберігає важливі дані в MySQL, створюйте резервні копії, щоб мати змогу відновити інформацію після аварії чи іншої непередбаченої події.

Існує кілька способів резервного копіювання MySQL. У цій статті показано, як створити копію бази даних і автоматизувати процес. У прикладі mysqldump зберігає дані у стиснений файл gzip, який потім передається до віддаленого S3-сховища.

S3-сховище — просте рішення для віддаленого зберігання копій баз даних у хмарній інфраструктурі. Спочатку створіть копію кожної бази командою mysqldump, потім налаштуйте сценарій копіювання до S3 і його запуск за розкладом через cron.

Важливо

Основні переваги використання S3:
  • дані доступні за потреби та захищені від збоїв, помилок і загроз;

  • S3-сховище підтримує версіонування;

  • дані передаються захищеним протоколом HTTPS;

  • трафік ідентифікується як вебтрафік і може проходити через брандмауери;

  • після розриву з’єднання передавання файлів можна відновити;

  • багатопотокове завантаження забезпечує високу продуктивність;

  • дані зберігаються у вихідному форматі;

  • S3 дешевше за SSD-сховище й не потребує обслуговування;

  • доступна велика кількість кросплатформних клієнтів і плагінів;

  • оплачується лише фактично використаний обсяг сховища.

Налаштування резервного копіювання MySQL до S3

Крок 1. Установіть S3cmd.

Завантажте актуальну версію S3cmd із сайту проєкту: https://sourceforge.net/projects/s3tools/?source=typ_redirect.

sudo apt-get -y install python-setuptools
wget http://netix.dl.sourceforge.net/project/s3tools/s3cmd/1.6.0/s3cmd-1.6.0.tar.gz
tar xvfz s3cmd-1.6.0.tar.gz
cd s3cmd-1.6.0
sudo python setup.py install

Під час налаштування введіть два ключі:

  • Access key;

  • Secret key — ваші облікові дані S3-сховища.

Увага

Значення Access key і Secret key чутливі до регістру. Вводьте їх точно, інакше виникне помилка недійсного підпису.

За потреби додаткові параметри можна змінити вручну у файлі конфігурації. Частина параметрів S3cmd уже має стандартні значення.

Крок 2. Створіть сценарій резервного копіювання MySQL до S3.

Наведений shell-сценарій створює дамп бази даних у тимчасовому файлі та завантажує його до S3. Перед запуском укажіть відповідні змінні середовища:

# Save dbbackup.sh

#!/bin/bash
## Specify the name of the database that you want to backup

# Database credentials
USER="DB-USER"
PASSWORD="PASSWORD"
HOST="DB-host-name"
DB_NAME="Database-name"

#Backup_Directory_Locations
BACKUPROOT="/tmp/backups"
TSTAMP=$(date +"%d-%b-%Y-%H-%M-%S")
S3BUCKET="s3://s3bucket"
#LOG_ROOT="logs/dump.log"

#mysqldump  -h <HOST>  -u <USER>  --database <DB_NAME>  -p"password" > $BACKUPROOT/$DB_NAME-$TSTAMP.sql

#or

mysqldump -h$HOST -u$USER $DB_NAME -p$PASSWORD | gzip -9 > $BACKUPROOT/$DB_NAME-$TSTAMP.sql.gz

if [ $? -ne 0 ]
    then
     mkdir /tmp/$TSTAMP
    s3cmd put -r /tmp/$TSTAMP $S3BUCKET/
    s3cmd sync -r $BACKUPROOT/ $S3BUCKET/$TSTAMP/
    rm -rf $BACKUPROOT/*
else
    s3cmd sync -r $BACKUPROOT/ $S3BUCKET/$TSTAMP/
    rm -rf $BACKUPROOT/*
fi

Крок 3. Перевірте сценарій:

# chmod +x dbbackup.sh
# Run the script to make sure it's all good
# bash dbbackup.sh

Крок 4. Заплануйте регулярний запуск сценарію.

Якщо сценарій резервного копіювання зберігається в каталозі /opt/scripts, додайте до crontab завдання для його автоматичного щотижневого запуску. Для цього відредагуйте файл crontab:

#vim /etc/crontab
#Add the following lines:
#Run the database backup script on every week at 12.00

0 0 * * 0  bash /opt/scripts/mysqlbackupS3.sh to  >/dev/null 2>&1

Висновок

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