Přírůstkové zálohování VDS s webem na 1C-Bitrix v Yandex.Cloud

Bylo nutné, abych 2x denně zálohoval stránky na 1C-Bitrix: Site Management (soubory a databáze mysql) a ukládal historii změn po dobu 90 dnů.

Stránka je umístěna na VDS se systémem CentOS 7 s nainstalovaným "1C-Bitrix: Web Environment". Kromě toho vytvořte záložní kopii nastavení operačního systému.

Požadavky:

  • Frekvence - 2krát denně;
  • Uchovávejte kopie za posledních 90 dní;
  • Schopnost získat jednotlivé soubory pro konkrétní datum, pokud je to nutné;
  • Záloha musí být uložena v jiném datovém centru než VDS;
  • Možnost přístupu k záloze odkudkoli (z jiného serveru, místního počítače atd.).

Důležitým bodem byla možnost rychlého vytváření záloh s minimální spotřebou dalšího prostoru a systémových prostředků.

Tady nejde o snapshot pro rychlou obnovu celého systému, ale o soubory a databázi a historii změn.

Zdrojová data:

  • VDS na virtualizaci XEN;
  • OS CentOS 7;
  • 1C-Bitrix: Webové prostředí;
  • Místo založené na "1C-Bitrix: Správa webu", Standardní verze;
  • Velikost souboru je 50 GB a bude se zvětšovat;
  • Velikost databáze je 3 GB a bude růst.

Standardní záloha vestavěná do 1C-Bitrix - okamžitě vyloučena. Je vhodný pouze pro malé weby, protože:

  • Pokaždé vytvoří úplnou kopii webu, respektive každá kopie zabere tolik místa, kolik zaberu soubory, v mém případě je to 50 GB.
  • Zálohování se provádí pomocí PHP, což je při takovém objemu souborů nemožné, přetíží server a nikdy neskončí.
  • A samozřejmě o nějakých 90 dnech při uložení plné kopie nemůže být řeč.

Řešením, které hostitel nabízí, je záložní disk umístěný ve stejném datovém centru jako VDS, ale na jiném serveru. S diskem lze pracovat přes FTP a používat vlastní skripty, nebo pokud je na VDS nainstalován ISPManager, tak přes jeho záložní modul. Tato možnost není vhodná kvůli použití stejného datového centra.

Ze všeho výše uvedeného je pro mě nejlepší volbou přírůstková záloha podle mého vlastního scénáře v Yandex.Cloud (Object Storage) nebo Amazon S3 (Amazon Simple Storage Service).

To vyžaduje:

  • root přístup k VDS;
  • nainstalovaný nástroj pro duplicitu;
  • účet na Yandex.Cloud.

přírůstkové zálohování - metoda, při které jsou archivována pouze data, která se od poslední zálohy změnila.

neupřímnost - zálohovací nástroj, který používá algoritmy rsync a může pracovat s Amazon S3.

Yandex.Cloud vs Amazon S3

Mezi Yandex.Cloud a Amazon S3 pro mě v tomto případě není žádný rozdíl. Yandex podporuje hlavní část Amazon S3 API, takže s ním můžete pracovat pomocí řešení, která jsou k dispozici pro práci s S3. V mém případě se jedná o utilitu duplicity.

Hlavní výhodou Yandexu může být platba v rublech, pokud existuje mnoho dat, nebude zde žádný odkaz na kurz. Pokud jde o rychlost, evropská datová centra Amazonu fungují úměrně ruským v Yandexu, můžete použít Frankfurt. Dříve jsem pro podobné úkoly používal Amazon S3, nyní jsem se rozhodl vyzkoušet Yandex.

Nastavení Yandex.Cloud

1. Musíte si vytvořit fakturační účet na Yandex.Cloud. Chcete-li to provést, musíte se přihlásit do Yandex.Cloud prostřednictvím svého účtu Yandex nebo vytvořit nový.

2. Vytvořte Cloud.
Přírůstkové zálohování VDS s webem na 1C-Bitrix v Yandex.Cloud

3. V "Cloud" vytvořte "Katalog".
Přírůstkové zálohování VDS s webem na 1C-Bitrix v Yandex.Cloud

4. Pro "Katalog" vytvořte "Servisní účet".
Přírůstkové zálohování VDS s webem na 1C-Bitrix v Yandex.Cloud

5. Pro "Servisní účet" vytvořte klíče.
Přírůstkové zálohování VDS s webem na 1C-Bitrix v Yandex.Cloud

6. Klíče si uschovejte, budete je v budoucnu potřebovat.
Přírůstkové zálohování VDS s webem na 1C-Bitrix v Yandex.Cloud

7. Pro "Katalog" vytvořte "Bucket", soubory do něj padnou.
Přírůstkové zálohování VDS s webem na 1C-Bitrix v Yandex.Cloud

8. Doporučuji nastavit limit a zvolit "Chladné úložiště".
Přírůstkové zálohování VDS s webem na 1C-Bitrix v Yandex.Cloud

Nastavení plánovaných záloh na serveru

Tato příručka předpokládá základní administrativní dovednosti.

1. Nainstalujte obslužný program pro duplicitu na VDS

yum install duplicity

2. Vytvořte složku pro výpisy mysql, v mém případě je to /backup_db v kořenovém adresáři VDS

3. Vytvořte složku pro bash skripty /backup_scripts a vytvořte první skript, který bude zálohovat /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. Spusťte skript poprvé a zkontrolujte výsledek, soubory by se měly objevit v Bucketu.

`which bash` /backup_scripts/backup.sh

Přírůstkové zálohování VDS s webem na 1C-Bitrix v Yandex.Cloud

5. Přidejte do cronu skript pro uživatele root, který se má spouštět 2krát denně nebo tak často, jak potřebujete.

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

Obnova dat z Yandex.Cloud

1. Vytvořte složku pro obnovení /backup_restore

2. Vytvořte skript obnovy bash /backup_scripts/restore.sh

Uvádím nejžádanější příklad obnovení konkrétního souboru:

#!`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. Spusťte skript a počkejte na výsledek.

`which bash` /backup_scripts/backup.sh

Ve složce /backup_restore/ najdete soubor index.php, který byl dříve součástí zálohy.

Můžete provést jemnější úpravy, aby vyhovovaly vašim potřebám.

minus duplicita

Duplicita má jednu nevýhodu – neexistuje způsob, jak nastavit limit využití kanálu. U normálního kanálu to problém nevytváří, ale u kanálu chráněného DDoS s účtováním rychlosti za den bych chtěl mít možnost nastavit limit 1-2 megabity.

Jako závěr

Zálohování v Yandex.Cloud nebo Amazon S3 poskytuje nezávislou kopii nastavení webu a operačního systému, ke které lze přistupovat z jakéhokoli jiného serveru nebo místního počítače. Zároveň tato kopie není viditelná ani v ovládacím panelu hostingu, ani v panelu správce Bitrix, který poskytuje další zabezpečení.

V nejnešťastnějším výsledku můžete postavit nový server a nasadit web pro jakékoli datum. Ačkoli nejžádanější funkcí bude možnost přístupu k souboru pro konkrétní datum.

Tuto techniku ​​můžete použít s libovolnými servery a weby VDS nebo vyhrazenými servery na jakémkoli stroji, nejen na 1C-Bitrix. OS může být i jiný než CentOS, jako je Ubuntu nebo Debian.

Zdroj: www.habr.com

Přidat komentář