Inkrementelle VDS-Sicherung mit einer Site auf 1C-Bitrix in Yandex.Cloud

Ich musste die Site zweimal täglich auf 1C-Bitrix: Site Management sichern (Dateien und MySQL-Datenbanken) und den Änderungsverlauf 90 Tage lang speichern.



Die Site befindet sich auf einem VDS unter CentOS 7, auf dem 1C-Bitrix: Web Environment installiert ist. Erstellen Sie außerdem eine Sicherungskopie der Betriebssystemeinstellungen.



Bedarf:



  • Häufigkeit - 2 mal am Tag;
  • Bewahren Sie Kopien für die letzten 90 Tage auf.
  • Die Möglichkeit, bei Bedarf einzelne Dateien für ein bestimmtes Datum abzurufen;
  • Das Backup muss in einem anderen Rechenzentrum als VDS gespeichert werden.
  • Die Möglichkeit, von überall auf das Backup zuzugreifen (von einem anderen Server, einem lokalen Computer usw.).


Ein wichtiger Punkt war die Möglichkeit, schnell Backups mit minimalem Verbrauch an zusätzlichem Speicherplatz und Systemressourcen zu erstellen.



Es handelt sich nicht um einen Snapshot zur schnellen Wiederherstellung des gesamten Systems, sondern um Dateien und die Datenbank sowie den Änderungsverlauf.



Ausgangsdaten:



  • VDS zur XEN-Virtualisierung;
  • CentOS 7 OS;
  • 1C-Bitrix: Webumgebung;
  • Site basierend auf "1C-Bitrix: Site Management", Standardversion;
  • Die Dateigröße beträgt 50 GB und wächst.
  • Die Datenbankgröße beträgt 3 GB und wird wachsen.




In 1C-Bitrix integriertes Standard-Backup - sofort ausgeschlossen. Es ist nur für kleine Websites geeignet, weil:



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


Die vom Hoster angebotene Lösung ist eine Sicherungsdiskette, die sich im selben Rechenzentrum wie VDS befindet, jedoch auf einem anderen Server. Sie können mit der Festplatte über FTP arbeiten und Ihre eigenen Skripte verwenden. Wenn ISPManager auf dem VDS installiert ist, dann über dessen Sicherungsmodul. Diese Option ist aufgrund der Verwendung desselben Rechenzentrums nicht geeignet.



Aus all diesen Gründen ist die beste Wahl für mich eine inkrementelle Sicherung gemäß meinem eigenen Szenario in Yandex.Cloud (Objektspeicher) oder Amazon S3 (Amazon Simple Storage Service).



Dafür braucht man:



  • Root-Zugriff auf VDS;
  • installierte Utility-Duplizität;
  • Konto in Yandex.Cloud.


Inkrementelle Sicherung ist eine Methode, bei der nur Daten archiviert werden, die seit der letzten Sicherung geändert wurden.



duplicity ist ein Sicherungsprogramm, das rsync-Algorithmen verwendet und mit Amazon S3 arbeiten kann.




Yandex.Cloud gegen Amazon S3



In diesem Fall gibt es keinen Unterschied zwischen Yandex.Cloud und Amazon S3. Yandex unterstützt den Hauptteil der Amazon S3-API, sodass Sie mit den Lösungen arbeiten können, die für die Arbeit mit S3 verfügbar sind. In meinem Fall ist dies das Dienstprogramm für die Duplizität.



Der Hauptvorteil von Yandex kann die Zahlung in Rubel sein. Wenn viele Daten vorhanden sind, besteht kein Zusammenhang mit dem Wechselkurs. In Bezug auf die Geschwindigkeit arbeiten die europäischen Rechenzentren von Amazon entsprechend den russischen bei Yandex. Sie können beispielsweise Frankfurt verwenden. Früher habe ich Amazon S3 für ähnliche Aufgaben verwendet, jetzt habe ich mich für Yandex entschieden.



Yandex.Cloud konfigurieren



1. Sie müssen in Yandex.Cloud ein Abrechnungskonto erstellen. Dazu müssen Sie sich über Ihr Yandex-Konto bei Yandex.Cloud anmelden oder ein neues erstellen.



2. Erstellen Sie "Cloud".





3. Erstellen Sie einen "Katalog" in der "Cloud".





4. Erstellen Sie für den "Katalog" ein "Dienstkonto".





5. Erstellen Sie Schlüssel für das "Dienstkonto".





6. Bewahren Sie die Schlüssel auf, sie werden in Zukunft benötigt.





7. Erstellen Sie einen "Bucket" für den "Katalog", der Dateien enthält.





8. Ich empfehle, ein Limit festzulegen und "Cold Storage" zu wählen.





Konfigurieren einer geplanten Sicherung auf dem Server



In diesem Handbuch werden grundlegende Verwaltungsfähigkeiten vorausgesetzt.



1. Installieren Sie das Duplizitätsdienstprogramm auf VDS



yum install duplicity




2. Erstellen Sie einen Ordner für MySQL-Dumps, in meinem Fall / backup_db im VDS-Stammverzeichnis.



3. Erstellen Sie einen Ordner für Bash-Skripte / backup_scripts und erstellen Sie das erste Skript, das /backup_scripts/backup.sh sichert.



Inhalt des Skripts:



#!`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. Führen Sie das Skript zum ersten Mal aus und überprüfen Sie das Ergebnis. Dateien sollten im "Bucket" angezeigt werden.



`which bash` /backup_scripts/backup.sh








5. Fügen Sie cron ein Skript hinzu, damit der Root-Benutzer zweimal täglich oder mit der von Ihnen benötigten Häufigkeit ausgeführt wird.



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




Datenwiederherstellung von Yandex.Cloud



1. Erstellen Sie einen Ordner für die Wiederherstellung / backup_restore.



2. Erstellen Sie ein Bash-Skript für die Wiederherstellung. /Backup_scripts/restore.sh



Ich gebe das beliebteste Beispiel für die Wiederherstellung einer bestimmten Datei:



#!`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. Führen Sie das Skript aus und warten Sie auf das Ergebnis.



`which bash` /backup_scripts/backup.sh




Im Ordner / backup_restore / finden Sie die zuvor gesicherte Datei index.php.



Sie können detailliertere Einstellungen vornehmen, die Ihren Anforderungen entsprechen.



Nachteil der Duplizität Duplizität



hat einen Nachteil: Es gibt keine Möglichkeit, ein Kanalnutzungslimit festzulegen. Bei einem regulären Kanal stellt dies kein Problem dar. Wenn Sie jedoch einen DDoS-geschützten Kanal mit einer Rate pro Tag verwenden, möchte ich ein Limit von 1-2 Megabit festlegen können.



Als Schlussfolgerung



Die Reservierung in Yandex.Cloud oder Amazon S3 bietet eine unabhängige Kopie der Site- und Betriebssystemeinstellungen, auf die von jedem anderen Server oder lokalen Computer aus zugegriffen werden kann. Gleichzeitig ist diese Kopie weder im Hosting-Control-Panel noch im Bitrix-Admin-Panel sichtbar, was zusätzliche Sicherheit bietet.



Mit dem traurigsten Ergebnis können Sie einen neuen Server erstellen und die Site für ein beliebiges Datum bereitstellen. Die am häufigsten nachgefragte Funktion ist jedoch die Möglichkeit, für ein bestimmtes Datum auf eine Datei zu verweisen.



Sie können diese Technik mit allen VDS- oder dedizierten Servern und Sites auf allen Engines verwenden, nicht nur mit 1C-Bitrix. Das Betriebssystem kann auch ein anderes als CentOS sein, z. B. Ubuntu oder Debian.



All Articles