Backup ea VDS e ntseng e eketseha ka sebaka sa marang-rang ho 1C-Bitrix ho Yandex.Cloud

Ke ne ke hloka ho etsa li-backups tsa sebaka sa "2C-Bitrix: Site Management" (lifaele le database ea mysql) habeli ka letsatsi le ho boloka histori ea liphetoho bakeng sa matsatsi a 1.

Sebaka sena se fumaneha ho VDS e tsamaisang CentOS 7 OS e nang le 1C-Bitrix: Tikoloho ea Webo e kentsoe. Ho feta moo, etsa kopi ea "backup" ea litlhophiso tsa OS ea hau.

Litlhokahalo:

  • Khafetsa - makhetlo a 2 ka letsatsi;
  • Boloka likopi tsa matsatsi a 90 a fetileng;
  • Bokhoni ba ho fumana lifaele tsa motho ka mong bakeng sa letsatsi le itseng, ha ho hlokahala;
  • Backup e tlameha ho bolokoa setsing sa data ntle le VDS;
  • Bokhoni ba ho fihlella bekapo ho tsoa kae kapa kae (seva e 'ngoe, komporo ea lehae, jj.).

Ntlha ea bohlokoa e ne e le bokhoni ba ho etsa li-backups ka potlako ka tšebeliso e fokolang ea sebaka se eketsehileng le lisebelisoa tsa tsamaiso.

Sena ha se mabapi le snapshot bakeng sa ho khutlisetsa sistimi eohle kapele, empa ka lifaele le database le nalane ea liphetoho.

Lintlha tsa pele:

  • VDS ho XEN virtualization;
  • OS CentOS 7;
  • 1C-Bitrix: Tikoloho ea Websaete;
  • Sebaka sa marang-rang se thehiloeng ho "1C-Bitrix: Tsamaiso ea Sebaka", Mofuta o tloaelehileng;
  • Boholo ba faele ke 50 GB mme bo tla hola;
  • Boholo ba database ke 3 GB mme bo tla hola.

Hang-hang ke ile ka qhelela ka thōko bekapo e tloaelehileng e hahiloeng ho 1C-Bitrix. E loketse libaka tse nyane feela, hobane:

  • E etsa kopi e feletseng ea setša nako le nako, kahoo kopi e 'ngoe le e' ngoe e tla nka sebaka se lekanang le seo lifaele li se nkang, tabeng ea ka ke 50 GB.
  • Backup e etsoa ka PHP, e ke keng ea khoneha ka mefuta e joalo ea lifaele, e tla tlatsa seva 'me e ke ke ea qeta.
  • Mme ehlile, ho ka se buwe ka matsatsi a 90 ha o boloka kopi e felletseng.

Tharollo eo hoster e fanang ka eona ke disk ea "backup" e fumanehang sebakeng se le seng sa data joaloka VDS, empa ho seva se fapaneng. O ka sebetsa le disk ka FTP mme o sebelisa mangolo a hau, kapa haeba ISPManager e kentsoe VDS, ebe ka mojule oa eona oa ho boloka. Khetho ena ha e tšoanelehe ka lebaka la tšebeliso ea setsi se tšoanang sa data.

Ho tsoa ho tsohle tse ka holimo, khetho e ntle ka ho fetisisa bakeng sa ka ke bekapo e ntseng e eketseha ke sebelisa script ea ka ho Yandex.Cloud (Object Storage) kapa Amazon S3 (Amazon Simple Storage Service).

Sena se hloka:

  • phihlello ea metso ho VDS;
  • sesebelisoa sa duplicity se kentsoeng;
  • ak'haonte ho Yandex.Cloud.

Backup e ntseng e eketseha - mokhoa oo ho oona feela data e fetohileng ho tloha ha bekapo ea ho qetela e bolokoa.

kopi - Sesebelisoa sa "backup" se sebelisang li-algorithms tsa rsync mme se ka sebetsa le Amazon S3.

Yandex.Cloud vs Amazon S3

Tabeng ena, ha ho na phapang pakeng tsa Yandex.Cloud le Amazon S3 bakeng sa ka. Yandex e ts'ehetsa bongata ba Amazon S3 API, kahoo o ka sebetsa le eona o sebelisa litharollo tse teng bakeng sa ho sebetsa le S3. Tabeng ea ka, sena ke sesebelisoa sa duplicity.

Molemo o ka sehloohong oa Yandex e ka 'na ea e-ba tefo ka li-ruble; haeba ho na le lintlha tse ngata, ho ke ke ha e-ba le khokahanyo ho sekhahla sa phapanyetsano. Mabapi le lebelo, litsi tsa data tsa Europe tsa Amazon li sebetsa ka mokhoa o ts'oanang le litsi tsa data tsa Russia tse Yandex, mohlala, o ka sebelisa Frankfurt. Ke kile ka sebelisa Amazon S3 bakeng sa mesebetsi e tšoanang, joale ke ile ka etsa qeto ea ho leka Yandex.

Ho theha Yandex.Cloud

1. U hloka ho theha ak'haonte ea tefo ho Yandex.Cloud. Ho etsa sena, o hloka ho kena ho Yandex.Cloud ka ak'haonte ea hau ea Yandex kapa u thehe e ncha.

2. Theha "Cloud".
Backup ea VDS e ntseng e eketseha ka sebaka sa marang-rang ho 1C-Bitrix ho Yandex.Cloud

3. Ho "Cloud" theha "Catalogue".
Backup ea VDS e ntseng e eketseha ka sebaka sa marang-rang ho 1C-Bitrix ho Yandex.Cloud

4. Bakeng sa "Catalogue" theha "Akhaonto ea Ts'ebeletso".
Backup ea VDS e ntseng e eketseha ka sebaka sa marang-rang ho 1C-Bitrix ho Yandex.Cloud

5. Theha linotlolo bakeng sa "Akhaonto ea Ts'ebeletso".
Backup ea VDS e ntseng e eketseha ka sebaka sa marang-rang ho 1C-Bitrix ho Yandex.Cloud

6. Boloka linotlolo, li tla hlokahala nakong e tlang.
Backup ea VDS e ntseng e eketseha ka sebaka sa marang-rang ho 1C-Bitrix ho Yandex.Cloud

7. Bakeng sa "Directory" theha "Bucket", lifaele li tla kena ho eona.
Backup ea VDS e ntseng e eketseha ka sebaka sa marang-rang ho 1C-Bitrix ho Yandex.Cloud

8. Ke khothaletsa ho beha moeli le ho khetha "Cold Storage".
Backup ea VDS e ntseng e eketseha ka sebaka sa marang-rang ho 1C-Bitrix ho Yandex.Cloud

Ho theha li-backups tse hlophisitsoeng ho seva

Tataiso ena e nka litsebo tsa mantlha tsa tsamaiso.

1. Kenya sesebelisoa sa duplicity ho VDS

yum install duplicity

2. Theha foldara bakeng sa ho lahla ha mysql, molemong oa ka ke /backup_db motso oa VDS

3. Theha foldara bakeng sa bash scripts /backup_scripts 'me u etse script ea pele e tla etsa li-backups /backup_scripts/backup.sh

Litaba tsa 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. Matha mongolo ka lekhetlo la pele 'me u hlahlobe sephetho; lifaele li lokela ho hlaha "Bucket".

`which bash` /backup_scripts/backup.sh

Backup ea VDS e ntseng e eketseha ka sebaka sa marang-rang ho 1C-Bitrix ho Yandex.Cloud

5. Eketsa script ho cron bakeng sa mosebelisi oa motso ho sebetsa ka makhetlo a 2 ka letsatsi, kapa ka makhetlo ao u a hlokang.

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

Fumana lintlha tse tsoang ho Yandex.Cloud

1. Etsa foldara ea ho hlaphoheloa /backup_restore

2. Etsa lengolo la bash bakeng sa ho hlaphoheloa /backup_scripts/restore.sh

Ke fana ka mohlala o tsebahalang haholo oa ho khutlisetsa faele e itseng:

#!`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. Matha script ebe u emela sephetho.

`which bash` /backup_scripts/backup.sh

Ho /backup_restore/ foldareng u tla fumana faele ea index.php e neng e bolokoa.

U ka etsa liphetoho tse ntle ho latela litlhoko tsa hau.

Tlosa phetiso

duplicity e na le drawback e le 'ngoe - ha ho khonehe ho beha moeli oa tšebeliso ea mocha. Ka mocha o tloaelehileng sena ha se hlahise bothata, empa ha u sebelisa mocha o sirelelitsoeng oa DDoS ka ho tjhaja lebelo ka letsatsi, nka rata ho khona ho beha moeli oa 1-2 megabits.

E le sephetho

Backup ho Yandex.Cloud kapa Amazon S3 e fana ka kopi e ikemetseng ea sebaka sa marang-rang le litlhophiso tsa OS tse ka fumanehang ho tsoa ho seva efe kapa efe kapa komporo ea lehae. Ho feta moo, kopi ena ha e bonahale ka har'a phanele ea taolo ea moamoheli kapa phanele ea admin ea Bitrix, e fanang ka ts'ireletso e eketsehileng.

Boemong bo bobe ka ho fetesisa, o ka bokella seva e ncha mme oa tsamaisa sebaka sa marang-rang ka nako efe kapa efe. Leha ts'ebetso e tsebahalang haholo e tla ba bokhoni ba ho fihlella faele bakeng sa letsatsi le itseng.

U ka sebelisa mokhoa ona ka VDS efe kapa efe kapa li-server tse inehetseng le libaka ho lienjineri life kapa life, eseng feela 1C-Bitrix. OS e kanna ea ba ntle le CentOS, joalo ka Ubuntu kapa Debian.

Source: www.habr.com

Eketsa ka tlhaloso