Nilihitaji kufanya chelezo za tovuti kwenye "2C-Bitrix: Usimamizi wa Tovuti" (faili na hifadhidata ya mysql) mara mbili kwa siku na kuhifadhi historia ya mabadiliko kwa siku 1.
Tovuti hii iko kwenye VDS inayoendesha CentOS 7 OS iliyo na 1C-Bitrix: Mazingira ya Wavuti iliyosakinishwa. Zaidi ya hayo, fanya nakala ya chelezo ya mipangilio yako ya Mfumo wa Uendeshaji.
Mahitaji:
- Frequency - mara 2 kwa siku;
- Hifadhi nakala kwa siku 90 zilizopita;
- Uwezo wa kupata faili za kibinafsi kwa tarehe maalum, ikiwa ni lazima;
- Nakala lazima ihifadhiwe katika kituo cha data isipokuwa VDS;
- Uwezo wa kupata chelezo kutoka mahali popote (seva nyingine, kompyuta ya ndani, nk).
Jambo muhimu lilikuwa uwezo wa kuunda haraka nakala rudufu na utumiaji mdogo wa nafasi ya ziada na rasilimali za mfumo.
Hii sio kuhusu snapshot ya kurejesha mfumo mzima kwa haraka, lakini kuhusu faili na hifadhidata na historia ya mabadiliko.
Data ya awali:
- VDS kwenye uboreshaji wa XEN;
- OS CentOS 7;
- 1C-Bitrix: Mazingira ya wavuti;
- Tovuti kulingana na "1C-Bitrix: Usimamizi wa Tovuti", Toleo la kawaida;
- Ukubwa wa faili ni GB 50 na itakua;
- Saizi ya hifadhidata ni GB 3 na itakua.
Mara moja nilitenga nakala rudufu ya kawaida iliyojengwa ndani ya 1C-Bitrix. Inafaa tu kwa tovuti ndogo, kwa sababu:
- Inafanya nakala kamili ya tovuti kila wakati, kwa hivyo kila nakala itachukua kiasi sawa cha nafasi kama faili zinachukua, kwa upande wangu ni GB 50.
- Hifadhi rudufu inafanywa kwa kutumia PHP, ambayo haiwezekani kwa idadi kama hiyo ya faili, itapakia seva na haitamaliza kamwe.
- Na kwa kweli, hakuwezi kuwa na mazungumzo ya siku 90 wakati wa kuhifadhi nakala kamili.
Suluhisho linalotoa mwenyejiHii ni diski ya chelezo iliyoko katika kituo kimoja cha data kama VDS, lakini kwenye seva tofauti. Unaweza kufikia diski kupitia FTP na kutumia hati zako mwenyewe, au, ikiwa ISPManager imewekwa kwenye VDS, kupitia moduli yake ya chelezo. Chaguo hili halifai kwa sababu linatumia kituo kimoja cha data.
Kutoka kwa yote yaliyo hapo juu, chaguo bora kwangu ni hifadhi ya ziada kwa kutumia hati yangu mwenyewe katika Yandex.Cloud (Hifadhi ya Kitu) au Amazon S3 (Huduma ya Uhifadhi Rahisi ya Amazon).
Hii inahitaji:
- upatikanaji wa mizizi kwa VDS;
- utumiaji wa duplicity uliowekwa;
- akaunti katika Yandex.Cloud.
Hifadhi rudufu inayoongezeka - njia ambayo data pekee ambayo imebadilika tangu hifadhi ya mwisho imewekwa kwenye kumbukumbu.
nakala mbili - matumizi ya chelezo ambayo hutumia algorithms ya rsync na inaweza kufanya kazi na Amazon S3.
Yandex.Cloud dhidi ya Amazon S3
Katika kesi hii, hakuna tofauti kati ya Yandex.Cloud na Amazon S3 kwangu. Yandex inasaidia wingi wa Amazon S3 API, hivyo unaweza kufanya kazi nayo kwa kutumia ufumbuzi uliopo kwa kufanya kazi na S3. Kwa upande wangu, hii ni matumizi ya duplicity.
Faida kuu ya Yandex inaweza kuwa malipo kwa rubles; ikiwa kuna data nyingi, hakutakuwa na uhusiano na kiwango cha ubadilishaji. Kwa upande wa kasi, vituo vya data vya Ulaya vya Amazon hufanya kazi kwa kulinganishwa na vituo vya data vya Kirusi huko Yandex; kwa mfano, unaweza kutumia Frankfurt. Hapo awali nilitumia Amazon S3 kwa kazi sawa, sasa niliamua kujaribu Yandex.
Inaweka Yandex.Cloud
1. Unahitaji kuunda akaunti ya malipo katika Yandex.Cloud. Ili kufanya hivyo, unahitaji kuingia kwenye Yandex.Cloud kupitia akaunti yako ya Yandex au uunda mpya.
2. Unda "Wingu".

3. Katika "Wingu" unda "Orodha".

4. Kwa "Catalogue" fungua "Akaunti ya Huduma".

5. Unda funguo za "Akaunti ya Huduma".

6. Hifadhi funguo, zitahitajika katika siku zijazo.

7. Kwa "Directory" unda "Bucket", faili zitaingia ndani yake.

8. Ninapendekeza kuweka kikomo na kuchagua "Hifadhi ya Baridi".

Kuweka chelezo zilizopangwa kwenye seva
Mwongozo huu unachukua ujuzi wa msingi wa utawala.
1. Sakinisha matumizi ya duplicity kwenye VDS
yum install duplicity2. Unda folda ya utupaji wa mysql, kwa upande wangu ni /backup_db kwenye mzizi wa VDS
3. Unda folda ya hati za bash /backup_scripts na ufanye hati ya kwanza ambayo itafanya chelezo /backup_scripts/backup.sh
Yaliyomo kwenye hati:
#!`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. Endesha hati kwa mara ya kwanza na uangalie matokeo; faili zinapaswa kuonekana kwenye "Ndoo".
`which bash` /backup_scripts/backup.sh
5. Ongeza hati kwenye cron ili mtumiaji wa mizizi afanye kazi mara 2 kwa siku, au kwa marudio unayohitaji.
10 4,16 * * * `which bash` /backup_scripts/backup.shInarejesha data kutoka kwa Yandex.Cloud
1. Tengeneza folda ya kurejesha /backup_restore
2. Tengeneza hati ya bash ya kufufua /backup_scripts/restore.sh
Ninatoa mfano maarufu zaidi wa kurejesha faili maalum:
#!`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. Endesha hati na usubiri matokeo.
`which bash` /backup_scripts/backup.shKatika /backup_restore/ folda utapata faili index.php ambayo hapo awali ilichelezwa.
Unaweza kufanya marekebisho bora zaidi ili kukidhi mahitaji yako.
Ondoa kurudia
duplicity ina drawback moja - haiwezekani kuweka kikomo cha matumizi ya kituo. Kwa kituo cha kawaida hii haileti tatizo, lakini wakati wa kutumia chaneli iliyolindwa na DDoS na malipo ya kasi kwa siku, ningependa kuwa na uwezo wa kuweka kikomo cha megabits 1-2.
Kama hitimisho
Kuhifadhi nakala rudufu kwenye Yandex.Cloud au Amazon S3 hutoa nakala huru ya tovuti yako na mipangilio ya mfumo wa uendeshaji ambayo inaweza kufikiwa kutoka kwa seva nyingine yoyote au kompyuta ya ndani. Nakala hii haionekani kwa mtu yeyote. paneli za kudhibiti mwenyeji, wala katika paneli ya usimamizi ya Bitrix, ambayo hutoa usalama wa ziada.
Katika hali mbaya zaidi, unaweza kukusanya seva mpya na kupeleka tovuti wakati wowote. Ingawa utendaji maarufu zaidi utakuwa na uwezo wa kufikia faili kwa tarehe maalum.
Unaweza kutumia mbinu hii na VDS yoyote au seva na tovuti zilizojitolea kwenye injini zozote, si 1C-Bitrix pekee. OS inaweza pia kuwa nyingine isipokuwa CentOS, kama vile Ubuntu au Debian.
Chanzo: mapenzi.com
