Rezervimi në rritje i VDS me një faqe në 1C-Bitrix në Yandex.Cloud

Ishte e nevojshme që unë të bëja kopje rezervë të faqes në 2C-Bitrix: Site Management 1 herë në ditë (skedarët dhe bazën e të dhënave mysql) dhe të ruaj një histori ndryshimesh për 90 ditë.

Sajti ndodhet në një VDS që ekzekuton CentOS 7 me të instaluar "1C-Bitrix: Web Environment". Për më tepër, bëni një kopje rezervë të cilësimeve të OS.

kërkesat:

  • Frekuenca - 2 herë në ditë;
  • Mbani kopje për 90 ditët e fundit;
  • Mundësia për të marrë skedarë individualë për një datë specifike, nëse është e nevojshme;
  • Rezervimi duhet të ruhet në një qendër të dhënash të ndryshme nga VDS;
  • Mundësia për të hyrë në kopjen rezervë nga kudo (një server tjetër, kompjuter lokal, etj.).

Një pikë e rëndësishme ishte aftësia për të krijuar shpejt kopje rezervë me konsum minimal të hapësirës shtesë dhe burimeve të sistemit.

Nuk bëhet fjalë për një fotografi për një rikthim të shpejtë të të gjithë sistemit, por për skedarët dhe bazën e të dhënave dhe historinë e ndryshimeve.

Të dhënat fillestare:

  • VDS në virtualizimin XEN;
  • OS CentOS 7;
  • 1C-Bitrix: Mjedisi në ueb;
  • Sajti i bazuar në "1C-Bitrix: Menaxhimi i sitit", versioni standard;
  • Madhësia e skedarit është 50 GB dhe do të rritet;
  • Madhësia e bazës së të dhënave është 3 GB dhe do të rritet.

Rezervimi standard i integruar në 1C-Bitrix - përjashtohet menjëherë. Është i përshtatshëm vetëm për vende të vogla, sepse:

  • Bën një kopje të plotë të faqes çdo herë, përkatësisht, çdo kopje do të zërë aq hapësirë ​​sa unë zë skedarët, në rastin tim është 50 GB.
  • Rezervimi bëhet duke përdorur PHP, gjë që është e pamundur me vëllime të tilla skedarësh, do të mbingarkojë serverin dhe nuk do të përfundojë kurrë.
  • Dhe sigurisht, nuk mund të flitet për 90 ditë kur ruhet një kopje e plotë.

Zgjidhja që ofron hosteri është një disk rezervë i vendosur në të njëjtën qendër të të dhënave si VDS, por në një server tjetër. Mund të punoni me diskun përmes FTP dhe të përdorni skriptet tuaja, ose nëse ISPManager është i instaluar në VDS, atëherë përmes modulit të tij rezervë. Ky opsion nuk është i përshtatshëm për shkak të përdorimit të së njëjtës qendër të të dhënave.

Nga të gjitha sa më sipër, zgjidhja më e mirë për mua është një kopje rezervë në rritje sipas skenarit tim në Yandex.Cloud (Ruajtja e objekteve) ose Amazon S3 (Shërbimi i ruajtjes së thjeshtë të Amazon).

Kjo kërkon:

  • qasja rrënjësore në VDS;
  • programi i instaluar i dyfishtë;
  • llogari në Yandex.Cloud.

rezervë në rritje - një metodë në të cilën arkivohen vetëm të dhënat që kanë ndryshuar që nga rezervimi i fundit.

hipokrizi - një mjet rezervë që përdor algoritme rsync dhe mund të punojë me Amazon S3.

Yandex.Cloud vs Amazon S3

Nuk ka asnjë ndryshim midis Yandex.Cloud dhe Amazon S3 në këtë rast për mua. Yandex mbështet pjesën kryesore të Amazon S3 API, kështu që mund të punoni me të duke përdorur zgjidhjet që janë në dispozicion për të punuar me S3. Në rastin tim, ky është mjeti i dyfishtë.

Avantazhi kryesor i Yandex mund të jetë pagesa në rubla, nëse ka shumë të dhëna, atëherë nuk do të ketë lidhje me kursin. Për sa i përket shpejtësisë, qendrat evropiane të të dhënave të Amazon punojnë në mënyrë proporcionale me ato ruse në Yandex, për shembull, mund të përdorni Frankfurt. Më parë kam përdorur Amazon S3 për detyra të ngjashme, tani vendosa të provoj Yandex.

Konfigurimi i Yandex.Cloud

1. Ju duhet të krijoni një llogari faturimi në Yandex.Cloud. Për ta bërë këtë, duhet të identifikoheni në Yandex.Cloud përmes llogarisë tuaj Yandex ose të krijoni një të re.

2. Krijo renë kompjuterike.
Rezervimi në rritje i VDS me një faqe në 1C-Bitrix në Yandex.Cloud

3. Në "Cloud" krijoni një "Katalog".
Rezervimi në rritje i VDS me një faqe në 1C-Bitrix në Yandex.Cloud

4. Për "Katalogun" krijoni një "Llogari shërbimi".
Rezervimi në rritje i VDS me një faqe në 1C-Bitrix në Yandex.Cloud

5. Për "Llogarinë e shërbimit" krijoni çelësa.
Rezervimi në rritje i VDS me një faqe në 1C-Bitrix në Yandex.Cloud

6. Mbani çelësat, do t'ju duhen në të ardhmen.
Rezervimi në rritje i VDS me një faqe në 1C-Bitrix në Yandex.Cloud

7. Për "Katalogun" krijoni një "Kovë", skedarët do të bien në të.
Rezervimi në rritje i VDS me një faqe në 1C-Bitrix në Yandex.Cloud

8. Unë rekomandoj të vendosni një kufi dhe të zgjidhni "Ruajtja e Ftohtë".
Rezervimi në rritje i VDS me një faqe në 1C-Bitrix në Yandex.Cloud

Vendosja e rezervave të planifikuara në server

Ky udhëzues supozon aftësitë themelore administrative.

1. Instaloni programin e duplicity në VDS

yum install duplicity

2. Krijo një dosje për mysql dumps, në rastin tim është /backup_db në rrënjën VDS

3. Krijoni një dosje për skriptet bash /backup_scripts dhe bëni skriptin e parë që do të rezervojë /backup_scripts/backup.sh

Përmbajtja e skriptit:

#!`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. Ekzekutoni skriptin për herë të parë dhe kontrolloni rezultatin, skedarët duhet të shfaqen në Bucket.

`which bash` /backup_scripts/backup.sh

Rezervimi në rritje i VDS me një faqe në 1C-Bitrix në Yandex.Cloud

5. Shto një skript në cron që përdoruesi rrënjë të ekzekutohet 2 herë në ditë, ose aq shpesh sa të nevojitet.

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

Rikuperimi i të dhënave nga Yandex.Cloud

1. Krijoni një dosje rikuperimi /backup_restore

2. Bëni skriptin e rikthimit të bash /backup_scripts/restore.sh

Unë jap shembullin më të kërkuar të rikuperimit të një skedari specifik:

#!`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. Drejtoni skriptin dhe prisni rezultatin.

`which bash` /backup_scripts/backup.sh

Në dosjen /backup_restore/ do të gjeni skedarin index.php që ishte përfshirë më parë në kopje rezervë.

Ju mund të bëni rregullime më të imta për t'iu përshtatur nevojave tuaja.

minus dyfishim

Dyfishimi ka një pengesë - nuk ka asnjë mënyrë për të vendosur një kufi të përdorimit të kanalit. Me një kanal normal, kjo nuk krijon problem, por me një kanal të mbrojtur me DDoS me faturim të shpejtësisë në ditë, do të doja të vendosja një kufi 1-2 megabit.

Si perfundim

Rezervimi në Yandex.Cloud ose Amazon S3 siguron një kopje të pavarur të cilësimeve të sitit dhe OS që mund të aksesohen nga çdo server tjetër ose kompjuter lokal. Në të njëjtën kohë, kjo kopje nuk është e dukshme as në panelin e kontrollit pritës dhe as në panelin e administratorit Bitrix, i cili ofron siguri shtesë.

Në rezultatin më të pafat, mund të ndërtoni një server të ri dhe të vendosni sitin për çdo datë. Megjithëse funksionaliteti më i kërkuar do të jetë aftësia për të hyrë në skedar për një datë specifike.

Ju mund ta përdorni këtë teknikë me çdo server dhe sajt VDS ose të dedikuar në çdo motor, jo vetëm 1C-Bitrix. Sistemi operativ mund të jetë gjithashtu i ndryshëm nga CentOS, si Ubuntu ose Debian.

Burimi: www.habr.com

Shto një koment