በYandex.Cloud ውስጥ በ1C-Bitrix ላይ ካለው ጣቢያ ጋር ተጨማሪ የVDS ምትኬ

በቀን ሁለት ጊዜ በ "2C-Bitrix: Site Management" (ፋይሎች እና mysql ዳታቤዝ) ላይ የጣቢያውን ምትኬ መስራት እና ለ1 ቀናት ለውጦችን ታሪክ ማከማቸት ነበረብኝ።

ጣቢያው 7C-Bitrix: Web Environment በተጫነው CentOS 1 OS ላይ ባለው VDS ላይ ይገኛል። በተጨማሪም፣ የእርስዎን የስርዓተ ክወና ቅንብሮች መጠባበቂያ ቅጂ ይስሩ።

መስፈርቶች

  • ድግግሞሽ - በቀን 2 ጊዜ;
  • ቅጂዎችን ላለፉት 90 ቀናት ያስቀምጡ;
  • አስፈላጊ ከሆነ ለአንድ የተወሰነ ቀን የግለሰብ ፋይሎችን የማግኘት ችሎታ;
  • የመጠባበቂያ ቅጂው ከቪዲኤስ ውጭ በመረጃ ማእከል ውስጥ መቀመጥ አለበት;
  • የመጠባበቂያ ቅጂውን ከየትኛውም ቦታ (ሌላ አገልጋይ, አካባቢያዊ ኮምፒተር, ወዘተ) የመድረስ ችሎታ.

አንድ አስፈላጊ ነጥብ በትንሹ የተጨማሪ ቦታ እና የስርዓት ሃብቶችን በመጠቀም ምትኬዎችን በፍጥነት የመፍጠር ችሎታ ነበር።

ይህ አጠቃላይ ስርዓቱን በፍጥነት ወደነበረበት ለመመለስ ስለ ቅጽበተ-ፎቶ ሳይሆን ስለ ፋይሎች እና የውሂብ ጎታ እና የለውጦች ታሪክ ነው።

የመጀመሪያ መረጃ

  • ቪዲኤስ በ XEN ምናባዊነት;
  • OS CentOS 7;
  • 1C-Bitrix: የድር አካባቢ;
  • በ "1C-Bitrix: Site Management" ላይ የተመሰረተ ድር ጣቢያ, መደበኛ ስሪት;
  • የፋይል መጠን 50 ጂቢ እና ያድጋል;
  • የመረጃ ቋቱ መጠን 3 ጂቢ ነው እና ያድጋል።

ወዲያውኑ በ 1C-Bitrix ውስጥ የተሰራውን መደበኛ መጠባበቂያ አስቀርቻለሁ። ለትናንሽ ጣቢያዎች ብቻ ተስማሚ ነው, ምክንያቱም:

  • በእያንዳንዱ ጊዜ የጣቢያው ሙሉ ቅጂ ይሠራል, ስለዚህ እያንዳንዱ ቅጂ ፋይሎቹ በሚወስዱበት ጊዜ ተመሳሳይ መጠን ይወስዳል, በእኔ ሁኔታ 50 ጂቢ ነው.
  • ምትኬ የሚከናወነው PHPን በመጠቀም ነው ፣ይህም በፋይሎች ብዛት የማይቻል ነው ፣አገልጋዩን ከመጠን በላይ ይጭናል እና በጭራሽ አይጨርስም።
  • እና በእርግጥ, ሙሉ ቅጂ በሚከማችበት ጊዜ ስለማንኛውም የ 90 ቀናት ንግግር ሊኖር አይችልም.

አስተናጋጁ የሚያቀርበው መፍትሔ ከቪዲኤስ ጋር በተመሳሳይ የውሂብ ማዕከል ውስጥ የሚገኝ የመጠባበቂያ ዲስክ ነው, ግን በተለየ አገልጋይ ላይ. ከዲስክ ጋር በኤፍቲፒ መስራት እና የእራስዎን ስክሪፕቶች መጠቀም ወይም ISPManager በ VDS ላይ ከተጫነ በመጠባበቂያ ሞጁል በኩል መጠቀም ይችላሉ። በተመሳሳዩ የመረጃ ማእከል አጠቃቀም ምክንያት ይህ አማራጭ ተስማሚ አይደለም.

ከላይ ከተጠቀሱት ሁሉ, ለእኔ ምርጥ ምርጫ በ Yandex.Cloud (የነገር ማከማቻ) ወይም Amazon S3 (አማዞን ቀላል የማከማቻ አገልግሎት) ውስጥ የራሴን ስክሪፕት በመጠቀም ተጨማሪ ምትኬ ነው.

ይህ ያስፈልገዋል፡-

  • የ VDS ስርወ መዳረሻ;
  • የተጫነ የብዜት መገልገያ;
  • በ Yandex.Cloud ውስጥ መለያ.

ተጨማሪ ምትኬ - ከመጨረሻው ምትኬ በኋላ የተለወጠ ውሂብ ብቻ የሚቀመጥበት ዘዴ።

ድብደባ - የ rsync ስልተ ቀመሮችን የሚጠቀም እና ከአማዞን S3 ጋር አብሮ መስራት የሚችል የመጠባበቂያ መገልገያ።

Yandex.Cloud vs Amazon S3

በዚህ አጋጣሚ በ Yandex.Cloud እና Amazon S3 መካከል ለእኔ ምንም ልዩነት የለም. Yandex የአማዞን S3 ኤፒአይን በብዛት ይደግፋል፣ ስለዚህ ከ S3 ጋር ለመስራት ያሉትን መፍትሄዎች በመጠቀም ከእሱ ጋር መስራት ይችላሉ። በእኔ ሁኔታ ይህ የተባዛ መገልገያ ነው።

የ Yandex ዋነኛ ጥቅም በሩብል ውስጥ ክፍያ ሊሆን ይችላል, ብዙ ውሂብ ካለ, ከምንዛሪ ተመን ጋር ምንም ግንኙነት አይኖርም. ፍጥነትን በተመለከተ የአማዞን አውሮፓ የመረጃ ማዕከላት በ 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. የተባዛ መገልገያውን በቪዲኤስ ላይ ይጫኑ

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 ውስጥ ያለው ምትኬ ከማንኛውም ሌላ አገልጋይ ወይም አካባቢያዊ ኮምፒዩተር ሊደረስበት የሚችል የጣቢያ እና የስርዓተ ክወና ቅንጅቶችን ገለልተኛ ቅጂ ይሰጣል። ከዚህም በላይ ይህ ቅጂ በማስተናገጃ የቁጥጥር ፓነል ውስጥ ወይም በ Bitrix አስተዳዳሪ ፓነል ውስጥ አይታይም, ይህም ተጨማሪ ደህንነትን ይሰጣል.

በጣም በከፋ ሁኔታ አዲስ አገልጋይ ማሰባሰብ እና በማንኛውም ቀን ጣቢያውን ማሰማራት ይችላሉ። ምንም እንኳን በጣም ታዋቂው ተግባር ለተወሰነ ቀን ፋይልን የመድረስ ችሎታ ይሆናል.

ይህንን ዘዴ በ 1C-Bitrix ብቻ ሳይሆን በማናቸውም ቪዲኤስ ወይም Dedicated አገልጋዮች እና ጣቢያዎች ላይ በማንኛውም ሞተሮች መጠቀም ይችላሉ። ስርዓተ ክወናው እንደ ኡቡንቱ ወይም ዴቢያን ካሉ CentOS ሌላ ሊሆን ይችላል።

ምንጭ: hab.com

አስተያየት ያክሉ