Sovgad VDS enkreman ak yon sit sou 1C-Bitrix nan Yandex.Cloud

Mwen te bezwen fè sovgad sit la sou "2C-Bitrix: Jesyon Sit" (fichye ak baz done mysql) de fwa pa jou epi estoke yon istwa chanjman pou 1 jou.

Sit la sitiye sou yon VDS ki kouri CentOS 7 OS ak 1C-Bitrix: Anviwònman Entènèt enstale. Anplis de sa, fè yon kopi backup anviwònman OS ou yo.

Kondisyon:

  • Frekans - 2 fwa pa jou;
  • Kenbe kopi pou 90 dènye jou yo;
  • Kapasite pou jwenn dosye endividyèl pou yon dat espesifik, si sa nesesè;
  • Sovgad la dwe estoke nan yon sant done ki pa VDS;
  • Kapasite pou jwenn aksè nan backup la nenpòt kote (yon lòt sèvè, òdinatè lokal, elatriye).

Yon pwen enpòtan se te kapasite nan byen vit kreye sovgad ak konsomasyon minim nan espas adisyonèl ak resous sistèm.

Sa a se pa sou yon snapshot pou retabli byen vit tout sistèm nan, men sou dosye ak baz done a ak istwa a nan chanjman.

Done inisyal:

  • VDS sou virtualizasyon XEN;
  • OS CentOS 7;
  • 1C-Bitrix: Anviwònman entènèt;
  • Sit wèb ki baze sou "1C-Bitrix: Jesyon Sit", vèsyon Creole;
  • Gwosè dosye a se 50 GB epi li pral grandi;
  • Gwosè baz done a se 3 GB epi li pral grandi.

Mwen imedyatman eskli backup estanda bati nan 1C-Bitrix. Li apwopriye sèlman pou ti sit, paske:

  • Li fè yon kopi konplè sit la chak fwa, kidonk chak kopi pral pran menm kantite espas ak dosye yo pran, nan ka mwen an li se 50 GB.
  • Sovgad se fè lè l sèvi avèk PHP, ki se enposib ak komèsan sa yo nan dosye, li pral surcharge sèvè a epi yo pa janm pral fini.
  • Ak nan kou, pa ka pale sou nenpòt 90 jou lè estoke yon kopi konplè.

Solisyon ki ofri a òganizatèSa a se yon disk backup ki sitiye nan menm sant done ak VDS la, men sou yon sèvè diferan. Ou ka jwenn aksè nan disk la atravè FTP epi itilize pwòp script ou yo, oubyen, si ISPManager enstale sou VDS la, atravè modil backup li a. Opsyon sa a pa apwopriye paske li itilize menm sant done a.

Soti nan tout sa ki anwo yo, chwa ki pi bon pou mwen se yon backup incrémentielle lè l sèvi avèk pwòp script mwen nan Yandex.Cloud (Depo Objè) oswa Amazon S3 (Sèvis Amazon Senp Depo).

Sa mande:

  • aksè rasin nan VDS;
  • enstale sèvis piblik doubl;
  • kont nan Yandex.Cloud.

Sovgad inkreman — yon metòd kote sèlman done ki te chanje depi dènye backup la achiv.

duplicity — yon sèvis piblik backup ki sèvi ak algoritm rsync epi ki ka travay ak Amazon S3.

Yandex.Cloud vs Amazon S3

Nan ka sa a, pa gen okenn diferans ant Yandex.Cloud ak Amazon S3 pou mwen. Yandex sipòte gwo API Amazon S3 a, kidonk, ou ka travay avèk li lè l sèvi avèk solisyon ki egziste pou travay ak S3. Nan ka mwen an, sa a se sèvis piblik la doubl.

Avantaj prensipal la nan Yandex ka peman an rubles si gen anpil done, pa pral gen okenn koneksyon ak echanj pousantaj lajan an. An tèm de vitès, sant done Ewopeyen an Amazon yo travay konparab ak sant done Ris nan Yandex pou egzanp, ou ka itilize Frankfurt. Mwen te deja itilize Amazon S3 pou travay menm jan an, men kounye a mwen deside eseye Yandex.

Mete kanpe Yandex.Cloud

1. Ou bezwen kreye yon kont peman nan Yandex.Cloud. Pou fè sa, ou bezwen konekte nan Yandex.Cloud atravè kont Yandex ou oswa kreye yon nouvo.

2. Kreye yon "nwaj".
Sovgad VDS enkreman ak yon sit sou 1C-Bitrix nan Yandex.Cloud

3. Nan "Nwaj la" kreye yon "Katalòg".
Sovgad VDS enkreman ak yon sit sou 1C-Bitrix nan Yandex.Cloud

4. Pou "Katalòg la" kreye yon "kont sèvis".
Sovgad VDS enkreman ak yon sit sou 1C-Bitrix nan Yandex.Cloud

5. Kreye kle pou "Kont Sèvis".
Sovgad VDS enkreman ak yon sit sou 1C-Bitrix nan Yandex.Cloud

6. Sove kle yo, yo pral bezwen nan tan kap vini an.
Sovgad VDS enkreman ak yon sit sou 1C-Bitrix nan Yandex.Cloud

7. Pou "Anyè a" kreye yon "Bokit", dosye yo pral antre nan li.
Sovgad VDS enkreman ak yon sit sou 1C-Bitrix nan Yandex.Cloud

8. Mwen rekòmande mete yon limit epi chwazi "Depo frèt".
Sovgad VDS enkreman ak yon sit sou 1C-Bitrix nan Yandex.Cloud

Mete kanpe sovgad pwograme sou sèvè a

Gid sa a sipoze ladrès de baz administrasyon yo.

1. Enstale sèvis piblik la doubl sou VDS la

yum install duplicity

2. Kreye yon katab pou pil fatra mysql, nan ka mwen an li se /backup_db nan rasin VDS la

3. Kreye yon katab pou scripts bash /backup_scripts epi fè premye script ki pral fè sovgad /backup_scripts/backup.sh

Kontni script:

#!`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. Kouri script la pou premye fwa epi tcheke rezilta yo ta dwe parèt nan "Bokit la".

`which bash` /backup_scripts/backup.sh

Sovgad VDS enkreman ak yon sit sou 1C-Bitrix nan Yandex.Cloud

5. Ajoute yon script nan cron pou itilizatè rasin lan kouri 2 fwa pa jou, oswa ak frekans ou bezwen an.

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

Rekipere done ki soti nan Yandex.Cloud

1. Fè yon katab rekiperasyon /backup_restore

2. Fè yon script bash pou recovery /backup_scripts/restore.sh

Mwen bay egzanp ki pi popilè nan restore yon dosye espesifik:

#!`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. Kouri script la epi tann rezilta a.

`which bash` /backup_scripts/backup.sh

Nan katab /backup_restore/ ou pral jwenn fichye index.php ki te fè bak deja.

Ou ka fè pi rafine ajisteman selon bezwen ou yo.

Mwens repetisyon

duplicity gen yon sèl dezavantaj - li pa posib yo mete yon limit itilizasyon chanèl. Avèk yon chanèl regilye sa a pa kreye yon pwoblèm, men lè w ap itilize yon chanèl DDoS ki pwoteje ak chaj vitès pou chak jou, mwen ta renmen kapab fikse yon limit nan 1-2 megabit.

Kòm yon konklizyon

Fè backup sou Yandex.Cloud oubyen Amazon S3 bay yon kopi endepandan sit entènèt ou a ak paramèt sistèm operasyon ou an, ou ka jwenn aksè ladan l sou nenpòt lòt sèvè oubyen òdinatè lokal. Kopi sa a pa vizib pou pèsonn. panno kontwòl hosting, ni nan panèl administrasyon Bitrix la, ki bay plis sekirite.

Nan pi move senaryo a, ou ka rasanble yon nouvo sèvè epi deplwaye sit la nenpòt ki dat. Malgre ke fonksyonalite ki pi popilè yo pral kapasite pou jwenn aksè nan yon dosye pou yon dat espesifik.

Ou ka itilize teknik sa a ak nenpòt VDS oswa serveurs Dedye ak sit sou nenpòt motè, pa sèlman 1C-Bitrix. OS la kapab tou lòt pase CentOS, tankou Ubuntu oswa Debian.

Sous: www.habr.com