Pakāpeniska VDS dublēšana ar vietni 1C-Bitrix pakalpojumā Yandex.Cloud

Man bija nepieciešams 2 reizes dienā dublēt vietni uz 1C-Bitrix: Site Management (faili un mysql datu bāze) un saglabāt izmaiņu vēsturi 90 dienas.

Vietne atrodas VDS, kurā darbojas CentOS 7 ar instalētu "1C-Bitrix: Web Environment". Turklāt izveidojiet OS iestatījumu dublējumkopiju.

Prasības:

  • Biežums - 2 reizes dienā;
  • Saglabājiet kopijas pēdējās 90 dienas;
  • Iespēja nepieciešamības gadījumā iegūt atsevišķus failus uz konkrētu datumu;
  • Dublējums jāglabā datu centrā, kas nav VDS;
  • Iespēja piekļūt dublējumam no jebkuras vietas (cita servera, lokālā datora utt.).

Svarīgs punkts bija iespēja ātri izveidot dublējumus ar minimālu papildu vietas un sistēmas resursu patēriņu.

Šeit nav runa par momentuzņēmumu ātrai visas sistēmas atjaunošanai, bet gan par failiem un datubāzi un izmaiņu vēsturi.

Sākotnējie dati:

  • VDS uz XEN virtualizācijas;
  • OS CentOS 7;
  • 1C-Bitrix: Web vide;
  • Vietne, kuras pamatā ir "1C-Bitrix: Vietņu pārvaldība", standarta versija;
  • Faila izmērs ir 50 GB un tas pieaugs;
  • Datu bāzes izmērs ir 3 GB, un tas pieaugs.

Standarta dublējums, kas iebūvēts 1C-Bitrix - nekavējoties izslēgts. Tas ir piemērots tikai nelielām vietnēm, jo:

  • Katru reizi veido pilnu vietnes kopiju, respektīvi, katra kopija aizņems tik daudz vietas, cik es aizņemu failus, manā gadījumā tie ir 50 GB.
  • Dublēšana tiek veikta izmantojot PHP, kas ar tādu failu apjomu nav iespējams, tas pārslogos serveri un nekad nebeigsies.
  • Un, protams, nevar būt runas par 90 dienām, glabājot pilnu kopiju.

Risinājums, ko piedāvā mitinātājs, ir rezerves disks, kas atrodas tajā pašā datu centrā, kur VDS, bet citā serverī. Varat strādāt ar disku, izmantojot FTP un izmantot savus skriptus, vai, ja VDS ir instalēts ISPManager, tad izmantojot tā dublēšanas moduli. Šī opcija nav piemērota, jo tiek izmantots viens un tas pats datu centrs.

No visa iepriekš minētā mana labākā izvēle ir papildu dublēšana saskaņā ar manu scenāriju pakalpojumā Yandex.Cloud (Object Storage) vai Amazon S3 (Amazon Simple Storage Service).

Tas prasa:

  • root piekļuve VDS;
  • instalēta duplicity utilīta;
  • konts pakalpojumā Yandex.Cloud.

pakāpeniska dublēšana - metode, kurā tiek arhivēti tikai tie dati, kas ir mainījušies kopš pēdējās dublēšanas.

divkosība - rezerves utilīta, kas izmanto rsync algoritmus un var strādāt ar Amazon S3.

Yandex.Cloud pret Amazon S3

Man šajā gadījumā nav nekādas atšķirības starp Yandex.Cloud un Amazon S3. Yandex atbalsta galveno Amazon S3 API daļu, tāpēc varat ar to strādāt, izmantojot risinājumus, kas ir pieejami darbam ar S3. Manā gadījumā šī ir divkosības utilīta.

Galvenā Yandex priekšrocība var būt maksājums rubļos, ja ir daudz datu, tad saites uz kursu nebūs. Ātruma ziņā Amazon Eiropas datu centri strādā proporcionāli Yandex Krievijas datu centriem, piemēram, varat izmantot Frankfurti. Iepriekš līdzīgiem uzdevumiem izmantoju Amazon S3, tagad nolēmu izmēģināt Yandex.

Yandex.Cloud iestatīšana

1. Jums ir jāizveido norēķinu konts pakalpojumā Yandex.Cloud. Lai to izdarītu, jums ir jāpiesakās pakalpojumā Yandex.Cloud, izmantojot savu Yandex kontu, vai jāizveido jauns.

2. Izveidot mākoni.
Pakāpeniska VDS dublēšana ar vietni 1C-Bitrix pakalpojumā Yandex.Cloud

3. "Mākonī" izveidojiet "Katalogu".
Pakāpeniska VDS dublēšana ar vietni 1C-Bitrix pakalpojumā Yandex.Cloud

4. "Katalogam" izveidojiet "Pakalpojuma kontu".
Pakāpeniska VDS dublēšana ar vietni 1C-Bitrix pakalpojumā Yandex.Cloud

5. “Pakalpojuma kontam” izveidojiet atslēgas.
Pakāpeniska VDS dublēšana ar vietni 1C-Bitrix pakalpojumā Yandex.Cloud

6. Saglabājiet atslēgas, tās jums būs nepieciešamas nākotnē.
Pakāpeniska VDS dublēšana ar vietni 1C-Bitrix pakalpojumā Yandex.Cloud

7. "Katalogam" izveidojiet "spaini", faili tajā ietilps.
Pakāpeniska VDS dublēšana ar vietni 1C-Bitrix pakalpojumā Yandex.Cloud

8. Es iesaku iestatīt ierobežojumu un izvēlēties "Cold Storage".
Pakāpeniska VDS dublēšana ar vietni 1C-Bitrix pakalpojumā Yandex.Cloud

Plānotu dublējumu iestatīšana serverī

Šajā rokasgrāmatā ir ietvertas pamata administratīvās prasmes.

1. Instalējiet duplicity utilītu VDS

yum install duplicity

2. Izveidojiet mapi mysql izgāztuvēm, manā gadījumā tā ir /backup_db VDS saknē

3. Izveidojiet mapi bash skriptiem /backup_scripts un izveidojiet pirmo skriptu, kas dublēs /backup_scripts/backup.sh

Skripta saturs:

#!`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. Palaidiet skriptu pirmo reizi un pārbaudiet rezultātu, failiem jāparādās kausā.

`which bash` /backup_scripts/backup.sh

Pakāpeniska VDS dublēšana ar vietni 1C-Bitrix pakalpojumā Yandex.Cloud

5. Pievienojiet skriptu cron, lai root lietotājs tiktu izpildīts 2 reizes dienā vai tik bieži, cik nepieciešams.

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

Datu atkopšana no Yandex.Cloud

1. Izveidojiet atjaunošanas mapi /backup_restore

2. Izveidojiet bash atjaunošanas skriptu /backup_scripts/restore.sh

Es sniedzu visvairāk pieprasīto konkrēta faila atkopšanas piemēru:

#!`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. Palaidiet skriptu un gaidiet rezultātu.

`which bash` /backup_scripts/backup.sh

Mapē /backup_restore/ atradīsit failu index.php, kas iepriekš bija iekļauts dublējumkopijā.

Varat veikt precīzākus pielāgojumus, lai tie atbilstu savām vajadzībām.

mīnus divkosība

Divkosībai ir viens trūkums – nav iespējams iestatīt kanālu lietošanas ierobežojumu. Ar parastu kanālu tas problēmas nerada, bet ar DDoS aizsargātu kanālu ar ātruma aprēķinu dienā gribētos, lai varētu uzlikt 1-2 megabitu limitu.

Kā secinājums

Dublēšana pakalpojumā Yandex.Cloud vai Amazon S3 nodrošina neatkarīgu vietnes un OS iestatījumu kopiju, kurai var piekļūt no jebkura cita servera vai lokālā datora. Tajā pašā laikā šī kopija nav redzama ne hostinga vadības panelī, ne Bitrix admin panelī, kas nodrošina papildu drošību.

Visneveiksmīgākajā gadījumā varat izveidot jaunu serveri un izvietot vietni jebkurā datumā. Lai gan pieprasītākā funkcionalitāte būs iespēja piekļūt failam uz noteiktu datumu.

Varat izmantot šo paņēmienu ar jebkuru VDS vai specializētu serveri un vietni jebkurā dzinējā, ne tikai 1C-Bitrix. OS var būt arī cita, nevis CentOS, piemēram, Ubuntu vai Debian.

Avots: www.habr.com

Pievieno komentāru