Sauvegarde VDS incrémentielle avec un site sur 1C-Bitrix dans Yandex.Cloud

J'avais besoin de sauvegarder le site sur 1C-Bitrix: Gestion du site 2 fois par jour (fichiers et bases de données mysql) et stocker l'historique des modifications pendant 90 jours.



Le site est situé sur un VDS exécutant CentOS 7 avec 1C-Bitrix: Web Environment installé. De plus, effectuez une copie de sauvegarde des paramÚtres du systÚme d'exploitation.



Exigences:



  • FrĂ©quence - 2 fois par jour;
  • Conservez des copies pour les 90 derniers jours;
  • La possibilitĂ© d'obtenir des fichiers individuels pour une date prĂ©cise, si nĂ©cessaire;
  • La sauvegarde doit ĂȘtre stockĂ©e dans un centre de donnĂ©es diffĂ©rent de VDS;
  • La possibilitĂ© d'accĂ©der Ă  la sauvegarde de n'importe oĂč (autre serveur, ordinateur local, etc.).


Un point important était la possibilité de créer rapidement des sauvegardes avec une consommation minimale d'espace supplémentaire et de ressources systÚme.



Nous ne parlons pas d'un instantané pour restaurer rapidement l'ensemble du systÚme, mais des fichiers et de la base de données et de l'historique des modifications.



Donnée initiale:



  • VDS sur la virtualisation XEN;
  • CentOS 7 OS;
  • 1C-Bitrix: environnement Web;
  • Site basĂ© sur "1C-Bitrix: Site Management", version Standard;
  • La taille du fichier est de 50 Go et augmentera;
  • La taille de la base de donnĂ©es est de 3 Go et augmentera.




Sauvegarde standard intégrée à 1C-Bitrix - exclue immédiatement. Il ne convient que pour les petits sites, car:



  • , , , 50 .
  • PHP, — , .
  • 90 .


La solution proposĂ©e par l'hĂ©bergeur est un disque de sauvegarde situĂ© dans le mĂȘme centre de donnĂ©es que VDS, mais sur un serveur diffĂ©rent. Vous pouvez travailler avec le disque via FTP et utiliser vos propres scripts, ou si ISPManager est installĂ© sur le VDS, puis via son module de sauvegarde. Cette option n'est pas adaptĂ©e en raison de l'utilisation du mĂȘme centre de donnĂ©es.



De tout ce qui précÚde, le meilleur choix pour moi est une sauvegarde incrémentielle selon mon propre scénario dans Yandex.Cloud (Object Storage) ou Amazon S3 (Amazon Simple Storage Service).



Cela nécessite:



  • accĂšs root Ă  VDS;
  • duplicitĂ© des utilitaires installĂ©s;
  • compte dans Yandex.Cloud.


La sauvegarde incrémentielle est une méthode dans laquelle seules les données modifiées depuis la derniÚre sauvegarde sont archivées.



duplicity est un utilitaire de sauvegarde qui utilise les algorithmes rsync et peut fonctionner avec Amazon S3.




Yandex.Cloud contre Amazon S3



Il n'y a aucune différence entre Yandex.Cloud et Amazon S3 dans ce cas. Yandex prend en charge la partie principale de l'API Amazon S3, vous pouvez donc l'utiliser en utilisant les solutions disponibles pour travailler avec S3. Dans mon cas, c'est l'utilitaire de duplicité.



Le principal avantage de Yandex peut ĂȘtre le paiement en roubles, s'il y a beaucoup de donnĂ©es, il n'y aura pas de lien avec le taux de change. En termes de vitesse, les centres de donnĂ©es europĂ©ens d'Amazon fonctionnent Ă  la mesure des centres russes de Yandex, par exemple, vous pouvez utiliser Francfort. J'utilisais auparavant Amazon S3 pour des tĂąches similaires, maintenant j'ai dĂ©cidĂ© d'essayer Yandex.



Configurer Yandex.Cloud



1. Vous devez créer un compte de facturation dans Yandex.Cloud. Pour ce faire, vous devez vous connecter à Yandex.Cloud via votre compte Yandex ou en créer un nouveau.



2. Créez "Cloud".





3. Dans le "Cloud", créez un "Catalogue".





4. Pour le "Catalogue", créez un "Compte de service".





5. Créez des clés pour le "Compte de service".





6. Gardez les clés, elles seront nécessaires à l'avenir.





7. Créez un "Bucket" pour le "Catalogue", il contiendra des fichiers.





8. Je recommande de fixer une limite et de choisir "Cold storage".





Configuration d'une sauvegarde planifiée sur le serveur



Ce guide suppose des compétences de base en administration.



1. Installez l'utilitaire de duplicité sur VDS



yum install duplicity




2. Créez un dossier pour les vidages mysql, dans mon cas, c'est / backup_db dans la racine VDS



3. Créez un dossier pour les scripts bash / backup_scripts et créez le premier script qui sauvegardera /backup_scripts/backup.sh



Contenu du 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. Exécutez le script pour la premiÚre fois et vérifiez le résultat, les fichiers doivent apparaßtre dans le "Bucket".



`which bash` /backup_scripts/backup.sh








5. Ajoutez un script à cron pour que l'utilisateur root soit exécuté 2 fois par jour, ou avec la fréquence dont vous avez besoin.



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




Récupération de données depuis Yandex.Cloud



1. Créez un dossier pour recovery / backup_restore



2. Créez un script bash pour recovery /backup_scripts/restore.sh



Je donne l'exemple le plus populaire de restauration d'un fichier spécifique:



#!`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. Exécutez le script et attendez le résultat.



`which bash` /backup_scripts/backup.sh




Dans le dossier / backup_restore /, vous trouverez le fichier index.php qui a été précédemment sauvegardé.



Vous pouvez définir des paramÚtres plus détaillés en fonction de vos besoins.



Inconvénient de la duplicité La



duplicité a un inconvénient: il n'y a aucun moyen de définir une limite d'utilisation du canal. Avec un canal normal, cela ne pose pas de problÚme, mais lorsque j'utilise un canal protégé DDoS avec un taux par jour, j'aimerais pouvoir fixer une limite de 1 à 2 mégabits.



Comme conclusion



La rĂ©servation dans Yandex.Cloud ou Amazon S3 fournit une copie indĂ©pendante du site et des paramĂštres du systĂšme d'exploitation, accessible Ă  partir de tout autre serveur ou ordinateur local. Dans le mĂȘme temps, cette copie n'est visible ni dans le panneau de contrĂŽle d'hĂ©bergement ni dans le panneau d'administration Bitrix, ce qui donne une sĂ©curitĂ© supplĂ©mentaire.



Avec le résultat le plus triste, vous pouvez créer un nouveau serveur et déployer le site à n'importe quelle date. Bien que la fonctionnalité la plus demandée soit la possibilité de se référer à un fichier pour une date précise.



Vous pouvez utiliser cette technique avec n'importe quel VDS ou serveurs et sites dĂ©diĂ©s sur n'importe quel moteur, pas seulement 1C-Bitrix. Le systĂšme d'exploitation peut Ă©galement ĂȘtre autre que CentOS, comme Ubuntu ou Debian.



All Articles