Yandex.Cloud இல் 1C-Bitrix தளத்துடன் கூடிய VDS காப்புப்பிரதி

தளத்தை 2C-Bitrix க்கு காப்புப் பிரதி எடுப்பது எனக்கு அவசியமாக இருந்தது: தள மேலாண்மை ஒரு நாளைக்கு 1 முறை (கோப்புகள் மற்றும் mysql தரவுத்தளம்) மற்றும் 90 நாட்களுக்கு மாற்றங்களின் வரலாற்றை சேமிக்கவும்.

"7C-Bitrix: Web Environment" நிறுவப்பட்ட CentOS 1 இல் இயங்கும் VDS இல் தளம் அமைந்துள்ளது. கூடுதலாக, OS அமைப்புகளின் காப்பு பிரதியை உருவாக்கவும்.

தேவைகள்:

  • அதிர்வெண் - 2 முறை ஒரு நாள்;
  • கடந்த 90 நாட்களுக்கு நகல்களை வைத்திருங்கள்;
  • தேவைப்பட்டால், ஒரு குறிப்பிட்ட தேதிக்கு தனிப்பட்ட கோப்புகளைப் பெறுவதற்கான திறன்;
  • காப்புப்பிரதி VDS அல்லாத தரவு மையத்தில் சேமிக்கப்பட வேண்டும்;
  • எங்கிருந்தும் காப்புப்பிரதியை அணுகும் திறன் (மற்றொரு சேவையகம், உள்ளூர் கணினி போன்றவை).

கூடுதல் இடம் மற்றும் கணினி வளங்களின் குறைந்தபட்ச நுகர்வு மூலம் காப்புப்பிரதிகளை விரைவாக உருவாக்கும் திறன் ஒரு முக்கியமான விஷயம்.

இது முழு கணினியையும் விரைவாக மீட்டெடுப்பதற்கான ஸ்னாப்ஷாட்டைப் பற்றியது அல்ல, ஆனால் கோப்புகள் மற்றும் தரவுத்தளம் மற்றும் மாற்றங்களின் வரலாறு பற்றியது.

பின்னணி:

  • XEN மெய்நிகராக்கத்தில் VDS;
  • OS CentOS 7;
  • 1C-பிட்ரிக்ஸ்: இணைய சூழல்;
  • "1C-Bitrix: Site Management" அடிப்படையிலான தளம், நிலையான பதிப்பு;
  • கோப்பு அளவு 50 ஜிபி மற்றும் வளரும்;
  • தரவுத்தள அளவு 3 ஜிபி மற்றும் வளரும்.

1C-Bitrix இல் கட்டமைக்கப்பட்ட நிலையான காப்புப்பிரதி - உடனடியாக விலக்கப்பட்டது. இது சிறிய தளங்களுக்கு மட்டுமே பொருத்தமானது, ஏனெனில்:

  • ஒவ்வொரு முறையும் முறையே தளத்தின் முழுமையான நகலை உருவாக்குகிறது, ஒவ்வொரு நகலும் நான் கோப்புகளை எடுக்கும் அளவுக்கு இடத்தை எடுக்கும், என் விஷயத்தில் அது 50 ஜிபி ஆகும்.
  • PHP ஐப் பயன்படுத்தி காப்புப்பிரதி செய்யப்படுகிறது, இது போன்ற கோப்புகளின் அளவுகளில் சாத்தியமற்றது, இது சேவையகத்தை ஓவர்லோட் செய்யும் மற்றும் முடிவடையாது.
  • நிச்சயமாக, ஒரு முழு நகலை சேமிக்கும் போது எந்த 90 நாட்களையும் பற்றி பேச முடியாது.

ஹோஸ்டர் வழங்கும் தீர்வு, VDS போன்ற அதே தரவு மையத்தில் இருக்கும் காப்புப்பிரதி வட்டு, ஆனால் வேறு சர்வரில் உள்ளது. நீங்கள் FTP வழியாக வட்டுடன் வேலை செய்யலாம் மற்றும் உங்கள் சொந்த ஸ்கிரிப்ட்களைப் பயன்படுத்தலாம் அல்லது ISPManager VDS இல் நிறுவப்பட்டிருந்தால், அதன் காப்புப் பிரதி தொகுதி மூலம். ஒரே டேட்டா சென்டரைப் பயன்படுத்துவதால் இந்த விருப்பம் பொருத்தமானதாக இல்லை.

மேலே உள்ள எல்லாவற்றிலிருந்தும், Yandex.Cloud (ஆப்ஜெக்ட் ஸ்டோரேஜ்) அல்லது அமேசான் S3 (Amazon Simple Storage Service) இல் உள்ள எனது சொந்த சூழ்நிலையின் படி, ஒரு கூடுதல் காப்புப்பிரதியே எனக்கு சிறந்த தேர்வாகும்.

இதற்கு தேவை:

  • VDSக்கான ரூட் அணுகல்;
  • நிறுவப்பட்ட இரட்டை பயன்பாடு;
  • Yandex.Cloud இல் கணக்கு.

அதிகரிக்கும் காப்புப்பிரதி - கடைசி காப்புப்பிரதியிலிருந்து மாறிய தரவு மட்டுமே காப்பகப்படுத்தப்படும் ஒரு முறை.

இரட்டை - rsync அல்காரிதம்களைப் பயன்படுத்தும் காப்புப்பிரதி பயன்பாடு மற்றும் Amazon S3 உடன் வேலை செய்ய முடியும்.

Yandex.Cloud vs Amazon S3

எனக்கு இந்த விஷயத்தில் Yandex.Cloud மற்றும் Amazon S3 இடையே எந்த வித்தியாசமும் இல்லை. அமேசான் S3 API இன் முக்கிய பகுதியை Yandex ஆதரிக்கிறது, எனவே 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. VDS இல் டூப்ளிசிட்டி பயன்பாட்டை நிறுவவும்

yum install duplicity

2. mysql dumps க்கான கோப்புறையை உருவாக்கவும், என் விஷயத்தில் அது 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-Bitrix மட்டுமின்றி எந்த என்ஜின்களிலும் எந்த VDS அல்லது பிரத்யேக சர்வர்கள் மற்றும் தளங்களுடனும் இந்த நுட்பத்தை நீங்கள் பயன்படுத்தலாம். OS ஆனது Ubuntu அல்லது Debian போன்ற CentOS ஐத் தவிர வேறாகவும் இருக்கலாம்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்