Ба ман лозим буд, ки сайтро дар "2C-Bitrix: Идоракунии сайт" (файлҳо ва пойгоҳи додаҳои mysql) дар як рӯз ду маротиба нусхабардорӣ кунам ва таърихи тағиротро дар тӯли 1 рӯз нигоҳ доштам.
Сомона дар VDS бо OS CentOS 7 бо 1C-Bitrix: Web Environment насб шудааст. Илова бар ин, нусхаи эҳтиётии танзимоти OS-и худро созед.
Талабот:
- Давомнокии - 2 бор дар як рўз;
- Нусхаҳоро дар давоми 90 рӯзи охир нигоҳ доред;
- Имконияти гирифтани файлҳои инфиродӣ барои санаи мушаххас, агар лозим бошад;
- Нусхаи эҳтиётӣ бояд дар маркази додаҳо ғайр аз VDS нигоҳ дошта шавад;
- Имконияти дастрасӣ ба нусхабардорӣ аз ҳама ҷо (сервери дигар, компютери маҳаллӣ ва ғайра).
Нуктаи муҳим ин қобилияти зуд эҷод кардани нусхаҳои эҳтиётӣ бо истеъмоли ҳадди ақали фазои иловагӣ ва захираҳои система буд.
Ин на дар бораи аксбардорӣ барои зуд барқарор кардани тамоми система, балки дар бораи файлҳо ва пойгоҳи додаҳо ва таърихи тағирот.
Маълумоти аввалия:
- VDS дар виртуализатсияи XEN;
- OS CentOS 7;
- 1C-Bitrix: Муҳити веб;
- Вебсайт дар асоси "1C-Bitrix: Идоракунии сайт", Версияи стандартӣ;
- Андозаи файл 50 ГБ аст ва афзоиш хоҳад ёфт;
- Андозаи пойгоҳи додаҳо 3 ГБ аст ва афзоиш хоҳад ёфт.
Ман фавран нусхаи эҳтиётии стандартиро, ки дар 1C-Bitrix сохта шудааст, истисно кардам. Он танҳо барои сайтҳои хурд мувофиқ аст, зеро:
- Он ҳар дафъа нусхаи пурраи сайтро месозад, аз ин рӯ ҳар як нусха ҳамон миқдор фосилаеро ишғол мекунад, ки файлҳоро ишғол мекунанд, дар ҳолати ман он 50 ГБ аст.
- Нусхаи эҳтиётӣ бо истифода аз PHP анҷом дода мешавад, ки бо чунин ҳаҷми файлҳо ғайриимкон аст, он серверро аз ҳад зиёд бор мекунад ва ҳеҷ гоҳ тамом намешавад.
- Ва албатта, дар бораи ягон 90 рӯз ҳангоми нигоҳ доштани нусхаи пурра гап нест.
Роҳи ҳале, ки пешниҳод мекунад мизбонИн диски эҳтиётӣ аст, ки дар ҳамон маркази додаҳо бо VDS ҷойгир аст, аммо дар сервери дигар. Шумо метавонед ба диск тавассути FTP дастрасӣ пайдо кунед ва скриптҳои худро истифода баред, ё агар ISPManager дар VDS насб карда шуда бошад, тавассути модули эҳтиётии он. Ин имкон мувофиқ нест, зеро он аз ҳамон маркази додаҳо истифода мебарад.
Аз ҳама гуфтаҳои дар боло зикршуда, беҳтарин интихоб барои ман нусхаи эҳтиётии афзоянда бо истифода аз скрипти шахсии ман дар Yandex.Cloud (Object Storage) ё Amazon S3 (Хизматрасонии Simple Storage Amazon) мебошад.
Ин талаб мекунад:
- дастрасии реша ба VDS;
- утилитаи дубликати насбшуда;
- ҳисоб дар Yandex.Cloud.
Нусхаи эҳтиётӣ — усуле, ки дар он танҳо маълумоте, ки пас аз нусхабардории охирин тағир ёфтааст, бойгонӣ карда мешавад.
такрорӣ — як утилитаи эҳтиётӣ, ки алгоритмҳои rsync-ро истифода мебарад ва метавонад бо Amazon S3 кор кунад.
Yandex.Cloud против Amazon S3
Дар ин ҳолат, байни Yandex.Cloud ва Amazon S3 барои ман фарқият вуҷуд надорад. Яндекс қисми асосии Amazon S3 API-ро дастгирӣ мекунад, бинобар ин шумо метавонед бо он бо истифода аз қарорҳое, ки барои кор бо S3 мавҷуданд, кор кунед. Дар ҳолати ман, ин як хидмати дутарафа аст.
Бартарии асосии Яндекс метавонад пардохт бо рубл бошад, агар маълумот зиёд бошад, ба қурби асъор пайваст намешавад. Аз нуқтаи назари суръат, марказҳои додаҳои аврупоии Amazon дар муқоиса бо марказҳои додаҳои русии Яндекс кор мекунанд; масалан, шумо метавонед Франкфуртро истифода баред. Ман қаблан Amazon S3-ро барои вазифаҳои шабеҳ истифода мекардам, ҳоло ман қарор додам, ки Яндексро санҷам.
Танзими Yandex.Cloud
1. Шумо бояд дар Yandex.Cloud ҳисоби пардохт эҷод кунед. Барои ин, шумо бояд ба Yandex.Cloud тавассути ҳисоби Yandex-и худ ворид шавед ё ҳисоби нав эҷод кунед.
2. Эҷоди "Абр".

3. Дар "Абр" "Каталог" эҷод кунед.

4. Барои "Каталог" "Ҳисоби хидматӣ" эҷод кунед.

5. Барои "Ҳисоби хидматӣ" калидҳо эҷод кунед.

6. Калидҳоро захира кунед, онҳо дар оянда лозим хоҳанд шуд.

7. Барои "Феҳрист" як "Сатил" эҷод кунед, файлҳо ба он дохил мешаванд.

8. Ман тавсия медиҳам, ки маҳдудият муқаррар карда, "Нигоҳдории сард" -ро интихоб кунед.

Насб кардани нусхаҳои эҳтиётии ба нақша гирифташуда дар сервер
Ин дастур малакаҳои асосии маъмуриро дарбар мегирад.
1. Утилитаи такрориро дар VDS насб кунед
yum install duplicity2. Барои партовҳои mysql ҷузвдон эҷод кунед, дар ҳолати ман он /backup_db дар решаи VDS аст
3. Барои скриптҳои bash /backup_scripts ҷузвдон эҷод кунед ва скрипти аввалинеро созед, ки нусхаҳои эҳтиётиро иҷро мекунад /backup_scripts/backup.sh
Мазмуни скрипт:
#!`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;
fi4. Бори аввал скриптро иҷро кунед ва натиҷаро тафтиш кунед, файлҳо бояд дар "Сатил" пайдо шаванд.
`which bash` /backup_scripts/backup.sh
5. Ба cron скрипт илова кунед, то корбари решавӣ дар як рӯз 2 маротиба ё бо басомади лозима кор кунад.
10 4,16 * * * `which bash` /backup_scripts/backup.shБарқарор кардани маълумот аз Yandex.Cloud
1. Папкаи барқарорсозӣ /backup_restore созед
2. Барои барқарорсозӣ /backup_scripts/restore.sh скрипти bash созед
Ман мисоли маъмултарини барқарор кардани файли мушаххасро медиҳам:
#!`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_KEY3. Скриптро иҷро кунед ва натиҷаро интизор шавед.
`which bash` /backup_scripts/backup.shДар папкаи /backup_restore/ шумо файли index.php-ро хоҳед ёфт, ки қаблан нусхабардорӣ шуда буд.
Шумо метавонед барои мувофиқ кардани эҳтиёҷоти худ ислоҳоти дақиқтар кунед.
Минус такрорӣ
дубликат як нуқсон дорад - маҳдудияти истифодаи каналро муқаррар кардан ғайриимкон аст. Бо канали муқаррарӣ ин мушкилот эҷод намекунад, аммо ҳангоми истифодаи канали аз DDoS муҳофизатшуда бо пуркунии суръат дар як рӯз, ман мехостам, ки маҳдудияти 1-2 мегабит муқаррар карда шавад.
Хамчун хулоса
Нусхабардории нусха дар Yandex.Cloud ё Amazon S3 нусхаи мустақили вебсайт ва танзимоти системаи амалиётии шуморо таъмин мекунад, ки онро аз ҳама гуна сервери дигар ё компютери маҳаллӣ дастрас кардан мумкин аст. Ин нусха барои ҳеҷ кас намоён нест. панелҳои идоракунӣ хостинг, на дар панели идоракунии Bitrix, ки амнияти иловагиро таъмин мекунад.
Дар бадтарин сенарияи ҳолат, шумо метавонед сервери навро ҷамъ кунед ва сайтро дар дилхоҳ сана ҷойгир кунед. Гарчанде ки функсияи маъмултарин қобилияти дастрасӣ ба файл барои санаи мушаххас хоҳад буд.
Шумо метавонед ин техникаро бо ҳама гуна серверҳо ва сайтҳои VDS ё Dedicated дар ҳама гуна муҳаррикҳо истифода баред, на танҳо 1C-Bitrix. OS инчунин метавонад ғайр аз CentOS, ба монанди Ubuntu ё Debian бошад.
Манбаъ: will.com
