VDS cynyddrannol wrth gefn gyda safle ar 1C-Bitrix yn Yandex.Cloud

Roedd angen i mi wneud copi wrth gefn o'r wefan i 2C-Bitrix: Rheoli Safle 1 gwaith y dydd (ffeiliau a chronfa ddata mysql) a storio hanes o newidiadau am 90 diwrnod.

Mae'r wefan wedi'i lleoli ar VDS sy'n rhedeg CentOS 7 gyda "1C-Bitrix: Web Environment" wedi'i osod. Yn ogystal, gwnewch gopi wrth gefn o'r gosodiadau OS.

Gofynion:

  • Amlder - 2 gwaith y dydd;
  • Cadw copïau am y 90 diwrnod diwethaf;
  • Y gallu i gael ffeiliau unigol ar gyfer dyddiad penodol, os oes angen;
  • Rhaid storio'r copi wrth gefn mewn canolfan ddata heblaw VDS;
  • Y gallu i gael mynediad at y copi wrth gefn o unrhyw le (gweinydd arall, cyfrifiadur lleol, ac ati).

Pwynt pwysig oedd y gallu i greu copïau wrth gefn yn gyflym heb lawer o ddefnydd o ofod ychwanegol ac adnoddau system.

Nid yw hyn yn ymwneud â chipolwg ar gyfer adferiad cyflym o'r system gyfan, ond am ffeiliau a'r gronfa ddata a hanes newidiadau.

Data cychwynnol:

  • VDS ar rhithwiroli XEN;
  • OS CentOS 7;
  • 1C-Bitrix: Amgylchedd gwe;
  • Safle yn seiliedig ar "1C-Bitrix: Rheoli Safle", fersiwn safonol;
  • Maint y ffeil yw 50 GB a bydd yn tyfu;
  • Maint y gronfa ddata yw 3 GB a bydd yn tyfu.

Copi wrth gefn safonol wedi'i ymgorffori yn 1C-Bitrix - wedi'i eithrio ar unwaith. Mae'n addas ar gyfer safleoedd bach yn unig, oherwydd:

  • Yn gwneud copi cyflawn o'r wefan bob tro, yn y drefn honno, bydd pob copi yn cymryd cymaint o le ag y byddaf yn cymryd y ffeiliau, yn fy achos i mae'n 50 GB.
  • Gwneir copi wrth gefn gan ddefnyddio PHP, sy'n amhosibl gyda chymaint o ffeiliau, bydd yn gorlwytho'r gweinydd ac ni fydd byth yn dod i ben.
  • Ac wrth gwrs, ni ellir sôn am unrhyw 90 diwrnod wrth storio copi llawn.

Yr ateb y mae'r gwesteiwr yn ei gynnig yw disg wrth gefn sydd wedi'i lleoli yn yr un ganolfan ddata â'r VDS, ond ar weinydd gwahanol. Gallwch weithio gyda'r ddisg trwy FTP a defnyddio'ch sgriptiau eich hun, neu os yw ISPManager wedi'i osod ar y VDS, yna trwy ei fodiwl wrth gefn. Nid yw'r opsiwn hwn yn addas oherwydd y defnydd o'r un ganolfan ddata.

O'r uchod i gyd, y dewis gorau i mi yw copi wrth gefn cynyddrannol yn ôl fy senario fy hun yn Yandex.Cloud (Object Storage) neu Amazon S3 (Amazon Simple Storage Service).

Mae hyn yn gofyn am:

  • mynediad gwraidd i VDS;
  • cyfleustodau dyblygu gosod;
  • cyfrif yn Yandex.Cloud.

wrth gefn cynyddrannol - dull lle dim ond data sydd wedi newid ers y copi wrth gefn diwethaf sy'n cael ei archifo.

dyblygu - cyfleustodau wrth gefn sy'n defnyddio algorithmau rsync ac sy'n gallu gweithio gydag Amazon S3.

Yandex.Cloud vs Amazon S3

Nid oes gwahaniaeth rhwng Yandex.Cloud ac Amazon S3 yn yr achos hwn i mi. Mae Yandex yn cefnogi prif ran API Amazon S3, felly gallwch chi weithio gydag ef gan ddefnyddio'r atebion sydd ar gael ar gyfer gweithio gyda S3. Yn fy achos i, dyma'r cyfleustodau dyblygu.

Prif fantais Yandex yw taliad mewn rubles, os oes llawer o ddata, yna ni fydd unrhyw ddolen i'r cwrs. O ran cyflymder, mae canolfannau data Ewropeaidd Amazon yn gweithio'n gymesur â rhai Rwsiaidd yn Yandex, er enghraifft, gallwch ddefnyddio Frankfurt. Defnyddiais Amazon S3 yn flaenorol ar gyfer tasgau tebyg, nawr penderfynais roi cynnig ar Yandex.

Sefydlu Yandex.Cloud

1. Mae angen i chi greu cyfrif bilio yn Yandex.Cloud. I wneud hyn, mae angen i chi fewngofnodi i Yandex.Cloud trwy'ch cyfrif Yandex neu greu un newydd.

2. Creu Cwmwl.
VDS cynyddrannol wrth gefn gyda safle ar 1C-Bitrix yn Yandex.Cloud

3. Yn y "Cloud" creu "Catalog".
VDS cynyddrannol wrth gefn gyda safle ar 1C-Bitrix yn Yandex.Cloud

4. Ar gyfer y "Catalog" creu "Cyfrif Gwasanaeth".
VDS cynyddrannol wrth gefn gyda safle ar 1C-Bitrix yn Yandex.Cloud

5. Ar gyfer y "Cyfrif Gwasanaeth" creu allweddi.
VDS cynyddrannol wrth gefn gyda safle ar 1C-Bitrix yn Yandex.Cloud

6. Cadwch yr allweddi, bydd eu hangen arnoch chi yn y dyfodol.
VDS cynyddrannol wrth gefn gyda safle ar 1C-Bitrix yn Yandex.Cloud

7. Ar gyfer y "Catalog" creu "Bwced", bydd ffeiliau yn disgyn i mewn iddo.
VDS cynyddrannol wrth gefn gyda safle ar 1C-Bitrix yn Yandex.Cloud

8. Rwy'n argymell gosod terfyn a dewis "Storio Oer".
VDS cynyddrannol wrth gefn gyda safle ar 1C-Bitrix yn Yandex.Cloud

Sefydlu copïau wrth gefn wedi'u hamserlennu ar y gweinydd

Mae'r canllaw hwn yn rhagdybio sgiliau gweinyddol sylfaenol.

1. Gosodwch y cyfleustodau dyblygu ar y VDS

yum install duplicity

2. Creu ffolder ar gyfer tomenni mysql, yn fy achos i, mae'n /backup_db yn y gwraidd VDS

3. Creu ffolder ar gyfer sgriptiau bash /backup_scripts a gwneud y sgript gyntaf a fydd yn gwneud copi wrth gefn /backup_scripts/backup.sh

Cynnwys y sgript:

#!`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. Rhedeg y sgript am y tro cyntaf a gwirio'r canlyniad, dylai ffeiliau ymddangos yn y Bwced.

`which bash` /backup_scripts/backup.sh

VDS cynyddrannol wrth gefn gyda safle ar 1C-Bitrix yn Yandex.Cloud

5. Ychwanegu sgript i cron ar gyfer y defnyddiwr gwraidd i'w gweithredu 2 gwaith y dydd, neu mor aml ag sydd ei angen arnoch.

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

Adfer data o Yandex.Cloud

1. Gwnewch ffolder adfer /backup_restore

2. Gwneud bash adfer sgript /backup_scripts/restore.sh

Rhoddaf yr enghraifft y gofynnwyd amdani fwyaf o adfer ffeil benodol:

#!`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. Rhedeg y sgript ac aros am y canlyniad.

`which bash` /backup_scripts/backup.sh

Yn y ffolder /backup_restore/ fe welwch y ffeil index.php a gynhwyswyd yn flaenorol yn y copi wrth gefn.

Gallwch wneud addasiadau manylach i weddu i'ch anghenion.

llai dyblygu

Mae gan ddyblygrwydd un anfantais - nid oes unrhyw ffordd i osod terfyn defnydd sianel. Gyda sianel arferol, nid yw hyn yn creu problem, ond gyda sianel wedi'i diogelu gan DDoS gyda bilio cyflymder y dydd, hoffwn allu gosod terfyn o 1-2 megabits.

Fel casgliad

Mae copi wrth gefn yn Yandex.Cloud neu Amazon S3 yn darparu copi annibynnol o'r wefan a gosodiadau OS y gellir eu cyrchu o unrhyw weinydd neu gyfrifiadur lleol arall. Ar yr un pryd, nid yw'r copi hwn yn weladwy naill ai yn y panel rheoli cynnal nac yn y panel gweinyddol Bitrix, sy'n darparu diogelwch ychwanegol.

Yn y canlyniad mwyaf anffodus, gallwch adeiladu gweinydd newydd a defnyddio'r wefan ar gyfer unrhyw ddyddiad. Er mai'r swyddogaeth y gofynnir amdani fwyaf fydd y gallu i gyrchu'r ffeil ar gyfer dyddiad penodol.

Gallwch ddefnyddio'r dechneg hon gydag unrhyw weinyddion a gwefannau VDS neu Ymroddedig ar unrhyw beiriannau, nid yn unig 1C-Bitrix. Gall yr OS hefyd fod yn wahanol i CentOS, fel Ubuntu neu Debian.

Ffynhonnell: hab.com

Ychwanegu sylw