Iku perlu kanggo kula kanggo serep situs kanggo 2C-Bitrix: Manajemen Situs 1 kaping dina (file lan database mysql) lan nyimpen sajarah owah-owahan kanggo 90 dina.
Situs kasebut dumunung ing VDS sing nganggo CentOS 7 OS kanthi 1C-Bitrix: Lingkungan Web diinstal. Kajaba iku, gawe salinan serep setelan OS.
Syarat:
- Frekuensi - 2 kaping dina;
- Simpen salinan suwene 90 dina;
- Kemampuan kanggo njaluk file individu kanggo tanggal tartamtu, yen perlu;
- Serep kudu disimpen ing pusat data liyane saka VDS;
- Kemampuan kanggo ngakses serep saka ngendi wae (server liyane, komputer lokal, etc.).
Titik penting yaiku kemampuan nggawe serep kanthi cepet kanthi konsumsi minimal ruang tambahan lan sumber daya sistem.
Iki ora babagan snapshot kanggo mulihake cepet kabeh sistem, nanging babagan file lan database lan riwayat owah-owahan.
Data sumber:
- VDS ing virtualisasi XEN;
- OS CentOS 7;
- 1C-Bitrix: Lingkungan web;
- Situs adhedhasar "1C-Bitrix: Manajemen Situs", versi standar;
- Ukuran file 50 GB lan bakal tuwuh;
- Ukuran database 3 GB lan bakal tuwuh.
Aku langsung ngilangi serep standar sing dibangun ing 1C-Bitrix. Iku mung cocok kanggo situs cilik, amarga:
- Ndadekake salinan lengkap situs saben wektu, mungguh, saben salinan bakal njupuk munggah minangka akeh papan minangka aku njupuk munggah file, ing cilik iku 50 GB.
- Gawe serep wis rampung nggunakake PHP, kang mokal karo volume kuwi file, iku bakal kakehan server lan ora bakal mungkasi.
- Lan mesthi, ora ana omongan babagan 90 dina nalika nyimpen salinan lengkap.
Solusi sing ditawakake hoster yaiku disk serep sing ana ing pusat data sing padha karo VDS, nanging ing server sing beda. Sampeyan bisa nggarap disk liwat FTP lan nggunakake skrip dhewe, utawa yen ISPManager diinstal ing VDS, banjur liwat modul serep sawijining. Opsi iki ora cocog amarga nggunakake pusat data sing padha.
Saka kabeh sing kasebut ing ndhuwur, pilihan sing paling apik kanggo aku yaiku serep tambahan miturut skenarioku dhewe ing Yandex.Cloud (Obyek Storage) utawa Amazon S3 (Amazon Simple Storage Service).
Iki mbutuhake:
- akses ROOT menyang VDS;
- utilitas duplikat sing diinstal;
- akun ing Yandex.Cloud.
serep tambahan - cara kang mung data sing wis diganti wiwit serep pungkasan diarsipakΓ©.
duplikat - sarana serep sing nggunakake algoritma rsync lan bisa digunakake karo Amazon S3.
Yandex.Cloud vs Amazon S3
Ora ana bedane antarane Yandex.Cloud lan Amazon S3 ing kasus iki kanggo aku. Yandex ndhukung bagean utama Amazon S3 API, supaya sampeyan bisa nggarap kanthi nggunakake solusi sing kasedhiya kanggo nggarap S3. Ing kasusku, iki minangka sarana duplikat.
Kauntungan utama Yandex bisa dadi pembayaran ing rubel, yen ana akeh data, mula ora bakal ana link menyang kursus kasebut. Ing babagan kacepetan, pusat data Eropa Amazon bisa digunakake kanthi cocog karo Rusia ing Yandex, umpamane, sampeyan bisa nggunakake Frankfurt. Aku sadurunge nggunakake Amazon S3 kanggo tugas sing padha, saiki aku mutusake kanggo nyoba Yandex.
Nggawe Yandex.Cloud
1. Sampeyan kudu nggawe akun tagihan ing Yandex.Cloud. Kanggo nindakake iki, sampeyan kudu mlebu menyang Yandex.Cloud liwat akun Yandex utawa nggawe sing anyar.
2. Nggawe Cloud.
3. Ing "Cloud" nggawe "Katalog".
4. Kanggo "Katalog" nggawe "Akun layanan".
5. Kanggo "Akun layanan" nggawe tombol.
6. Tansah tombol, sampeyan bakal mbutuhake ing mangsa ngarep.
7. Kanggo "Katalog" nggawe "Ember", file bakal tiba ing.
8. Aku nyaranake nyetel watesan lan milih "Cold Storage".
Nyetel serep dijadwal ing server
Pandhuan iki nganggep katrampilan administratif dhasar.
1. Instal sarana duplikat ing VDS
yum install duplicity
2. Nggawe folder kanggo mysql dumps, ing kasusku yaiku /backup_db ing root VDS
3. Gawe folder kanggo skrip bash /backup_scripts lan gawe skrip pisanan sing bakal nggawe serep /backup_scripts/backup.sh
Isi naskah:
#!`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. Jalanake script kanggo pisanan lan mriksa asil, file kudu katon ing Bucket.
`which bash` /backup_scripts/backup.sh
5. Tambah script kanggo cron kanggo pangguna ROOT kanggo mbukak 2 kaping dina, utawa karo frekuensi sing perlu.
10 4,16 * * * `which bash` /backup_scripts/backup.sh
Recovery data saka Yandex.Cloud
1. Nggawe folder mulihake /backup_restore
2. Nggawe skrip mulihake bash /backup_scripts/restore.sh
Aku menehi conto sing paling dijaluk kanggo mbalekake file tartamtu:
#!`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. Jalanake skrip lan ngenteni asil.
`which bash` /backup_scripts/backup.sh
Ing folder /backup_restore/ sampeyan bakal nemokake file index.php sing sadurunge kalebu ing serep.
Sampeyan bisa nggawe pangaturan sing luwih apik sing cocog karo kabutuhan sampeyan.
minus duplikat
Duplikat nduweni siji kekurangan - ora ana cara kanggo nyetel watesan panggunaan saluran. Kanthi saluran normal, iki ora nggawe masalah, nanging saluran sing dilindhungi DDoS kanthi tagihan kacepetan saben dina, aku pengin bisa nyetel watesan 1-2 megabit.
Minangka kesimpulan
Nggawe serep ing Yandex.Cloud utawa Amazon S3 nyedhiyakake salinan independen saka situs lan setelan OS sing bisa diakses saka server utawa komputer lokal liyane. Ing wektu sing padha, salinan iki ora katon ing panel kontrol hosting utawa ing panel admin Bitrix, sing nyedhiyakake keamanan tambahan.
Ing asil paling apes, sampeyan bisa mbangun server anyar lan masang situs kanggo tanggal sembarang. Sanajan fungsi sing paling dijaluk yaiku kemampuan kanggo ngakses file kasebut kanggo tanggal tartamtu.
Sampeyan bisa nggunakake teknik iki karo VDS utawa server khusus lan situs ing mesin apa wae, ora mung 1C-Bitrix. OS bisa uga liyane saka CentOS, kayata Ubuntu utawa Debian.
Source: www.habr.com