Yandex.Cloud жүйесіндегі 1C-Bitrix сайтымен қосымша VDS сақтық көшірмесі

Маған сайттың сақтық көшірмесін 2C-Bitrix: Сайтты басқару күніне 1 рет (файлдар мен MySQL дерекқоры) және 90 күн бойы өзгерістер тарихын сақтау қажет болды.

Сайт "7C-Bitrix: Web Environment" орнатылған CentOS 1 жүйесімен жұмыс істейтін VDS жүйесінде орналасқан. Сонымен қатар, ОЖ параметрлерінің сақтық көшірмесін жасаңыз.

талаптар:

  • Жиілігі - күніне 2 рет;
  • Көшірмелерді соңғы 90 күн ішінде сақтаңыз;
  • Қажет болса, белгілі бір күнге жеке файлдарды алу мүмкіндігі;
  • Сақтық көшірме VDS-тен басқа деректер орталығында сақталуы керек;
  • Кез келген жерден сақтық көшірмеге қол жеткізу мүмкіндігі (басқа сервер, жергілікті компьютер және т.б.).

Маңызды сәт қосымша кеңістік пен жүйелік ресурстарды аз тұтынумен сақтық көшірмелерді жылдам жасау мүмкіндігі болды.

Бұл бүкіл жүйені жылдам қалпына келтіруге арналған сурет туралы емес, файлдар мен дерекқор және өзгерістер тарихы туралы.

Бастапқы деректер:

  • XEN виртуализациясындағы VDS;
  • ОЖ CentOS 7;
  • 1C-Bitrix: Web ортасы;
  • «1C-Bitrix: Сайтты басқару» негізіндегі веб-сайт, Стандартты нұсқасы;
  • Файл өлшемі 50 ГБ және өседі;
  • Дерекқордың көлемі 3 ГБ және өседі.

Мен 1C-Bitrix ішіне орнатылған стандартты сақтық көшірмені бірден алып тастадым. Ол тек шағын сайттар үшін жарамды, себебі:

  • Сайттың толық көшірмесін әр жолы жасайды, сәйкесінше әрбір көшірме мен файлдарды қалай алатын болсам, сонша орын алады, менің жағдайда бұл 50 ГБ.
  • Сақтық көшірме PHP көмегімен жүзеге асырылады, мұндай көлемдегі файлдармен бұл мүмкін емес, ол серверді шамадан тыс жүктейді және ешқашан аяқталмайды.
  • Және, әрине, толық көшірмені сақтау кезінде ешқандай 90 күн туралы сөз болуы мүмкін емес.

Хостер ұсынатын шешім VDS сияқты бір деректер орталығында, бірақ басқа серверде орналасқан сақтық көшірме дискі болып табылады. Сіз дискімен FTP арқылы жұмыс істей аласыз және өз сценарийлеріңізді пайдалана аласыз немесе VDS жүйесінде ISPManager орнатылған болса, оның сақтық көшірме модулі арқылы. Бұл опция бір деректер орталығының пайдаланылуына байланысты жарамсыз.

Жоғарыда айтылғандардың барлығынан мен үшін ең жақсы таңдау - Yandex.Cloud (объектілерді сақтау) немесе Amazon S3 (Amazon қарапайым сақтау қызметі) ішіндегі жеке сценарий бойынша қосымша сақтық көшірме жасау.

Бұл қажет:

  • VDS жүйесіне түбірлік қатынас;
  • орнатылған қайталанатын қызметтік бағдарлама;
  • Yandex.Cloud жүйесіндегі есептік жазба.

Қосымша сақтық көшірме - соңғы сақтық көшірмеден кейін өзгерген деректер ғана мұрағатталатын әдіс.

қайталануы - rsync алгоритмдерін қолданатын және Amazon S3-пен жұмыс істей алатын сақтық көшірме утилитасы.

Yandex.Cloud және Amazon S3

Бұл жағдайда мен үшін Yandex.Cloud пен Amazon S3 арасында ешқандай айырмашылық жоқ. Яндекс Amazon S3 API негізгі бөлігін қолдайды, сондықтан онымен S3-пен жұмыс істеуге арналған шешімдерді пайдаланып жұмыс істеуге болады. Менің жағдайда, бұл екі жақты қызметтік бағдарлама.

Яндекстің басты артықшылығы рубльмен төлеу болуы мүмкін, егер деректер көп болса, валюта бағамына ешқандай байланыс болмайды. Жылдамдық бойынша Amazon-ның еуропалық деректер орталықтары Яндекстегі ресейлік деректер орталықтарымен салыстыруға болады; мысалы, Франкфуртты пайдалануға болады. Мен бұрын Amazon S3-ті ұқсас тапсырмалар үшін пайдаландым, енді Яндексті қолданып көруді шештім.

Yandex.Cloud орнату

1. Yandex.Cloud жүйесінде төлем шотын жасау керек. Ол үшін Яндекс тіркелгісі арқылы 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 bash сценарийлері үшін қалта жасаңыз және сақтық көшірме жасайтын бірінші сценарийді жасаңыз /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 рет немесе қажетті жиілікте жұмыс істеуі үшін cron жүйесіне сценарий қосыңыз.

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

Yandex.Cloud сайтынан деректерді қалпына келтіру

1. Қалпына келтіру қалтасын жасаңыз /backup_restore

2. Bash қалпына келтіру сценарийін /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 емес, кез келген қозғалтқыштардағы кез келген VDS немесе Арнайы серверлер мен сайттармен пайдалана аласыз. Операциялық жүйе Ubuntu немесе Debian сияқты CentOS-тан басқа болуы мүмкін.

Ақпарат көзі: www.habr.com

пікір қалдыру