I-backup ye-VDS eyongezelelweyo enesayithi kwi-1C-Bitrix kwi-Yandex.Cloud

Kwakufuneka ndenze i-backups yesayithi kwi-"2C-Bitrix: Ulawulo lweSiza" (iifayile kunye nedatha ye-mysql) kabini ngosuku kwaye ndigcine imbali yotshintsho lweentsuku ze-1.

Indawo ibekwe kwi-VDS eqhuba i-CentOS 7 OS ene-1C-Bitrix: I-Web Environment ifakiwe. Ukongeza, yenza ikopi yogcino lwezicwangciso zakho ze-OS.

Izinto ezifunekayo:

  • Ukuphindaphinda - amaxesha ama-2 ngosuku;
  • Gcina iikopi kwiintsuku ezingama-90 zokugqibela;
  • Ukukwazi ukufumana iifayile zomntu ngamnye ngosuku oluthile, ukuba kuyimfuneko;
  • I-backup kufuneka igcinwe kwiziko ledatha ngaphandle kweVDS;
  • Ukukwazi ukufikelela kwi-backup naphi na (enye iseva, ikhompyuter yendawo, njl.).

Inqaku elibalulekileyo yayikukukwazi ukwenza ngokukhawuleza ii-backups kunye nokusetyenziswa okuncinci kwendawo eyongezelelweyo kunye nezixhobo zenkqubo.

Oku akukho malunga ne-snapshot yokubuyisela ngokukhawuleza inkqubo yonke, kodwa malunga neefayile kunye nedathabheyisi kunye nembali yotshintsho.

Idatha yokuqala:

  • VDS kwi-XEN virtualization;
  • OS CentOS 7;
  • I-1C-Bitrix: Indawo yewebhu;
  • IWebhusayithi esekelwe kwi-"1C-Bitrix: Ulawulo lweSiza", inguqulo esemgangathweni;
  • Ubungakanani befayile yi-50 GB kwaye iya kukhula;
  • Ubungakanani bedatha ye-3 GB kwaye iya kukhula.

Kwangoko ndikhuphe i-backup eqhelekileyo eyakhelwe kwi-1C-Bitrix. Ifanelekile kuphela kwiindawo ezincinci, kuba:

  • Yenza ikopi epheleleyo yesayithi rhoqo, ngoko ikopi nganye iya kuthatha indawo efanayo njengoko iifayile zithatha, kwimeko yam i-50 GB.
  • Ugcino lwenziwa kusetyenziswa i-PHP, engenakwenzeka ngemithamo enjalo yeefayile, iya kulayisha ngaphezulu iseva kwaye ayisoze igqibe.
  • Kwaye, ngokuqinisekileyo, akunakuthetha ngayo naziphi na iintsuku ezingama-90 xa ugcina ikopi epheleleyo.

Isisombululo esibonelelayo umamkeliLe yidiski yogcino ekwiziko ledatha elifanayo ne-VDS, kodwa kwiseva eyahlukileyo. Ungafikelela kwidiski nge-FTP kwaye usebenzise izikripthi zakho, okanye, ukuba i-ISPManager ifakiwe kwi-VDS, ngemodyuli yayo yogcino. Olu khetho alufanelekanga kuba lusebenzisa iziko ledatha elifanayo.

Kuzo zonke ezi ngasentla, olona khetho lungcono kum yi-backup eyongeziweyo usebenzisa i-script yam kwi-Yandex.Cloud (I-Object Storage) okanye i-Amazon S3 (i-Amazon Simple Storage Service).

Oku kufuna:

  • ukufikelela kweengcambu kwiVDS;
  • usetyenziso oluphindiweyo olufakiweyo;
  • iakhawunti kwiYandex.Cloud.

I-backup eyongezelelweyo -indlela apho kuphela idatha etshintshileyo ukususela ekugcinweni kogcino lokugqibela lugcinwe.

ukuphindeka -Isixhobo sokugcina esisebenzisa i-rsync algorithms kwaye inokusebenza neAmazon S3.

Yandex.Cloud vs Amazon S3

Kule meko, akukho mahluko phakathi kweYandex.Cloud kunye ne-Amazon S3 kum. I-Yandex isekela ubuninzi be-Amazon S3 API, ngoko unokusebenzisana nayo usebenzisa izisombululo ezikhoyo zokusebenza kunye ne-S3. Kwimeko yam, oku kuluncedo oluphindiweyo.

Inzuzo ephambili yeYandex ingaba yintlawulo kwii-ruble; Ngokumalunga nesantya, amaziko edatha aseYurophu ase-Amazon asebenza ngokuthelekiswa namaziko edatha yaseRashiya eYandex umzekelo, ungasebenzisa iFrankfurt. Ngaphambili ndasebenzisa i-Amazon S3 kwimisebenzi efanayo, kodwa ngoku ndagqiba ekubeni ndizame iYandex.

Ukumisela iYandex.Cloud

1. Kufuneka wenze i-akhawunti yokuhlawula kwi-Yandex.Cloud. Ukwenza oku, kufuneka ungene kwiYandex.Cloud ngeakhawunti yakho yeYandex okanye wenze entsha.

2. Yenza "Cloud".
I-backup ye-VDS eyongezelelweyo enesayithi kwi-1C-Bitrix kwi-Yandex.Cloud

3. Kwi "Cloud" yenza "Ikhathalogu".
I-backup ye-VDS eyongezelelweyo enesayithi kwi-1C-Bitrix kwi-Yandex.Cloud

4. Kwi-"Catalogue" yenza "i-akhawunti yeNkonzo".
I-backup ye-VDS eyongezelelweyo enesayithi kwi-1C-Bitrix kwi-Yandex.Cloud

5. Yenza izitshixo ze "Akhawunti yeNkonzo".
I-backup ye-VDS eyongezelelweyo enesayithi kwi-1C-Bitrix kwi-Yandex.Cloud

6. Gcina izitshixo, ziya kufuneka kwixesha elizayo.
I-backup ye-VDS eyongezelelweyo enesayithi kwi-1C-Bitrix kwi-Yandex.Cloud

7. Kwi-"Directory" yenza "iBhakethi", iifayile ziya kungena kuyo.
I-backup ye-VDS eyongezelelweyo enesayithi kwi-1C-Bitrix kwi-Yandex.Cloud

8. Ndincoma ukubeka umda kwaye ukhethe "Isitoreji esibandayo".
I-backup ye-VDS eyongezelelweyo enesayithi kwi-1C-Bitrix kwi-Yandex.Cloud

Ukumisela ii-backups ezicwangcisiweyo kwiseva

Esi sikhokelo sithatha izakhono zolawulo ezisisiseko.

1. Faka usetyenziso oluphindiweyo kwiVDS

yum install duplicity

2. Yenza ifolda yokulahla i-mysql, kwimeko yam yi /backup_db kwingcambu yeVDS

3. Yenza ifolda ye-bash scripts /backup_scripts kwaye wenze iskripthi sokuqala esiya kwenza i-backups /backup_scripts/backup.sh

Imixholo yeskripthi:

#!`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. Qhuba isikripthi okokuqala kwaye ujonge umphumo;

`which bash` /backup_scripts/backup.sh

I-backup ye-VDS eyongezelelweyo enesayithi kwi-1C-Bitrix kwi-Yandex.Cloud

5. Yongeza iskripthi kwi-cron kumsebenzisi weengcambu ukuba aqhube amaxesha e-2 ngosuku, okanye ngokuphindaphindiweyo oyifunayo.

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

Ukufumana kwakhona idatha kwiYandex.Cloud

1. Yenza ifolda yokubuyisela /backup_restore

2. Yenza iskripthi se-bash sokubuyisela /backup_scripts/restore.sh

Ndinika owona mzekelo udumileyo wokubuyisela ifayile ethile:

#!`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. Qalisa iskripthi kwaye ulinde umphumo.

`which bash` /backup_scripts/backup.sh

Kwi-backup_restore/ ifolda uya kufumana ifayile ye index.php ebikade ixhaswa ngaphambili.

Unokwenza uhlengahlengiso olulunge ngakumbi ukuze luhambelane neemfuno zakho.

Susa uphindaphindo

uphindaphindo lune-drawback enye - akunakwenzeka ukuseta umda wokusetyenziswa kwejelo. Ngomjelo oqhelekileyo oku akuyi kudala ingxaki, kodwa xa usebenzisa i-channel ekhuselweyo ye-DDoS kunye nokutshaja kwesantya ngosuku, ndingathanda ukukwazi ukubeka umda we-1-2 megabits.

Njengesiphelo

Ukwenza ikopi kwiYandex.Cloud okanye kwiAmazon S3 kubonelela ngekopi ezimeleyo yewebhusayithi yakho kunye noseto lwe-OS olunokufikelelwa kuyo nayiphi na enye iseva okanye ikhompyutha yasekuhlaleni. Le kopi ayibonakali nakubani na. iiphaneli zokulawula i-hosting, okanye kwiphaneli yokulawula yeBitrix, enika ukhuseleko olongezelelweyo.

Kwimeko embi kakhulu, unokuhlanganisa iseva entsha kwaye usebenzise isiza nangawuphi na umhla. Nangona umsebenzi odumileyo uya kuba nako ukufikelela kwifayile yomhla othile.

Ungasebenzisa obu buchule nangayiphi na i-VDS okanye iiseva ezinikezelweyo kunye neziza kuzo naziphi na iinjini, hayi nje i-1C-Bitrix. I-OS inokuba ngaphandle kwe-CentOS, efana ne-Ubuntu okanye i-Debian.

umthombo: www.habr.com