Incremental VDS backup nga adunay usa ka site sa 1C-Bitrix sa Yandex.Cloud

Kinahanglan kong maghimo og mga backup sa site sa "2C-Bitrix: Site Management" (mga file ug mysql database) kaduha sa usa ka adlaw ug magtipig og kasaysayan sa mga kausaban sulod sa 1 ka adlaw.

Ang site nahimutang sa usa ka VDS nga nagpadagan sa CentOS 7 OS nga adunay 1C-Bitrix: Web Environment nga na-install. Dugang pa, paghimo og backup nga kopya sa imong mga setting sa OS.

Mga kinahanglanon:

  • Frequency - 2 beses sa usa ka adlaw;
  • Pagtipig og mga kopya sa katapusang 90 ka adlaw;
  • Ang abilidad sa pagkuha sa indibidwal nga mga file alang sa usa ka piho nga petsa, kon gikinahanglan;
  • Ang backup kinahanglang tipigan sa data center gawas sa VDS;
  • Ang abilidad sa pag-access sa backup gikan sa bisan asa (laing server, lokal nga kompyuter, ug uban pa).

Ang usa ka hinungdanon nga punto mao ang abilidad sa dali nga paghimo og mga backup nga adunay gamay nga pagkonsumo sa dugang nga wanang ug mga kapanguhaan sa sistema.

Dili kini bahin sa usa ka snapshot alang sa dali nga pagpahiuli sa tibuuk nga sistema, apan bahin sa mga file ug database ug ang kasaysayan sa pagbag-o.

Inisyal nga datos:

  • VDS sa XEN virtualization;
  • OS CentOS 7;
  • 1C-Bitrix: Web environment;
  • Website base sa "1C-Bitrix: Site Management", Standard nga bersyon;
  • Ang gidak-on sa file 50 GB ug motubo;
  • Ang gidak-on sa database mao ang 3 GB ug motubo.

Gisalikway dayon nako ang standard backup nga gitukod sa 1C-Bitrix. Kini angayan lamang alang sa gagmay nga mga site, tungod kay:

  • Kini naghimo sa usa ka bug-os nga kopya sa site sa matag higayon, mao nga ang matag kopya mokuha sa sama nga gidaghanon sa mga luna ingon nga ang mga file gikuha, sa akong kaso kini mao ang 50 GB.
  • Ang pag-backup gihimo gamit ang PHP, nga imposible sa ingon nga gidaghanon sa mga file, kini mag-overload sa server ug dili na mahuman.
  • Ug siyempre, wala’y mahimo nga hisgutan ang bisan unsang 90 ka adlaw kung magtipig usa ka tibuuk nga kopya.

Ang solusyon nga gitanyag sa hoster usa ka backup nga disk nga nahimutang sa parehas nga sentro sa datos sama sa VDS, apan sa lahi nga server. Makatrabaho ka sa disk pinaagi sa FTP ug mogamit sa imong kaugalingon nga mga script, o kung ang ISPManager na-install sa VDS, dayon pinaagi sa backup nga module niini. Kini nga kapilian dili angay tungod sa paggamit sa parehas nga sentro sa datos.

Gikan sa tanan sa ibabaw, ang pinakamaayo nga pagpili alang kanako mao ang usa ka incremental backup gamit ang akong kaugalingong script sa Yandex.Cloud (Object Storage) o Amazon S3 (Amazon Simple Storage Service).

Kini nagkinahanglan:

  • gamut access sa VDS;
  • gi-install nga duplicity utility;
  • account sa Yandex.Cloud.

Dugang nga backup β€” usa ka paagi diin ang datos ra nga nabag-o sukad sa katapusan nga backup ang gi-archive.

pagkalimbong - usa ka backup nga gamit nga naggamit sa mga algorithm sa rsync ug mahimong magamit sa Amazon S3.

Yandex.Cloud batok sa Amazon S3

Sa kini nga kaso, walay kalainan tali sa Yandex.Cloud ug Amazon S3 alang kanako. Gisuportahan sa Yandex ang kadaghanan sa Amazon S3 API, aron makatrabaho ka niini gamit ang mga solusyon nga naglungtad alang sa pagtrabaho kauban ang S3. Sa akong kaso, kini ang duplicity utility.

Ang nag-unang bentaha sa Yandex mahimong pagbayad sa mga rubles, kung adunay daghang mga datos, nan wala’y link sa kurso. Sa mga termino sa katulin, ang mga sentro sa datos sa Europe sa Amazon nagtrabaho nga katumbas sa mga Ruso sa Yandex, pananglitan, mahimo nimong gamiton ang Frankfurt. Gigamit nako kaniadto ang Amazon S3 alang sa parehas nga mga buluhaton, karon nakahukom ko nga sulayan ang Yandex.

Pag-set up sa Yandex.Cloud

1. Kinahanglan ka nga maghimo usa ka account sa pagbayad sa Yandex.Cloud. Aron mahimo kini, kinahanglan ka nga mag-log in sa Yandex.Cloud pinaagi sa imong Yandex account o maghimo usa ka bag-o.

2. Paghimo og "Cloud".
Incremental VDS backup nga adunay usa ka site sa 1C-Bitrix sa Yandex.Cloud

3. Sa "Cloud" paghimo og "Catalogue".
Incremental VDS backup nga adunay usa ka site sa 1C-Bitrix sa Yandex.Cloud

4. Alang sa "Catalogue" paghimo usa ka "Serbisyo account".
Incremental VDS backup nga adunay usa ka site sa 1C-Bitrix sa Yandex.Cloud

5. Paghimo og mga yawe alang sa "Serbisyo Account".
Incremental VDS backup nga adunay usa ka site sa 1C-Bitrix sa Yandex.Cloud

6. I-save ang mga yawe, kini gikinahanglan sa umaabot.
Incremental VDS backup nga adunay usa ka site sa 1C-Bitrix sa Yandex.Cloud

7. Alang sa "Directory" paghimo og "Bucket", ang mga file moadto niini.
Incremental VDS backup nga adunay usa ka site sa 1C-Bitrix sa Yandex.Cloud

8. Girekomendar nako ang pagbutang og limitasyon ug pagpili sa "Cold Storage".
Incremental VDS backup nga adunay usa ka site sa 1C-Bitrix sa Yandex.Cloud

Pag-set up sa naka-iskedyul nga pag-backup sa server

Kini nga giya adunay sukaranan nga kahanas sa pagdumala.

1. I-install ang duplicity utility sa VDS

yum install duplicity

2. Paghimo og usa ka folder alang sa mysql dumps, sa akong kaso kini mao ang /backup_db sa VDS gamut

3. Paghimo og folder alang sa bash scripts /backup_scripts ug himoa ang unang script nga mag-backup /backup_scripts/backup.sh

Mga sulod sa script:

#!`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. Pagdalagan ang script sa unang higayon ug susiha ang resulta, ang mga file kinahanglan nga makita sa Balde.

`which bash` /backup_scripts/backup.sh

Incremental VDS backup nga adunay usa ka site sa 1C-Bitrix sa Yandex.Cloud

5. Pagdugang og script sa cron para sa root user nga modagan 2 beses sa usa ka adlaw, o sa frequency nga imong gikinahanglan.

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

Pagbawi sa datos gikan sa Yandex.Cloud

1. Paghimo og restore folder /backup_restore

2. Paghimo ug bash script para sa recovery /backup_scripts/restore.sh

Gihatag nako ang labing inila nga pananglitan sa pagpahiuli sa usa ka piho nga file:

#!`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. Pagdalagan ang script ug paghulat sa resulta.

`which bash` /backup_scripts/backup.sh

Sa /backup_restore/ folder makita nimo ang index.php file nga gi-back up kaniadto.

Makahimo ka og mas maayo nga mga pagbag-o nga mohaum sa imong mga panginahanglan.

minus pagdoble

Ang pagdoble adunay usa ka disbentaha - dili posible nga magtakda og limitasyon sa paggamit sa channel. Sa usa ka regular nga channel dili kini makamugna og problema, apan kung naggamit sa usa ka channel nga gipanalipdan sa DDoS nga adunay tulin nga pag-charge kada adlaw, gusto nako nga makahimo og limitasyon sa 1-2 megabits.

Ingong konklusyon

Ang backup sa Yandex.Cloud o Amazon S3 naghatag usa ka independente nga kopya sa site ug mga setting sa OS nga ma-access gikan sa bisan unsang ubang server o lokal nga kompyuter. Dugang pa, kini nga kopya dili makita bisan sa host control panel o sa Bitrix admin panel, nga naghatag dugang nga seguridad.

Sa pinakagrabe nga senaryo sa kaso, mahimo kang mag-assemble og bag-ong server ug i-deploy ang site sa bisan unsang petsa. Bisan kung ang labing inila nga gamit mao ang abilidad sa pag-access sa usa ka file alang sa usa ka piho nga petsa.

Mahimo nimong gamiton kini nga teknik sa bisan unsang VDS o Dedicated server ug site sa bisan unsang makina, dili lang sa 1C-Bitrix. Ang OS mahimo usab nga lain sa CentOS, sama sa Ubuntu o Debian.

Source: www.habr.com

Idugang sa usa ka comment