Hifadhi rudufu ya VDS inayoongezeka na tovuti kwenye 1C-Bitrix katika Yandex.Cloud

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 ambalo mhudumu hutoa ni diski ya chelezo iliyoko kwenye kituo cha data sawa na VDS, lakini kwenye seva tofauti. Unaweza kufanya kazi na diski kupitia FTP na kutumia maandishi yako mwenyewe, au ikiwa ISPManager imewekwa kwenye VDS, basi kupitia moduli yake ya chelezo. Chaguo hili halifai kutokana na matumizi ya 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".
Hifadhi rudufu ya VDS inayoongezeka na tovuti kwenye 1C-Bitrix katika Yandex.Cloud

3. Katika "Wingu" unda "Orodha".
Hifadhi rudufu ya VDS inayoongezeka na tovuti kwenye 1C-Bitrix katika Yandex.Cloud

4. Kwa "Catalogue" fungua "Akaunti ya Huduma".
Hifadhi rudufu ya VDS inayoongezeka na tovuti kwenye 1C-Bitrix katika Yandex.Cloud

5. Unda funguo za "Akaunti ya Huduma".
Hifadhi rudufu ya VDS inayoongezeka na tovuti kwenye 1C-Bitrix katika Yandex.Cloud

6. Hifadhi funguo, zitahitajika katika siku zijazo.
Hifadhi rudufu ya VDS inayoongezeka na tovuti kwenye 1C-Bitrix katika Yandex.Cloud

7. Kwa "Directory" unda "Bucket", faili zitaingia ndani yake.
Hifadhi rudufu ya VDS inayoongezeka na tovuti kwenye 1C-Bitrix katika Yandex.Cloud

8. Ninapendekeza kuweka kikomo na kuchagua "Hifadhi ya Baridi".
Hifadhi rudufu ya VDS inayoongezeka na tovuti kwenye 1C-Bitrix katika Yandex.Cloud

Kuweka chelezo zilizopangwa kwenye seva

Mwongozo huu unachukua ujuzi wa msingi wa utawala.

1. Sakinisha matumizi ya duplicity kwenye VDS

yum install duplicity

2. 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;

fi

4. Endesha hati kwa mara ya kwanza na uangalie matokeo; faili zinapaswa kuonekana kwenye "Ndoo".

`which bash` /backup_scripts/backup.sh

Hifadhi rudufu ya VDS inayoongezeka na tovuti kwenye 1C-Bitrix katika Yandex.Cloud

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.sh

Inarejesha 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_KEY

3. Endesha hati na usubiri matokeo.

`which bash` /backup_scripts/backup.sh

Katika /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

Hifadhi nakala katika Yandex.Cloud au Amazon S3 hutoa nakala ya kujitegemea ya tovuti na mipangilio ya OS ambayo inaweza kupatikana kutoka kwa seva nyingine yoyote au kompyuta ya ndani. Zaidi ya hayo, nakala hii haionekani ama kwenye paneli dhibiti ya upangishaji au kwenye paneli ya msimamizi wa 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

Kuongeza maoni