Yandex.Cloudの1C-Bitrix上のサイトを使用したインクリメンタルVDSバックアップ

サイトを1C-Bitrix:Site Managementに1日2回(ファイルとmysqlデータベース)バックアップし、変更の履歴を90日間保存する必要がありました。



このサイトは、1C-Bitrix:WebEnvironmentがインストールされたCentOS7を実行しているVDS上にあります。さらに、OS設定のバックアップコピーを作成します。



要件:



  • 頻度-1日2回。
  • 過去90日間コピーを保管してください。
  • 必要に応じて、特定の日付の個々のファイルを取得する機能。
  • バックアップは、VDSとは異なるデータセンターに保存する必要があります。
  • どこからでも(別のサーバー、ローカルコンピューターなど)バックアップにアクセスする機能。


重要な点は、追加のスペースとシステムリソースの消費を最小限に抑えて、バックアップをすばやく作成できることでした。



システム全体をすばやく復元するためのスナップショットについてではなく、ファイルとデータベース、および変更の履歴について説明します。



初期データ:



  • XEN仮想化上のVDS;
  • CentOS 7 OS;
  • 1C-Bitrix:Web環境;
  • 「1C-Bitrix:サイト管理」に基づくサイト、標準バージョン。
  • ファイルサイズは50GBで、大きくなります。
  • データベースのサイズは3GBで、大きくなります。




1C-Bitrixに組み込まれている標準バックアップ-すぐに除外されます。次の理由により、小規模なサイトにのみ適しています。



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


ホスティング事業者が提供するソリューションは、VDSと同じデータセンターにあるが、サーバーが異なるバックアップディスクです。FTPを介してディスクを操作し、独自のスクリプトを使用できます。ISPManagerがVDSにインストールされている場合は、そのバックアップモジュールを使用します。同じデータセンターを使用しているため、このオプションは適していません。



上記のすべてから、私にとって最良の選択は、Yandex.Cloud(オブジェクトストレージ)またはAmazon S3(Amazon Simple Storage Service)での私自身のシナリオに従った増分バックアップです。



これには以下が必要です。



  • VDSへのルートアクセス。
  • インストールされたユーティリティの重複。
  • Yandex.Cloudのアカウント。


インクリメンタルバックアップは、最後のバックアップ以降に変更されたデータのみをアーカイブする方法です。



duplicityは、rsyncアルゴリズムを使用し、AmazonS3で動作できるバックアップユーティリティです。




Yandex.CloudとAmazonS3



この場合、Yandex.CloudとAmazonS3の間に違いはありません。YandexはAmazonS3 APIの主要部分をサポートしているため、S3での作業に利用できるソリューションを使用してYandexで作業できます。私の場合、これは重複ユーティリティです。



Yandexの主な利点は、ルーブルでの支払いです。データが多い場合、為替レートへのリンクはありません。速度の点では、AmazonのヨーロッパのデータセンターはYandexのロシアのデータセンターと釣り合って機能します。たとえば、フランクフルトを使用できます。以前は同様のタスクにAmazonS3を使用していましたが、今はYandexを試すことにしました。



Yandex.Cloudの構成



1.Yandex.Cloudで請求先アカウントを作成する必要があります。これを行うには、Yandexアカウントを介してYandex.Cloudにログインするか、新しいアカウントを作成する必要があります。



2.「クラウド」を作成します。





3.「クラウド」に「カタログ」を作成します。





4.「カタログ」には、「サービスアカウント」を作成します。





5.「サービスアカウント」のキーを作成します。





6.キーを保管してください。将来必要になります。





7.「カタログ」の「バケット」を作成します。これにはファイルが含まれます。





8.制限を設定し、「冷蔵」を選択することお勧めします。





サーバーでのスケジュールされたバックアップの構成



このガイドは、基本的な管理スキルを前提としています。



1.重複ユーティリティをVDSにインストールします



yum install duplicity




2.mysqlダンプ用のフォルダーを作成します私の場合はVDSルートの/ backup_dbです。3。bashスクリプト/ backup_scripts用のフォルダーを作成し、/ backup_scripts /backup.shをバックアップする最初のスクリプトを作成します



スクリプトの



内容:



#!`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.スクリプトを初めて実行し、結果を確認します。ファイルは「バケット」に表示されます。



`which bash` /backup_scripts/backup.sh








5.ルートユーザーが1日に2回、または必要な頻度で実行されるように、スクリプトをcronに追加します。



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




Yandex.Cloudからのデータリカバリ



1.リカバリ用のフォルダを作成します/ backup_restore2



リカバリ用のbashスクリプトを作成します/backup_scripts/restore.sh



特定のファイルを復元する最も一般的な例を示します。



#!`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.スクリプトを実行して、結果を待ちます。



`which bash` /backup_scripts/backup.sh




/ backup_restore /フォルダーには、以前にバックアップされたindex.phpファイルがあります。



ニーズに合わせて、より詳細な設定を行うことができます。



重複のデメリット重複に



は1つのデメリットがあります。チャネルの使用制限を設定する方法がありません。通常のチャンネルでは問題ありませんが、DDoSで保護された1日あたりのレートレーティングのチャンネルを使用する場合は、1〜2メガビットの制限を設定できるようにしたいと思います。



結論として



Yandex.CloudまたはAmazonS3で予約すると、サイトとOS設定の独立したコピーが提供され、他のサーバーまたはローカルコンピューターからアクセスできます。同時に、このコピーはホスティングコントロールパネルにもBitrix管理パネルにも表示されないため、セキュリティが強化されます。



最も悲しい結果で、新しいサーバーを構築し、任意の日付でサイトを展開できます。最も要求される機能は、特定の日付のファイルを参照する機能ですが。



この手法は、1C-Bitrixだけでなく、任意のVDSまたは任意のエンジンの専用サーバーおよびサイトで使用できます。OSは、UbuntuやDebianなどのCentOS以外にすることもできます。



All Articles