Prírastkové zálohovanie VDS s webom na 1C-Bitrix v Yandex.Cloud

Potreboval som zálohovať stránku na „2C-Bitrix: Site Management“ (súbory a databázu mysql) dvakrát denne a uložiť históriu zmien na 1 dní.

Stránka sa nachádza na VDS so systémom CentOS 7 OS s nainštalovaným 1C-Bitrix: Web Environment. Okrem toho si vytvorte záložnú kópiu nastavení operačného systému.

požiadavky:

  • Frekvencia - 2 krát denne;
  • Uchovávajte kópie za posledných 90 dní;
  • Schopnosť získať jednotlivé súbory pre konkrétny dátum, ak je to potrebné;
  • Záloha musí byť uložená v inom dátovom centre ako VDS;
  • Možnosť prístupu k zálohe odkiaľkoľvek (iný server, lokálny počítač atď.).

Dôležitým bodom bola možnosť rýchleho vytvárania záloh s minimálnou spotrebou dodatočného priestoru a systémových prostriedkov.

Tu nejde o snímku na rýchlu obnovu celého systému, ale o súbory a databázu a históriu zmien.

Počiatočné údaje:

  • VDS na virtualizácii XEN;
  • OS CentOS 7;
  • 1C-Bitrix: webové prostredie;
  • Webová stránka založená na „1C-Bitrix: Site Management“, štandardná verzia;
  • Veľkosť súboru je 50 GB a bude rásť;
  • Veľkosť databázy je 3 GB a bude rásť.

Ihneď som vylúčil štandardnú zálohu zabudovanú do 1C-Bitrix. Je vhodný len pre malé lokality, pretože:

  • Zakaždým vytvorí úplnú kópiu stránky, takže každá kópia zaberie rovnaké množstvo miesta ako súbory, v mojom prípade je to 50 GB.
  • Zálohovanie sa robí pomocou PHP, čo je pri takom objeme súborov nemožné, preťaží to server a nikdy sa nedokončí.
  • A samozrejme, o nejakých 90 dňoch pri ukladaní plnej kópie nemôže byť ani reči.

Riešenie, ktoré hostiteľ ponúka, je záložný disk umiestnený v rovnakom dátovom centre ako VDS, ale na inom serveri. S diskom môžete pracovať cez FTP a používať vlastné skripty, alebo ak je na VDS nainštalovaný ISPManager, tak cez jeho zálohovací modul. Táto možnosť nie je vhodná z dôvodu použitia rovnakého dátového centra.

Zo všetkého vyššie uvedeného je pre mňa najlepšou voľbou prírastkové zálohovanie pomocou vlastného skriptu v Yandex.Cloud (Object Storage) alebo Amazon S3 (Amazon Simple Storage Service).

To si vyžaduje:

  • root prístup k VDS;
  • nainštalovaný duplicitný nástroj;
  • účet v Yandex.Cloud.

Prírastkové zálohovanie — metóda, pri ktorej sa archivujú iba údaje, ktoré sa zmenili od poslednej zálohy.

neúprimnosť — nástroj na zálohovanie, ktorý používa algoritmy rsync a dokáže pracovať s Amazon S3.

Yandex.Cloud vs Amazon S3

V tomto prípade pre mňa nie je žiadny rozdiel medzi Yandex.Cloud a Amazon S3. Yandex podporuje väčšinu rozhrania Amazon S3 API, takže s ním môžete pracovať pomocou riešení, ktoré existujú pre prácu s S3. V mojom prípade ide o pomôcku duplicity.

Hlavnou výhodou Yandexu môže byť platba v rubľoch, ak existuje veľa údajov, nebude existovať spojenie s výmenným kurzom. Pokiaľ ide o rýchlosť, európske dátové centrá Amazonu fungujú porovnateľne s ruskými dátovými centrami v Yandex, môžete použiť napríklad Frankfurt. Predtým som na podobné úlohy používal Amazon S3, teraz som sa rozhodol vyskúšať Yandex.

Nastavenie služby Yandex.Cloud

1. Musíte si vytvoriť platobný účet v Yandex.Cloud. Ak to chcete urobiť, musíte sa prihlásiť do služby Yandex.Cloud prostredníctvom svojho účtu Yandex alebo si vytvoriť nový.

2. Vytvorte "Cloud".
Prírastkové zálohovanie VDS s webom na 1C-Bitrix v Yandex.Cloud

3. V „Cloude“ vytvorte „Katalóg“.
Prírastkové zálohovanie VDS s webom na 1C-Bitrix v Yandex.Cloud

4. Pre „Katalóg“ si vytvorte „Servisný účet“.
Prírastkové zálohovanie VDS s webom na 1C-Bitrix v Yandex.Cloud

5. Vytvorte kľúče pre „Servisný účet“.
Prírastkové zálohovanie VDS s webom na 1C-Bitrix v Yandex.Cloud

6. Kľúče si odložte, budú potrebné v budúcnosti.
Prírastkové zálohovanie VDS s webom na 1C-Bitrix v Yandex.Cloud

7. Pre „Adresár“ vytvorte „Bucket“, súbory sa doň dostanú.
Prírastkové zálohovanie VDS s webom na 1C-Bitrix v Yandex.Cloud

8. Odporúčam nastaviť limit a vybrať možnosť „Cold Storage“.
Prírastkové zálohovanie VDS s webom na 1C-Bitrix v Yandex.Cloud

Nastavenie plánovaných záloh na serveri

Táto príručka predpokladá základné administratívne zručnosti.

1. Nainštalujte pomôcku pre duplicitu na VDS

yum install duplicity

2. Vytvorte priečinok pre výpisy mysql, v mojom prípade je to /backup_db v koreňovom adresári VDS

3. Vytvorte priečinok pre bash skripty /backup_scripts a vytvorte prvý skript, ktorý bude vykonávať zálohy /backup_scripts/backup.sh

Obsah skriptu:

#!`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. Prvýkrát spustite skript a skontrolujte výsledok, súbory by sa mali objaviť v „Bucket“.

`which bash` /backup_scripts/backup.sh

Prírastkové zálohovanie VDS s webom na 1C-Bitrix v Yandex.Cloud

5. Pridajte skript do cronu, aby sa užívateľ root spustil 2-krát denne alebo s frekvenciou, ktorú potrebujete.

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

Obnova údajov z Yandex.Cloud

1. Vytvorte priečinok na obnovenie /backup_restore

2. Vytvorte bash skript na obnovenie /backup_scripts/restore.sh

Uvádzam najobľúbenejší príklad obnovenia konkrétneho súboru:

#!`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. Spustite skript a počkajte na výsledok.

`which bash` /backup_scripts/backup.sh

V priečinku /backup_restore/ nájdete súbor index.php, ktorý bol predtým zálohovaný.

Môžete vykonať jemnejšie úpravy podľa svojich potrieb.

Mínus duplicita

duplicita má jednu nevýhodu - nie je možné nastaviť limit využitia kanála. Pri bežnom kanáli to nerobí problém, ale pri použití kanála chráneného DDoS s rýchlym nabíjaním za deň by som chcel mať možnosť nastaviť limit 1-2 megabity.

Ako záver

Zálohovanie v Yandex.Cloud alebo Amazon S3 poskytuje nezávislú kópiu stránok a nastavení operačného systému, ku ktorým je možné pristupovať z akéhokoľvek iného servera alebo lokálneho počítača. Okrem toho táto kópia nie je viditeľná ani na ovládacom paneli hostiteľa, ani na paneli správcu Bitrix, čo poskytuje dodatočné zabezpečenie.

V najhoršom prípade môžete zostaviť nový server a nasadiť lokalitu kedykoľvek. Hoci najobľúbenejšou funkcionalitou bude možnosť prístupu k súboru pre konkrétny dátum.

Túto techniku ​​môžete použiť s akýmikoľvek VDS alebo dedikovanými servermi a lokalitami na akomkoľvek motore, nielen na 1C-Bitrix. OS môže byť aj iný ako CentOS, napríklad Ubuntu alebo Debian.

Zdroj: hab.com

Pridať komentár