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

Saya perlu mencadangkan situs ke 2C-Bitrix: Manajemen Situs 1 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: Web Environment" terpasang. Selain itu, buat salinan cadangan dari pengaturan OS.

Persyaratan:

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

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

Ini bukan tentang snapshot untuk pemulihan cepat seluruh sistem, tetapi tentang file dan database serta riwayat perubahan.

Sumber data:

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

Cadangan standar yang terpasang di 1C-Bitrix - segera dikecualikan. Ini hanya cocok untuk situs kecil, karena:

  • Membuat salinan lengkap situs setiap kali, masing-masing, setiap salinan akan memakan ruang sebanyak saya mengambil file, dalam kasus saya adalah 50 GB.
  • Pencadangan dilakukan menggunakan PHP, yang tidak mungkin dengan volume file seperti itu, akan membebani server dan tidak akan pernah berakhir.
  • Dan tentu saja, tidak ada pembicaraan selama 90 hari saat menyimpan salinan lengkap.

Solusi yang ditawarkan 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 di VDS, lalu melalui modul pencadangannya. Opsi ini tidak cocok karena penggunaan pusat data yang sama.

Dari semua hal di atas, pilihan terbaik bagi saya adalah cadangan tambahan sesuai dengan skenario saya sendiri di Yandex.Cloud (Penyimpanan Objek) atau Amazon S3 (Layanan Penyimpanan Sederhana Amazon).

Ini membutuhkan:

  • akses root ke VDS;
  • utilitas bermuka dua yang diinstal;
  • akun di Yandex.Cloud.

cadangan inkremental β€” metode yang hanya mengarsipkan data yang telah berubah sejak pencadangan terakhir.

tipu daya - 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 bagi saya. Yandex mendukung bagian utama API Amazon S3, sehingga Anda dapat bekerja dengannya menggunakan solusi yang tersedia untuk bekerja dengan S3. Dalam kasus saya, ini adalah utilitas bermuka dua.

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

Menyiapkan 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 Awan.
Pencadangan VDS tambahan dengan situs di 1C-Bitrix di Yandex.Cloud

3. Di "Cloud" buat "Katalog".
Pencadangan VDS tambahan dengan situs di 1C-Bitrix di Yandex.Cloud

4. Untuk "Katalog", buat "Akun layanan".
Pencadangan VDS tambahan dengan situs di 1C-Bitrix di Yandex.Cloud

5. Untuk "Akun layanan", buat kunci.
Pencadangan VDS tambahan dengan situs di 1C-Bitrix di Yandex.Cloud

6. Simpan kuncinya, Anda akan membutuhkannya di masa mendatang.
Pencadangan VDS tambahan dengan situs di 1C-Bitrix di Yandex.Cloud

7. Untuk "Katalog" buat "Bucket", file akan masuk ke dalamnya.
Pencadangan VDS tambahan dengan situs di 1C-Bitrix di Yandex.Cloud

8. Saya sarankan untuk mengatur batas dan memilih "Cold Storage".
Pencadangan VDS tambahan dengan situs di 1C-Bitrix di Yandex.Cloud

Menyiapkan pencadangan terjadwal di server

Panduan ini mengasumsikan keterampilan administrasi dasar.

1. Instal utilitas duplikasi pada VDS

yum install duplicity

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

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

Konten 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 skrip untuk pertama kali dan periksa hasilnya, file akan muncul di Bucket.

`which bash` /backup_scripts/backup.sh

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

5. Tambahkan skrip ke cron agar pengguna root dieksekusi 2 kali sehari, atau sesering yang Anda butuhkan.

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

Pemulihan data dari Yandex.Cloud

1. Buat folder pemulihan /backup_restore

2. Buat skrip pemulihan bash /backup_scripts/restore.sh

Saya memberikan contoh yang paling banyak diminta 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 skrip dan tunggu hasilnya.

`which bash` /backup_scripts/backup.sh

Di folder /backup_restore/ Anda akan menemukan file index.php yang sebelumnya disertakan dalam cadangan.

Anda dapat membuat penyesuaian yang lebih baik untuk memenuhi kebutuhan Anda.

minus duplikat

Duplikasi memiliki satu kelemahan - tidak ada cara untuk menetapkan batas penggunaan saluran. Dengan saluran normal, ini tidak menimbulkan masalah, tetapi dengan saluran yang dilindungi DDoS dengan tagihan kecepatan per hari, saya ingin dapat menetapkan batas 1-2 megabit.

Sebagai sebuah kesimpulan

Mencadangkan 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 maupun di panel admin Bitrix, yang memberikan keamanan tambahan.

Dalam hasil yang paling disayangkan, Anda dapat membangun server baru dan menggunakan situs untuk tanggal berapa pun. Meskipun fungsionalitas yang paling banyak diminta adalah kemampuan untuk mengakses file pada tanggal tertentu.

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

Sumber: www.habr.com

Tambah komentar