VDS babeskopia gehigarria Yandex.Cloud-en 1C-Bitrix-en gune batekin

Gunearen babeskopiak egin behar nituen "2C-Bitrix: Site Management"-en (fitxategiak eta mysql datu-basea) egunean bitan eta 1 egunez aldaketen historia gorde.

Gunea CentOS 7 OS exekutatzen duen VDS batean dago 1C-Bitrix: Web ingurunea instalatuta. Gainera, egin zure sistema eragilearen ezarpenen babeskopia.

baldintzak:

  • Maiztasuna - egunean 2 aldiz;
  • Gorde kopiak azken 90 egunetan;
  • Data zehatz baterako fitxategi indibidualak lortzeko gaitasuna, beharrezkoa bada;
  • Babeskopia VDS ez den datu-zentro batean gorde behar da;
  • Babeskopia edonondik sartzeko aukera (beste zerbitzari bat, tokiko ordenagailua, etab.).

Puntu garrantzitsu bat segurtasun kopiak azkar sortzeko gaitasuna izan zen, espazio gehigarrien eta sistemaren baliabideen gutxieneko kontsumoarekin.

Hau ez da sistema osoa azkar leheneratzeko argazki bati buruz, fitxategiei eta datu-baseari eta aldaketen historiari buruzkoa baizik.

Hasierako datuak:

  • XEN birtualizazioari buruzko VDS;
  • OS CentOS 7;
  • 1C-Bitrix: Web ingurunea;
  • "1C-Bitrix: Site Management"-n oinarritutako webgunea, bertsio estandarra;
  • Fitxategiaren tamaina 50 GB da eta hazi egingo da;
  • Datu-basearen tamaina 3 GB da eta hazi egingo da.

Berehala baztertu nuen 1C-Bitrix-en eraikitako babeskopia estandarra. Gune txikietarako bakarrik da egokia, zeren eta:

  • Gunearen kopia osoa egiten du bakoitzean, beraz, kopia bakoitzak fitxategiek hartzen duten leku bera hartuko du, nire kasuan 50 GB da.
  • Babeskopia PHP erabiliz egiten da, eta hori ezinezkoa da horrelako fitxategi-bolumenekin, zerbitzaria gainkargatuko du eta ez da inoiz amaituko.
  • Eta, noski, ezin da 90 egunez hitz egin kopia osoa gordetzean.

Ostalariak eskaintzen duen irtenbidea VDSren datu-zentro berean kokatutako babeskopia-disko bat da, baina zerbitzari ezberdin batean. Diskoarekin FTP bidez lan egin dezakezu eta zure script-ak erabil ditzakezu, edo ISPManager VDSan instalatuta badago, ondoren bere babeskopia moduluaren bidez. Aukera hau ez da egokia datu-zentro bera erabiltzeagatik.

Aurreko guztiaren artean, niretzat aukerarik onena segurtasun-kopia inkrementala da nire script propioa erabiliz Yandex.Cloud (Object Storage) edo Amazon S3 (Amazon Simple Storage Service).

Horrek eskatzen du:

  • VDSrako root sarbidea;
  • instalatutako bikoiztasun-erabilgarritasuna;
  • kontua Yandex.Cloud-en.

Babeskopia gehigarria β€” azken babeskopia egin zenetik aldatu diren datuak soilik artxibatzen dituen metodoa.

bikoiztasun β€” rsync algoritmoak erabiltzen dituen eta Amazon S3-rekin lan egin dezakeen babeskopia-erabilgarritasuna.

Yandex.Cloud vs Amazon S3

Kasu honetan, ez dago Yandex.Cloud eta Amazon S3-ren arteko alderik niretzat. Yandex-ek Amazon S3 APIaren zatirik handiena onartzen du, beraz, S3rekin lan egiteko dauden irtenbideak erabiliz lan egin dezakezu. Nire kasuan, bikoiztasunaren erabilgarritasuna da.

Yandex-en abantaila nagusia errublotan ordaintzea izan daiteke; datu asko badago, ez da truke-tasarekin loturarik egongo. Abiadurari dagokionez, Amazon-en Europako datu-zentroek Yandex-eko Errusiako datu-zentroen parean funtzionatzen dute; adibidez, Frankfurt erabil dezakezu. Lehen Amazon S3 erabiltzen nuen antzeko zereginetarako, orain Yandex probatzea erabaki nuen.

Yandex.Cloud konfiguratzen

1. Ordainketa-kontu bat sortu behar duzu Yandex.Cloud-en. Horretarako, Yandex.Cloud-en saioa hasi behar duzu Yandex kontuaren bidez edo berri bat sortu.

2. Sortu "Hodeia".
VDS babeskopia gehigarria Yandex.Cloud-en 1C-Bitrix-en gune batekin

3. "Hodeian" sortu "Katalogoa".
VDS babeskopia gehigarria Yandex.Cloud-en 1C-Bitrix-en gune batekin

4. β€œKatalogorako” sortu β€œZerbitzu kontua”.
VDS babeskopia gehigarria Yandex.Cloud-en 1C-Bitrix-en gune batekin

5. Sortu "Zerbitzu konturako" gakoak.
VDS babeskopia gehigarria Yandex.Cloud-en 1C-Bitrix-en gune batekin

6. Gorde giltzak, etorkizunean beharrezkoak izango dira.
VDS babeskopia gehigarria Yandex.Cloud-en 1C-Bitrix-en gune batekin

7. "Direktorioa" sortu "Bucket", fitxategiak bertan sartuko dira.
VDS babeskopia gehigarria Yandex.Cloud-en 1C-Bitrix-en gune batekin

8. Muga bat ezartzea eta "Biltegiratzea" hautatzea gomendatzen dut.
VDS babeskopia gehigarria Yandex.Cloud-en 1C-Bitrix-en gune batekin

Zerbitzarian programatutako babeskopiak konfiguratzea

Gida honek oinarrizko administrazio gaitasunak hartzen ditu bere gain.

1. Instalatu duplicity utility VDS-n

yum install duplicity

2. Sortu karpeta bat mysql zabortegietarako, nire kasuan /backup_db da VDS erroan

3. Sortu bash scriptetarako karpeta bat /backup_scripts eta egin babeskopiak egingo dituen lehen scripta /backup_scripts/backup.sh

Gidoiaren edukia:

#!`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. Exekutatu script-a lehen aldiz eta egiaztatu emaitza; fitxategiak "Bucket"-en agertu behar dira.

`which bash` /backup_scripts/backup.sh

VDS babeskopia gehigarria Yandex.Cloud-en 1C-Bitrix-en gune batekin

5. Gehitu script bat cron-era erroko erabiltzaileak egunean 2 aldiz exekutatu dezan, edo behar duzun maiztasunarekin.

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

Yandex.Cloud-etik datuak berreskuratzen

1. Egin berreskuratzeko karpeta bat /backup_restore

2. Egin bash script bat /backup_scripts/restore.sh berreskuratzeko

Fitxategi zehatz bat leheneratzeko adibiderik ezagunena ematen dut:

#!`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. Exekutatu scripta eta itxaron emaitzaren arte.

`which bash` /backup_scripts/backup.sh

/backup_restore/ karpetan aurrez babeskopia egin zen index.php fitxategia aurkituko duzu.

Doikuntza finagoak egin ditzakezu zure beharretara egokitzeko.

Minus bikoizketa

bikoiztasunak eragozpen bat du: ezin da kanalaren erabilera-muga ezarri. Ohiko kanal batekin horrek ez du arazorik sortzen, baina DDoS babestutako kanal bat egunean abiadura kargatzen duen kanal bat erabiltzean, 1-2 megabit-eko muga ezarri ahal izatea gustatuko litzaidake.

Ondorio gisa

Yandex.Cloud edo Amazon S3-en babeskopiak gunearen eta OS ezarpenen kopia independentea eskaintzen du, beste edozein zerbitzaritik edo tokiko ordenagailutik atzitu daitekeen. Gainera, kopia hau ez dago ikusgai ez ostalaritzako kontrol-panelean ez Bitrix-en administrazio-panelean, eta horrek segurtasun gehigarria eskaintzen du.

Kasurik txarrenean, zerbitzari berri bat muntatu eta gunea edozein datatan zabaldu dezakezu. Funtzionalitate ezagunena data zehatz baterako fitxategi batera sartzeko aukera izango den arren.

Teknika hau edozein VDS edo Dedikatu zerbitzari eta guneekin erabil dezakezu edozein motorretan, ez 1C-Bitrix bakarrik. OSa CentOS ez den beste izan daiteke, hala nola Ubuntu edo Debian.

Iturria: www.habr.com

Gehitu iruzkin berria