Yandex.Cloud में 1C-Bitrix पर एक साइट के साथ वृद्धिशील VDS बैकअप

मेरे लिए साइट का 2C-Bitrix: साइट प्रबंधन पर दिन में 1 बार बैकअप लेना (फ़ाइलें और MySQL डेटाबेस) और 90 दिनों के लिए परिवर्तनों का इतिहास संग्रहीत करना आवश्यक था।

साइट CentOS 7 पर चलने वाले VDS पर "1C-Bitrix: वेब एनवायरनमेंट" स्थापित के साथ स्थित है। इसके अतिरिक्त, OS सेटिंग्स की एक बैकअप प्रतिलिपि बनाएँ।

आवश्यकताएँ:

  • आवृत्ति - दिन में 2 बार;
  • पिछले 90 दिनों की प्रतियां रखें;
  • यदि आवश्यक हो, तो किसी विशिष्ट तिथि के लिए अलग-अलग फ़ाइलें प्राप्त करने की क्षमता;
  • बैकअप को वीडीएस के अलावा किसी अन्य डेटा सेंटर में संग्रहीत किया जाना चाहिए;
  • कहीं से भी बैकअप तक पहुंचने की क्षमता (अन्य सर्वर, स्थानीय कंप्यूटर, आदि)।

एक महत्वपूर्ण बिंदु अतिरिक्त स्थान और सिस्टम संसाधनों की न्यूनतम खपत के साथ त्वरित रूप से बैकअप बनाने की क्षमता थी।

यह पूरे सिस्टम की त्वरित पुनर्स्थापना के लिए एक स्नैपशॉट के बारे में नहीं है, बल्कि फ़ाइलों और डेटाबेस और परिवर्तनों के इतिहास के बारे में है।

आरंभिक डेटा:

  • एक्सईएन वर्चुअलाइजेशन पर वीडीएस;
  • ओएस सेंटोस 7;
  • 1सी-बिट्रिक्स: वेब वातावरण;
  • साइट "1सी-बिट्रिक्स: साइट प्रबंधन", मानक संस्करण पर आधारित;
  • फ़ाइल का आकार 50 जीबी है और बढ़ेगा;
  • डेटाबेस का आकार 3 जीबी है और यह बढ़ेगा।

1सी-बिट्रिक्स में निर्मित मानक बैकअप - तुरंत बाहर रखा गया। यह केवल छोटी साइटों के लिए उपयुक्त है, क्योंकि:

  • प्रत्येक बार क्रमशः साइट की पूरी प्रतिलिपि बनाता है, प्रत्येक प्रति उतनी ही जगह लेगी जितनी मैं फ़ाइलें लेता हूँ, मेरे मामले में यह 50 जीबी है।
  • बैकअप PHP का उपयोग करके किया जाता है, जो इतनी बड़ी मात्रा में फ़ाइलों के साथ असंभव है, यह सर्वर पर अधिभार डालेगा और कभी समाप्त नहीं होगा।
  • और निःसंदेह, पूर्ण प्रतिलिपि संग्रहीत करते समय किसी 90 दिन की बात नहीं की जा सकती।

होस्टर जो समाधान पेश करता है वह एक बैकअप डिस्क है जो वीडीएस के समान डेटा सेंटर में स्थित है, लेकिन एक अलग सर्वर पर। आप FTP के माध्यम से डिस्क के साथ काम कर सकते हैं और अपनी स्क्रिप्ट का उपयोग कर सकते हैं, या यदि ISPManager VDS पर स्थापित है, तो इसके बैकअप मॉड्यूल के माध्यम से। एक ही डेटा सेंटर के उपयोग के कारण यह विकल्प उपयुक्त नहीं है।

उपरोक्त सभी में से, मेरे लिए सबसे अच्छा विकल्प Yandex.Cloud (ऑब्जेक्ट स्टोरेज) या Amazon S3 (अमेज़ॅन सिंपल स्टोरेज सर्विस) में मेरे अपने परिदृश्य के अनुसार एक वृद्धिशील बैकअप है।

ये आवश्यक:

  • वीडीएस तक रूट पहुंच;
  • स्थापित डुप्लिकेट उपयोगिता;
  • Yandex.Cloud में खाता।

वृध्दिशील बैकअप - एक विधि जिसमें केवल वह डेटा संग्रहीत किया जाता है जो पिछले बैकअप के बाद से बदल गया है।

कपट - एक बैकअप उपयोगिता जो rsync एल्गोरिदम का उपयोग करती है और Amazon S3 के साथ काम कर सकती है।

Yandex.Cloud बनाम Amazon S3

मेरे लिए इस मामले में Yandex.Cloud और Amazon S3 में कोई अंतर नहीं है। Yandex Amazon S3 API के मुख्य भाग का समर्थन करता है, इसलिए आप S3 के साथ काम करने के लिए उपलब्ध समाधानों का उपयोग करके इसके साथ काम कर सकते हैं। मेरे मामले में, यह द्वैध उपयोगिता है।

यांडेक्स का मुख्य लाभ रूबल में भुगतान हो सकता है, यदि बहुत अधिक डेटा है, तो पाठ्यक्रम का कोई लिंक नहीं होगा। गति के मामले में, अमेज़ॅन के यूरोपीय डेटा सेंटर यांडेक्स में रूसी डेटा केंद्रों के अनुरूप काम करते हैं, उदाहरण के लिए, आप फ्रैंकफर्ट का उपयोग कर सकते हैं। मैंने पहले इसी तरह के कार्यों के लिए Amazon S3 का उपयोग किया था, अब मैंने Yandex को आज़माने का निर्णय लिया है।

Yandex.Cloud की स्थापना

1. आपको Yandex.Cloud में एक बिलिंग खाता बनाना होगा। ऐसा करने के लिए, आपको अपने Yandex खाते के माध्यम से Yandex.Cloud में लॉग इन करना होगा या एक नया खाता बनाना होगा।

2. बादल बनाएँ.
Yandex.Cloud में 1C-Bitrix पर एक साइट के साथ वृद्धिशील VDS बैकअप

3. "क्लाउड" में एक "कैटलॉग" बनाएं।
Yandex.Cloud में 1C-Bitrix पर एक साइट के साथ वृद्धिशील VDS बैकअप

4. "कैटलॉग" के लिए एक "सेवा खाता" बनाएं।
Yandex.Cloud में 1C-Bitrix पर एक साइट के साथ वृद्धिशील VDS बैकअप

5. "सेवा खाते" के लिए कुंजियाँ बनाएँ।
Yandex.Cloud में 1C-Bitrix पर एक साइट के साथ वृद्धिशील VDS बैकअप

6. चाबियाँ सहेजें, भविष्य में आपको उनकी आवश्यकता होगी।
Yandex.Cloud में 1C-Bitrix पर एक साइट के साथ वृद्धिशील VDS बैकअप

7. "कैटलॉग" के लिए एक "बकेट" बनाएं, फ़ाइलें इसमें गिर जाएंगी।
Yandex.Cloud में 1C-Bitrix पर एक साइट के साथ वृद्धिशील VDS बैकअप

8. मैं एक सीमा निर्धारित करने और "कोल्ड स्टोरेज" का चयन करने की अनुशंसा करता हूं।
Yandex.Cloud में 1C-Bitrix पर एक साइट के साथ वृद्धिशील VDS बैकअप

सर्वर पर निर्धारित बैकअप सेट करना

यह मार्गदर्शिका बुनियादी प्रशासनिक कौशल को मानती है।

1. वीडीएस पर डुप्लिकेटिटी उपयोगिता स्थापित करें

yum install duplicity

2. MySQL डंप के लिए एक फ़ोल्डर बनाएं, मेरे मामले में यह VDS रूट में /backup_db है

3. बैश स्क्रिप्ट्स /बैकअप_स्क्रिप्ट्स के लिए एक फ़ोल्डर बनाएं और पहली स्क्रिप्ट बनाएं जो बैकअप लेगी /बैकअप_स्क्रिप्ट्स/बैकअप.श

स्क्रिप्ट सामग्री:

#!`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. पहली बार स्क्रिप्ट चलाएँ और परिणाम जाँचें, फ़ाइलें बकेट में दिखाई देनी चाहिए।

`which bash` /backup_scripts/backup.sh

Yandex.Cloud में 1C-Bitrix पर एक साइट के साथ वृद्धिशील VDS बैकअप

5. रूट उपयोगकर्ता के लिए दिन में 2 बार या जितनी बार आपको आवश्यकता हो उतनी बार निष्पादित करने के लिए क्रॉन में एक स्क्रिप्ट जोड़ें।

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

Yandex.Cloud से डेटा पुनर्प्राप्ति

1. एक पुनर्स्थापना फ़ोल्डर /backup_restore बनाएं

2. बैश रिस्टोर स्क्रिप्ट /backup_scripts/restore.sh बनाएं

मैं किसी विशिष्ट फ़ाइल को पुनर्प्राप्त करने का सबसे अनुरोधित उदाहरण देता हूं:

#!`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. स्क्रिप्ट चलाएँ और परिणाम की प्रतीक्षा करें।

`which bash` /backup_scripts/backup.sh

/backup_restore/ फ़ोल्डर में आपको वह Index.php फ़ाइल मिलेगी जो पहले बैकअप में शामिल थी।

आप अपनी आवश्यकताओं के अनुरूप बेहतर समायोजन कर सकते हैं।

शून्य से दोहरापन

दोहरेपन की एक खामी है - चैनल उपयोग की सीमा निर्धारित करने का कोई तरीका नहीं है। एक सामान्य चैनल के साथ, यह कोई समस्या पैदा नहीं करता है, लेकिन प्रति दिन बिलिंग गति वाले DDoS-संरक्षित चैनल के साथ, मैं 1-2 मेगाबिट की सीमा निर्धारित करने में सक्षम होना चाहूंगा।

एक निष्कर्ष के रूप में

Yandex.Cloud या Amazon S3 में बैकअप लेने से साइट और OS सेटिंग्स की एक स्वतंत्र प्रतिलिपि मिलती है जिसे किसी अन्य सर्वर या स्थानीय कंप्यूटर से एक्सेस किया जा सकता है। वहीं, यह कॉपी न तो होस्टिंग कंट्रोल पैनल में दिखाई देती है और न ही बिट्रिक्स एडमिन पैनल में, जो अतिरिक्त सुरक्षा प्रदान करता है।

सबसे दुर्भाग्यपूर्ण परिणाम में, आप एक नया सर्वर बना सकते हैं और किसी भी तारीख के लिए साइट को तैनात कर सकते हैं। हालाँकि सबसे अधिक अनुरोधित कार्यक्षमता एक विशिष्ट तिथि के लिए फ़ाइल तक पहुँचने की क्षमता होगी।

आप इस तकनीक का उपयोग केवल 1सी-बिट्रिक्स ही नहीं, बल्कि किसी भी वीडीएस या समर्पित सर्वर और किसी भी इंजन पर साइटों के साथ कर सकते हैं। OS CentOS के अलावा अन्य भी हो सकता है, जैसे Ubuntu या Debian।

स्रोत: www.habr.com

एक टिप्पणी जोड़ें