Incrementele VDS-back-up met een site op 1C-Bitrix in Yandex.Cloud

Ik moest twee keer per dag back-ups maken van de site op "2C-Bitrix: Site Management" (bestanden en mysql-database) en een geschiedenis van wijzigingen gedurende 1 dagen opslaan.

De site bevindt zich op een VDS met CentOS 7 OS en 1C-Bitrix: Web Environment geïnstalleerd. Maak bovendien een back-up van uw besturingssysteeminstellingen.

vereisten:

  • Frequentie - 2 keer per dag;
  • Bewaar kopieën gedurende de afgelopen 90 dagen;
  • De mogelijkheid om indien nodig individuele bestanden voor een specifieke datum te verkrijgen;
  • De back-up moet in een ander datacentrum dan VDS worden opgeslagen;
  • De mogelijkheid om overal toegang te krijgen tot de back-up (een andere server, lokale computer, enz.).

Een belangrijk punt was de mogelijkheid om snel back-ups te maken met minimaal verbruik van extra ruimte en systeembronnen.

Het gaat hier niet om een ​​momentopname om het hele systeem snel te herstellen, maar om bestanden en de database en de geschiedenis van wijzigingen.

Initiële data:

  • VDS op XEN-virtualisatie;
  • Besturingssysteem CentOS 7;
  • 1C-Bitrix: Webomgeving;
  • Website gebaseerd op “1C-Bitrix: Sitebeheer”, standaardversie;
  • De bestandsgrootte is 50 GB en zal groeien;
  • De databasegrootte is 3 GB en zal groeien.

Ik heb de standaardback-up die in 1C-Bitrix is ​​ingebouwd, onmiddellijk uitgesloten. Het is alleen geschikt voor kleine sites, omdat:

  • Er wordt elke keer een volledige kopie van de site gemaakt, dus elke kopie neemt evenveel ruimte in beslag als de bestanden, in mijn geval is dat 50 GB.
  • Back-up wordt gedaan met behulp van PHP, wat onmogelijk is met zulke hoeveelheden bestanden, het zal de server overbelasten en nooit eindigen.
  • En natuurlijk kan er geen sprake zijn van 90 dagen bij het opslaan van een volledige kopie.

De oplossing die de hoster biedt is een back-upschijf die zich in hetzelfde datacenter bevindt als de VDS, maar op een andere server. U kunt met de schijf werken via FTP en uw eigen scripts gebruiken, of als ISPManager op de VDS is geïnstalleerd, via de back-upmodule ervan. Deze optie is niet geschikt vanwege het gebruik van hetzelfde datacenter.

Van al het bovenstaande is voor mij de beste keuze een incrementele back-up met mijn eigen script in Yandex.Cloud (Object Storage) of Amazon S3 (Amazon Simple Storage Service).

Dit vereist:

  • root-toegang tot VDS;
  • geïnstalleerd dubbelhartigheidshulpprogramma;
  • account in Yandex.Cloud.

Incrementele back-up — een methode waarbij alleen gegevens worden gearchiveerd die zijn gewijzigd sinds de laatste back-up.

dubbelhartigheid — een back-uphulpprogramma dat rsync-algoritmen gebruikt en kan werken met Amazon S3.

Yandex.Cloud versus Amazon S3

In dit geval is er voor mij geen verschil tussen Yandex.Cloud en Amazon S3. Yandex ondersteunt het grootste deel van de Amazon S3 API, zodat u ermee kunt werken met behulp van de oplossingen die bestaan ​​voor het werken met S3. In mijn geval is dit het dubbelhartigheidshulpprogramma.

Het belangrijkste voordeel van Yandex kan de betaling in roebels zijn: als er veel gegevens zijn, is er geen verband met de wisselkoers. De Europese datacenters van Amazon werken qua snelheid vergelijkbaar met de Russische datacenters in Yandex; je kunt bijvoorbeeld Frankfurt gebruiken. Ik gebruikte Amazon S3 eerder voor soortgelijke taken, nu besloot ik Yandex te proberen.

Yandex.Cloud instellen

1. U moet een betaalaccount aanmaken in Yandex.Cloud. Om dit te doen, moet u inloggen bij Yandex.Cloud via uw Yandex-account of een nieuw account aanmaken.

2. Creëer een ‘wolk’.
Incrementele VDS-back-up met een site op 1C-Bitrix in Yandex.Cloud

3. Maak in de “Cloud” een “Catalogus” aan.
Incrementele VDS-back-up met een site op 1C-Bitrix in Yandex.Cloud

4. Voor de “Catalogus” maakt u een “Serviceaccount” aan.
Incrementele VDS-back-up met een site op 1C-Bitrix in Yandex.Cloud

5. Maak sleutels aan voor het “Serviceaccount”.
Incrementele VDS-back-up met een site op 1C-Bitrix in Yandex.Cloud

6. Bewaar de sleutels, deze zijn in de toekomst nodig.
Incrementele VDS-back-up met een site op 1C-Bitrix in Yandex.Cloud

7. Maak voor de "Directory" een "Bucket", waarin de bestanden worden opgeslagen.
Incrementele VDS-back-up met een site op 1C-Bitrix in Yandex.Cloud

8. Ik raad aan een limiet in te stellen en “Koude opslag” te selecteren.
Incrementele VDS-back-up met een site op 1C-Bitrix in Yandex.Cloud

Instellen van geplande back-ups op de server

In deze handleiding wordt uitgegaan van basisvaardigheden op administratief gebied.

1. Installeer het dupliciteitshulpprogramma op de VDS

yum install duplicity

2. Maak een map voor mysql-dumps, in mijn geval is dit /backup_db in de VDS-root

3. Maak een map voor bash-scripts /backup_scripts en maak het eerste script dat back-ups /backup_scripts/backup.sh uitvoert

Scriptinhoud:

#!`which bash`


# /backup_scripts/backup.sh

# Это условие проверяет не идёт ли в данный момент процесс резервного копирования, если идёт, то на email отправляется сообщение об ошибке (этот блок можно не использовать)
if [ -f /home/backup_check.mark ];
then

DATE_TIME=`date +"%d.%m.%Y %T"`;

/usr/sbin/sendmail -t <<EOF
From:backup@$HOSTNAME
To:<Ваш EMAIL>
Subject:Error backup to YANDEX.CLOUD
Content-Type:text/plain; charset=utf-8
Error backup to YANDEX.CLOUD

$DATE_TIME
EOF

else

# Основной блок отвечающий за резервное копирование
# Если нет ощибки ставим метку и запускаем backup

echo '' > /home/backup_check.mark;


# Удаляем файлы с дампами базы оставшиеся от предыдущего backup

/bin/rm -f /backup_db/*


# Делаем дамп всех mysql баз, предполагается что доступ добавлен в файле /root/.my.cnf

DATETIME=`date +%Y-%m-%d_%H-%M-%S`;

`which mysqldump` --quote-names --all-databases | `which gzip` > /backup_db/DB_$DATETIME.sql.gz


# Добавляем данные для отправки в Яндекс.

export PASSPHRASE=<Придумайте пароль для шифрования архива>
export AWS_ACCESS_KEY_ID=<Идентификатор ключа полученный у Яндекса>
export AWS_SECRET_ACCESS_KEY=<Секретный ключ полученный у Яндекса>


# Запускаем duplicity для резервирования необходимых папок на сервере.
# Данная команда будет создавать полный backup раз в месяц и до следующего месяца добавлять инкрементальные к нему
# -- exclude это папки, которые нужно исключить, я исключаю все папки с кешем битрикса
# --include папки которые нужно резервировать в моём случае это:
# - /backup_db
# - /home
# - /etc
# s3://storage.yandexcloud.net/backup , backup это имя созданного выше бакета

# Техническая особенность и значения некоторых параметров:
# Две строки "--exclude='**'" и "/" нужны, чтобы можно было выше оперировать --include и --exclude для разных папок. Эти две строчки сначала добавляют в бэкап весь сервер "/", потом исключают его "--exclude='**'"
# --full-if-older-than='1M' - создавать полную копию каждый месяц
# --volsize='512' - максимальный размер каждого из файлов в бэкапе в мегабайтах
# --log-file='/var/log/duplicity.log' - куда писать лог файл

`which duplicity` 
    --s3-use-ia --s3-european-buckets 
    --s3-use-new-style 
    --s3-use-multiprocessing 
    --s3-multipart-chunk-size='128' 
    --volsize='512' 
    --no-print-statistics 
    --verbosity=0 
    --full-if-older-than='1M' 
    --log-file='/var/log/duplicity.log' 
    --exclude='**/www/bitrix/backup/**' 
    --exclude='**/www/bitrix/cache/**' 
    --exclude='**/www/bitrix/cache_image/**' 
    --exclude='**/www/bitrix/managed_cache/**' 
    --exclude='**/www/bitrix/managed_flags/**' 
    --exclude='**/www/bitrix/stack_cache/**' 
    --exclude='**/www/bitrix/html_pages/*/**' 
    --exclude='**/www/bitrix/tmp/**' 
    --exclude='**/www/upload/tmp/**' 
    --exclude='**/www/upload/resize_cache/**' 
    --include='/backup_db' 
    --include='/home' 
    --include='/etc' 
    --exclude='**' 
    / 
    s3://storage.yandexcloud.net/backup



# Данная команда нужна для чистки.
# Она оставляет 3 последних полных backup и ассоциированных с ними инкрементальных backup.
# Т.о. у меня остаются backup за 3 месяца, т.к. первая команда каждый месяц делает новый полный backup

`which duplicity` remove-all-but-n-full 3 --s3-use-ia --s3-european-buckets --s3-use-new-style --verbosity=0 --force s3://storage.yandexcloud.net/backup



unset PASSPHRASE
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY

# Удаляем метку об идущем backup

/bin/rm -f /home/backup_check.mark;

fi

4. Voer het script voor de eerste keer uit en controleer het resultaat; de bestanden moeten in de “Bucket” verschijnen.

`which bash` /backup_scripts/backup.sh

Incrementele VDS-back-up met een site op 1C-Bitrix in Yandex.Cloud

5. Voeg een script toe aan cron zodat de rootgebruiker 2 keer per dag kan draaien, of met de frequentie die u nodig heeft.

10 4,16 * * * `which bash` /backup_scripts/backup.sh

Gegevens herstellen van Yandex.Cloud

1. Maak een herstelmap /backup_restore

2. Maak een bash-script voor herstel /backup_scripts/restore.sh

Ik geef het populairste voorbeeld van het herstellen van een specifiek bestand:

#!`which bash`

export PASSPHRASE=<Пароль для шифрования архива используемый при бэкапе>
export AWS_ACCESS_KEY_ID=<Идентификатор ключа полученный у Яндекса>
export AWS_SECRET_ACCESS_KEY=<Секретный ключ полученный у Яндекса>

# 3 примера, раскомментировать нужный

# Получить статус backup
#`which duplicity` collection-status s3://storage.yandexcloud.net/backup

# Восстановить index.php из корня сайта
#`which duplicity` --file-to-restore='home/bitrix/www/index.php' s3://storage.yandexcloud.net/backup /backup_restore/index.php

# Восстановить index.php из корня сайта 3х дневной давности
#`which duplicity` --time='3D' --file-to-restore='home/bitrix/www/index.php' s3://storage.yandexcloud.net/backup /backup_restore/index.php

unset PASSPHRASE
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY

3. Voer het script uit en wacht op het resultaat.

`which bash` /backup_scripts/backup.sh

In de map /backup_restore/ vindt u het index.php-bestand waarvan eerder een back-up is gemaakt.

U kunt fijnere aanpassingen maken om aan uw behoeften te voldoen.

Minus duplicatie

dubbelhartigheid heeft één nadeel: het is niet mogelijk om een ​​kanaalgebruikslimiet in te stellen. Bij een regulier kanaal levert dit geen probleem op, maar bij gebruik van een DDoS-beveiligd kanaal met snelladen per dag zou ik graag een limiet van 1-2 megabit willen kunnen instellen.

Als conclusie

Back-up in Yandex.Cloud of Amazon S3 biedt een onafhankelijke kopie van de site- en besturingssysteeminstellingen die toegankelijk is vanaf elke andere server of lokale computer. Bovendien is deze kopie niet zichtbaar in het hostingcontrolepaneel of in het Bitrix-beheerpaneel, wat voor extra beveiliging zorgt.

In het ergste geval kunt u op elk gewenst moment een nieuwe server samenstellen en de site in gebruik nemen. Hoewel de meest populaire functionaliteit de mogelijkheid is om toegang te krijgen tot een bestand voor een specifieke datum.

U kunt deze techniek gebruiken met alle VDS- of Dedicated-servers en sites op elke engine, niet alleen 1C-Bitrix. Het besturingssysteem kan ook een ander besturingssysteem zijn dan CentOS, zoals Ubuntu of Debian.

Bron: www.habr.com

Voeg een reactie