Pencadangan VDS tambahan dengan situs di 1C-Bitrix di Yandex.Cloud

Saya harus mencadangkan situs ke 1C-Bitrix: Manajemen Situs 2 kali sehari (file dan database mysql) dan menyimpan riwayat perubahan selama 90 hari.



Situs ini terletak di VDS yang menjalankan CentOS 7 dengan 1C-Bitrix: Lingkungan Web diinstal. Selain itu, buat salinan cadangan dari pengaturan OS.



Persyaratan:



  • Frekuensi - 2 kali sehari;
  • Simpan salinan selama 90 hari terakhir;
  • Kemampuan untuk mendapatkan file individu untuk tanggal tertentu, jika perlu;
  • Cadangan harus disimpan di pusat data yang berbeda dari VDS;
  • Kemampuan untuk mengakses cadangan dari mana saja (server lain, komputer lokal, dll.).


Poin penting adalah kemampuan untuk membuat cadangan dengan cepat dengan konsumsi minimal ruang tambahan dan sumber daya sistem.



Kita tidak berbicara tentang snapshot untuk memulihkan seluruh sistem dengan cepat, tetapi tentang file dan database serta sejarah perubahan.



Data awal:



  • VDS pada virtualisasi XEN;
  • CentOS 7 OS;
  • 1C-Bitrix: Lingkungan web;
  • Situs berdasarkan "1C-Bitrix: Manajemen Situs", versi Standar;
  • Ukuran file adalah 50 GB dan akan bertambah;
  • Ukuran database adalah 3 GB dan akan terus bertambah.




Cadangan standar dibangun ke dalam 1C-Bitrix - segera dikecualikan. Ini hanya cocok untuk situs kecil, karena:



  • , , , 50 .
  • PHP, โ€” , .
  • 90 .


Solusi yang ditawarkan oleh penghosting adalah disk cadangan yang terletak di pusat data yang sama dengan VDS, tetapi di server yang berbeda. Anda dapat bekerja dengan disk melalui FTP dan menggunakan skrip Anda sendiri, atau jika ISPManager diinstal pada VDS, maka melalui modul cadangannya. Opsi ini tidak cocok karena penggunaan pusat data yang sama.



Dari semua hal di atas, pilihan terbaik bagi saya adalah cadangan tambahan menurut skenario saya sendiri di Yandex.Cloud (Object Storage) atau Amazon S3 (Amazon Simple Storage Service).



Ini membutuhkan:



  • akses root ke VDS;
  • duplikasi utilitas terpasang;
  • akun di Yandex.Cloud.


Incremental backup adalah metode yang hanya mengubah data sejak backup terakhir diarsipkan.



duplikat adalah utilitas cadangan yang menggunakan algoritme rsync dan dapat bekerja dengan Amazon S3.




Yandex.Cloud vs Amazon S3



Tidak ada perbedaan antara Yandex.Cloud dan Amazon S3 dalam hal ini. Yandex mendukung bagian utama dari API Amazon S3, sehingga Anda dapat mengerjakannya menggunakan solusi yang tersedia untuk bekerja dengan S3. Dalam kasus saya, ini adalah utilitas duplikat.



Keuntungan utama Yandex adalah pembayaran dalam rubel, jika ada banyak data, maka tidak akan ada tautan ke nilai tukar. Dalam hal kecepatan, pusat data Eropa Amazon bekerja sepadan dengan yang ada di Yandex Rusia, misalnya, Anda dapat menggunakan Frankfurt. Saya sebelumnya menggunakan Amazon S3 untuk tugas serupa, sekarang saya memutuskan untuk mencoba Yandex.



Mengonfigurasi Yandex.Cloud



1. Anda perlu membuat akun penagihan di Yandex.Cloud. Untuk melakukan ini, Anda harus masuk ke Yandex.Cloud melalui akun Yandex Anda atau membuat yang baru.



2. Buat "Cloud".





3. Dalam "Cloud" buatlah "Katalog".





4. Untuk "Katalog" buatlah "Akun layanan".





5. Buat kunci untuk "Akun Layanan".





6. Simpan kuncinya, mereka akan dibutuhkan di masa depan.





7. Buat "Bucket" untuk "Katalog", itu akan berisi file.





8. Saya merekomendasikan pengaturan batas dan memilih "Cold storage".





Mengonfigurasi pencadangan terjadwal di server



Panduan ini mengasumsikan keterampilan administrasi dasar.



1. Instal utilitas duplikat di VDS



yum install duplicity




2. Buat folder untuk mysql dumps, dalam kasus saya adalah / backup_db di root VDS



3. Buat folder untuk skrip bash / backup_scripts dan buat skrip pertama yang akan membuat cadangan /backup_scripts/backup.sh



Isi skrip:



#!`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. Jalankan script untuk pertama kali dan periksa hasilnya, file akan muncul di "Bucket".



`which bash` /backup_scripts/backup.sh








5. Tambahkan skrip ke cron agar pengguna root dijalankan 2 kali sehari, atau dengan frekuensi yang Anda butuhkan.



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




Pemulihan data dari Yandex.Cloud



1. Buatlah folder untuk recovery / backup_restore



2. Buat script bash untuk recovery /backup_scripts/restore.sh



Saya memberikan contoh paling populer untuk memulihkan file tertentu:



#!`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. Jalankan script dan tunggu hasilnya.



`which bash` /backup_scripts/backup.sh




Di folder / backup_restore /, Anda akan menemukan file index.php yang sebelumnya sudah di-backup.



Anda dapat membuat pengaturan yang lebih detail untuk menyesuaikan dengan kebutuhan Anda.



Kerugian duplikat



Duplikat memiliki satu kelemahan - tidak ada cara untuk mengatur batas penggunaan saluran. Dengan saluran biasa, ini tidak menimbulkan masalah, tetapi saat menggunakan saluran yang dilindungi DDoS dengan peringkat laju per hari, saya ingin dapat menetapkan batas 1-2 megabit.



Sebagai sebuah kesimpulan



Reservasi di Yandex.Cloud atau Amazon S3 menyediakan salinan independen dari situs dan pengaturan OS, yang dapat diakses dari server lain atau komputer lokal. Pada saat yang sama, salinan ini tidak terlihat baik di panel kontrol hosting atau di panel admin Bitrix, yang memberikan keamanan tambahan.



Dengan hasil yang paling menyedihkan, Anda dapat membangun server baru dan menerapkan situs tersebut untuk tanggal berapa pun. Meskipun fungsionalitas yang paling banyak diminta adalah kemampuan untuk merujuk ke file untuk tanggal tertentu.



Anda dapat menggunakan teknik ini dengan VDS atau server dan situs Khusus apa pun di mesin apa pun, tidak hanya 1C-Bitrix. OS juga bisa selain CentOS, seperti Ubuntu atau Debian.



All Articles