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".
3. Sa "Cloud" paghimo og "Catalogue".
4. Alang sa "Catalogue" paghimo usa ka "Serbisyo account".
5. Paghimo og mga yawe alang sa "Serbisyo Account".
6. I-save ang mga yawe, kini gikinahanglan sa umaabot.
7. Alang sa "Directory" paghimo og "Bucket", ang mga file moadto niini.
8. Girekomendar nako ang pagbutang og limitasyon ug pagpili sa "Cold Storage".
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
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