すべてのサーバーのバックアップを別のサーバーに保存するにはどうすればよいですか?

すべてのサーバーのバックアップを別のサーバーに保存するにはどうすればよいですか?

バックアップに使用する予定の新しいサーバーがあります。このサーバーに、gziped他の 13 台のサーバーすべての DB を保存したいと考えています。各サーバーから 1 時間ごとにバックアップを作成し、バックアップ サーバーに保存する最適な方法は何ですか?

サーバー SO Linux Centos
13 台のサーバーすべてに WHM/Cpanel が搭載されています。
バックアップ サーバーには Centos 7.7 のみが搭載されています (コントロール パネルはありません)
。cpanel では 1 時間ごとのバックアップが許可されていないため、cpanel を使用してバックアップを作成できませんでした。

答え1

rsyncこれはとで実現できますcron

各サーバーで、次の行を含むファイル backup.sh を作成します。

#!/bin/bash
mysqldump > /etc/backups/mysqldump.sql
rsync /etc/backups/mysqldump.sql -e ssh <username>@<ip-address-of-backup-server>:/<path-to your-backup-folder>/<server-name>/"$(date "+%Y-%m-%d-%H")"-backup.sql

確認するMySQL ドキュメントダンプ オプションの場合 (またはデータベースをダンプするための好みの方法を使用します)。<server-name>バックアップ元のサーバーの何らかの識別子である必要があります。

ファイルを に入れます/etc/cron.hourly。異なるタイミングが必要な場合は、他の/etc/cron.*フォルダをチェックするか、crontab ジェネレーターコマンドを使用しますcrontab -e

/etc/backups(または同等のもの)が存在することを確認するか、作成します( mkdir)。

よくある落とし穴:

  1. 各サーバーに SSH キーを設定して、rsyncバックアップ サーバーに接続したり、権限が制限された別のユーザーを設定したりできるようにしてください。必要なセキュリティの種類によって異なります。

  2. スクリプトが実行可能であることを確認してくださいbackup.sh

  3. backup.shフォルダーに置くと、/etc/cron.*ルート権限で実行されます。何らかの理由でこれを望まない場合は、crontab -e希望するユーザーとしてオプションを使用してください。

関連情報