Yandex.Cloud मधील 1C-Bitrix वरील साइटसह वाढीव VDS बॅकअप

मला दिवसातून दोनदा “2C-Bitrix: साइट मॅनेजमेंट” (फाईल्स आणि mysql डेटाबेस) वर साइटचा बॅकअप घेणे आणि बदलांचा इतिहास 1 दिवसांसाठी संग्रहित करणे आवश्यक आहे.

साइट 7C-Bitrix: वेब पर्यावरण स्थापित सह CentOS 1 OS चालवणाऱ्या VDS वर स्थित आहे. याव्यतिरिक्त, तुमच्या OS सेटिंग्जची बॅकअप प्रत बनवा.

आवश्यकता:

  • वारंवारता - दिवसातून 2 वेळा;
  • गेल्या ९० दिवसांच्या प्रती ठेवा;
  • आवश्यक असल्यास, विशिष्ट तारखेसाठी वैयक्तिक फाइल्स प्राप्त करण्याची क्षमता;
  • बॅकअप VDS व्यतिरिक्त डेटा सेंटरमध्ये संग्रहित करणे आवश्यक आहे;
  • कुठूनही बॅकअपमध्ये प्रवेश करण्याची क्षमता (दुसरा सर्व्हर, स्थानिक संगणक इ.).

अतिरिक्त जागा आणि सिस्टम संसाधनांच्या कमीतकमी वापरासह द्रुतपणे बॅकअप तयार करण्याची क्षमता हा एक महत्त्वाचा मुद्दा होता.

हे संपूर्ण सिस्टम त्वरीत पुनर्संचयित करण्याच्या स्नॅपशॉटबद्दल नाही, परंतु फायली आणि डेटाबेस आणि बदलांच्या इतिहासाबद्दल आहे.

प्रारंभिक डेटा:

  • XEN आभासीकरण वर VDS;
  • OS CentOS 7;
  • 1C-Bitrix: वेब वातावरण;
  • "1C-Bitrix: साइट व्यवस्थापन", मानक आवृत्तीवर आधारित वेबसाइट;
  • फाइल आकार 50 GB आहे आणि वाढेल;
  • डेटाबेस आकार 3 GB आहे आणि वाढेल.

मी ताबडतोब 1C-Bitrix मध्ये तयार केलेला मानक बॅकअप वगळला. हे फक्त लहान साइटसाठी योग्य आहे, कारण:

  • हे प्रत्येक वेळी साइटची संपूर्ण प्रत बनवते, म्हणून प्रत्येक कॉपी फायलींप्रमाणेच जागा घेईल, माझ्या बाबतीत ती 50 GB आहे.
  • बॅकअप PHP वापरून केले जाते, जे अशा फायलींच्या व्हॉल्यूमसह अशक्य आहे, ते सर्व्हरला ओव्हरलोड करेल आणि कधीही पूर्ण होणार नाही.
  • आणि अर्थातच, पूर्ण प्रत संग्रहित करताना कोणत्याही 90 दिवसांची चर्चा होऊ शकत नाही.

होस्टर ऑफर करतो तो उपाय म्हणजे VDS सारख्याच डेटा सेंटरमध्ये स्थित एक बॅकअप डिस्क आहे, परंतु वेगळ्या सर्व्हरवर. तुम्ही FTP द्वारे डिस्कसह कार्य करू शकता आणि तुमच्या स्वतःच्या स्क्रिप्ट्स वापरू शकता, किंवा ISPManager VDS वर स्थापित केले असल्यास, त्याच्या बॅकअप मॉड्यूलद्वारे. समान डेटा सेंटरच्या वापरामुळे हा पर्याय योग्य नाही.

वरील सर्वांमधून, माझ्यासाठी सर्वोत्तम पर्याय म्हणजे Yandex.Cloud (ऑब्जेक्ट स्टोरेज) किंवा Amazon S3 (Amazon Simple Storage Service) मधील माझी स्वतःची स्क्रिप्ट वापरून वाढीव बॅकअप आहे.

यासाठी आवश्यक आहे:

  • व्हीडीएसमध्ये रूट प्रवेश;
  • स्थापित डुप्लिसीटी युटिलिटी;
  • Yandex.Cloud मध्ये खाते.

वाढीव बॅकअप — एक पद्धत ज्यामध्ये फक्त शेवटच्या बॅकअपपासून बदललेला डेटा संग्रहित केला जातो.

नक्कल — एक बॅकअप उपयुक्तता जी rsync अल्गोरिदम वापरते आणि Amazon S3 सह कार्य करू शकते.

Yandex.Cloud वि Amazon S3

या प्रकरणात, माझ्यासाठी Yandex.Cloud आणि Amazon S3 मधील फरक नाही. Yandex मोठ्या प्रमाणात Amazon S3 API चे समर्थन करते, त्यामुळे S3 सह कार्य करण्यासाठी अस्तित्वात असलेले उपाय वापरून तुम्ही त्यासह कार्य करू शकता. माझ्या बाबतीत, ही डुप्लिसीटी युटिलिटी आहे.

यांडेक्सचा मुख्य फायदा रूबलमध्ये पेमेंट असू शकतो; जर भरपूर डेटा असेल तर, विनिमय दराशी कोणतेही कनेक्शन नसेल. वेगाच्या बाबतीत, Amazon चे युरोपियन डेटा सेंटर Yandex मधील रशियन डेटा सेंटरशी तुलना करता येण्यासारखे कार्य करतात; उदाहरणार्थ, आपण फ्रँकफर्ट वापरू शकता. मी यापूर्वी अशाच कामांसाठी 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. VDS वर डुप्लिसिटी युटिलिटी स्थापित करा

yum install duplicity

2. mysql डंपसाठी एक फोल्डर तयार करा, माझ्या बाबतीत ते VDS रूटमध्ये /backup_db आहे

3. बॅश स्क्रिप्ट्स /backup_scripts साठी एक फोल्डर तयार करा आणि बॅकअप /backup_scripts/backup.sh करणारी पहिली स्क्रिप्ट बनवा.

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

#!`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 सेटिंग्जची स्वतंत्र प्रत प्रदान करते ज्यात इतर कोणत्याही सर्व्हर किंवा स्थानिक संगणकावरून प्रवेश केला जाऊ शकतो. शिवाय, ही प्रत एकतर होस्टिंग कंट्रोल पॅनलमध्ये किंवा बिट्रिक्स ऍडमिन पॅनेलमध्ये दिसत नाही, जी अतिरिक्त सुरक्षा प्रदान करते.

सर्वात वाईट परिस्थितीत, तुम्ही नवीन सर्व्हर एकत्र करू शकता आणि कोणत्याही तारखेला साइट तैनात करू शकता. जरी सर्वात लोकप्रिय कार्यक्षमता विशिष्ट तारखेसाठी फाईलमध्ये प्रवेश करण्याची क्षमता असेल.

तुम्ही हे तंत्र कोणत्याही व्हीडीएस किंवा समर्पित सर्व्हर आणि कोणत्याही इंजिनवर साइटसह वापरू शकता, फक्त 1C-बिट्रिक्स नाही. ओएस उबंटू किंवा डेबियन सारख्या CentOS व्यतिरिक्त देखील असू शकते.

स्त्रोत: www.habr.com

एक टिप्पणी जोडा