Nilaina ho ahy ny namerina ny tranokala amin'ny 2C-Bitrix: Site Management in-1 isan'andro (rakitra sy tahiry mysql) ary mitahiry ny tantaran'ny fiovana mandritra ny 90 andro.
Ny tranokala dia hita ao amin'ny VDS mihazakazaka CentOS 7 misy "1C-Bitrix: Web Environment" napetraka. Fanampin'izany, manaova kopia backup amin'ny firafitry ny OS.
fepetra takiana:
- Frequency - in-2 isan'andro;
- Mitazona kopia mandritra ny 90 andro farany;
- Ny fahafahana mahazo rakitra tsirairay amin'ny daty voafaritra, raha ilaina;
- Ny backup dia tsy maintsy tehirizina ao amin'ny foibe angona ankoatry ny VDS;
- Ny fahafahana miditra amin'ny backup na aiza na aiza (server hafa, solosaina eo an-toerana, sns.).
Ny teboka manan-danja dia ny fahafahana mamorona backups miaraka amin'ny fanjifana kely indrindra amin'ny habaka fanampiny sy ny loharanon'ny rafitra.
Ity dia tsy momba ny snapshot amin'ny famerenana haingana ny rafitra manontolo, fa momba ny rakitra sy ny angon-drakitra ary ny tantaran'ny fiovana.
Loharano loharano:
- VDS amin'ny virtoaly XEN;
- OS CentOS 7;
- 1C-Bitrix: Tontolo iainana amin'ny Internet;
- Site mifototra amin'ny "1C-Bitrix: Site Management", dikan-teny mahazatra;
- Ny haben'ny rakitra dia 50 GB ary hitombo;
- Ny haben'ny tahiry dia 3 GB ary hitombo.
Backup mahazatra namboarina tao amin'ny 1C-Bitrix - nesorina avy hatrany. Mety ho an'ny tranokala kely ihany izy io, satria:
- Manao dika mitovy amin'ny tranokala isaky ny tsirairay, ny dika tsirairay dia haka toerana betsaka toy ny fandraisako ny rakitra, raha ny ahy dia 50 GB.
- Ny backup dia atao amin'ny PHP, izay tsy azo atao amin'ny habetsaky ny rakitra toy izany, dia hameno ny mpizara ary tsy hifarana mihitsy.
- Ary mazava ho azy, tsy misy resaka momba ny 90 andro rehefa mitahiry kopia feno.
Ny vahaolana atolotry ny mpampiantrano dia kapila backup hita ao amin'ny foibe data mitovy amin'ny VDS, fa amin'ny mpizara hafa. Azonao atao ny miara-miasa amin'ny kapila amin'ny alΓ lan'ny FTP ary mampiasa ny soratanao manokana, na raha napetraka ao amin'ny VDS ny ISPManager, dia amin'ny alΓ lan'ny maody backup. Ity safidy ity dia tsy mety noho ny fampiasana ny foibe data mitovy.
Avy amin'ireo rehetra voalaza etsy ambony ireo, ny safidy tsara indrindra ho ahy dia ny backup incremental araka ny scenario manokana ao amin'ny Yandex.Cloud (Object Storage) na Amazon S3 (Amazon Simple Storage Service).
Mitaky:
- fidirana faka amin'ny VDS;
- fampiasa duplicity napetraka;
- kaonty ao amin'ny Yandex.Cloud.
backup incremental - fomba iray izay tsy misy afa-tsy ny angona niova hatramin'ny backup farany no voatahiry.
hampiely lainga - fitaovana backup izay mampiasa algorithm rsync ary afaka miasa amin'ny Amazon S3.
Yandex.Cloud vs Amazon S3
Tsy misy fahasamihafana eo amin'ny Yandex.Cloud sy Amazon S3 amin'ity tranga ity ho ahy. Yandex dia manohana ny ampahany lehibe amin'ny Amazon S3 API, mba hahafahanao miara-miasa aminy amin'ny fampiasana ireo vahaolana azo ampiasaina amin'ny fiasana amin'ny S3. Raha ny amiko dia ity no utility duplicity.
Ny tombony lehibe amin'ny Yandex dia mety ho fandoavam-bola amin'ny roubles, raha misy angon-drakitra be dia be, dia tsy hisy rohy mankany amin'ny fampianarana. Eo amin'ny hafainganam-pandeha, ny foibe angona Eoropeana Amazon dia miasa mifanaraka amin'ny Rosiana ao amin'ny Yandex, ohatra, azonao atao ny mampiasa Frankfurt. Nampiasa Amazon S3 aho taloha ho an'ny asa mitovy amin'izany, ankehitriny dia nanapa-kevitra ny hanandrana Yandex aho.
Fametrahana Yandex.Cloud
1. Mila mamorona kaonty faktiora ao amin'ny Yandex.Cloud ianao. Mba hanaovana izany, mila miditra ao amin'ny Yandex.Cloud ianao amin'ny alΓ lan'ny kaontinao Yandex na mamorona kaonty vaovao.
2. Mamorona rahona.
3. Ao amin'ny "Cloud" mamorona "Katalaogy".
4. Ho an'ny "Catalogue" dia mamorona "kaonty serivisy".
5. Ho an'ny "kaonty serivisy" dia mamorona fanalahidy.
6. Tazony ny fanalahidy, mila azy ireo ianao amin'ny ho avy.
7. Ho an'ny "Katalaogy" mamorona "Bucket", dia ho tafiditra ao ny rakitra.
8. Manoro hevitra aho hametraka fetra ary fidio ny "Cold Storage".
Mametraka backup voalahatra amin'ny mpizara
Ity torolΓ lana ity dia mandray ny fahaiza-mitantana fototra.
1. Apetaho amin'ny VDS ny utility duplicity
yum install duplicity
2. Mamorona lahatahiry ho an'ny mysql dumps, raha ny ahy dia /backup_db ao amin'ny root VDS
3. Mamorona lahatahiry ho an'ny script bash /backup_scripts ary ataovy ny script voalohany izay hamerina /backup_scripts/backup.sh
votoatin'ny 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. Ampidiro voalohany ny script ary jereo ny valiny, tokony hiseho ao amin'ny Bucket ny rakitra.
`which bash` /backup_scripts/backup.sh
5. Manampia script amin'ny cron ho an'ny mpampiasa root hovonoina in-2 isan'andro, na isaky ny ilainao.
10 4,16 * * * `which bash` /backup_scripts/backup.sh
Famerenana angona avy amin'ny Yandex.Cloud
1. Manaova lahatahiry famerenana / backup_restore
2. Manaova bash restore script /backup_scripts/restore.sh
Omeko ny ohatra nangatahana indrindra amin'ny famerenana rakitra manokana:
#!`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. Alefaso ny script ary miandry ny valiny.
`which bash` /backup_scripts/backup.sh
Ao amin'ny lahatahiry /backup_restore/ dia ho hitanao ny rakitra index.php izay nampidirina taloha tao amin'ny backup.
Afaka manao fanitsiana tsara kokoa ianao mba hifanaraka amin'ny filanao.
minus duplicity
Ny duplicity dia manana lesoka iray - tsy misy fomba hametrahana fetran'ny fampiasana fantsona. Amin'ny fantsona mahazatra dia tsy miteraka olana izany, fa miaraka amin'ny fantsona arovana DDoS miaraka amin'ny faktiora haingana isan'andro dia tiako ny hametraka fetra 1-2 megabits.
Ho fehin-kevitra
Ny backup amin'ny Yandex.Cloud na Amazon S3 dia manome dika tsy miankina amin'ny tranokala sy ny firafitry ny OS izay azo idirana amin'ny mpizara hafa na solosaina eo an-toerana. Mandritra izany fotoana izany dia tsy hita ao amin'ny tontonana fanaraha-maso fampiantranoana na ao amin'ny tontolon'ny admin Bitrix izany kopia izany, izay manome fiarovana fanampiny.
Amin'ny vokatra mampalahelo indrindra dia afaka manangana mpizara vaovao ianao ary mametraka ny tranokala amin'ny daty rehetra. Na dia ny fampiasa indrindra angatahana aza dia ny fahafahana miditra amin'ny rakitra amin'ny daty voafaritra.
Azonao atao ny mampiasa an'io teknika io miaraka amin'ireo mpizara VDS na voatokana sy tranokala amin'ny motera rehetra, fa tsy ny 1C-Bitrix ihany. Ny OS dia mety ho hafa noho ny CentOS, toy ny Ubuntu na Debian.
Source: www.habr.com