Резервне копіювання бази даних MySQL до S3-сховища
Увага Стаття перебуває в розробці
Опис
У статті описано основні етапи резервного копіювання бази даних MySQL до S3-сумісного сховища.
Основна інформація
MySQL — система керування базами даних для малих і середніх застосунків. Вона входить до складу WAMP, AppServ і LAMP. Зазвичай MySQL працює як сервер, до якого підключаються локальні або віддалені клієнти. Це також одна з найпоширеніших систем керування базами даних із відкритим кодом для інтерактивних вебсайтів.
Якщо сайт або застосунок зберігає важливі дані в MySQL, створюйте резервні копії, щоб мати змогу відновити інформацію після аварії чи іншої непередбаченої події.
Існує кілька способів резервного копіювання MySQL. У цій статті показано, як
створити копію бази даних і автоматизувати процес. У прикладі mysqldump
зберігає дані у стиснений файл gzip, який потім передається до віддаленого
S3-сховища.
S3-сховище — просте рішення для віддаленого зберігання копій баз даних у
хмарній інфраструктурі. Спочатку створіть копію кожної бази командою
mysqldump, потім налаштуйте сценарій копіювання до S3 і його запуск за
розкладом через cron.
Важливо
дані доступні за потреби та захищені від збоїв, помилок і загроз;
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 і заплануйте його регулярний запуск відповідно до потрібного графіка.