FTPリポジトリでMySQLデータベースとWebサーバーを自動的にバックアップする方法



この記事には、2006年にNIX Craftによって提案された最も古い方法の1つが含まれています。 私の意見では、この記事は、初心者または「ランダム」(他のタスクに加えてデータベースを管理することを強制される)システム管理者が従うことができる基本的な考え方を含んでいるという点で価値があります。

私の意見では、この記事に記載されている基本原則を理解することは、ピラフを作る原則を理解することに似ています。 かなり広い範囲でピラフを試すことができます。 主なことは、粘着性のおでご飯をoilでて、脂肪の多い柔らかい肉の代わりにピラフに入れないことです、それは明確ではありません。 同様に、MySQLデータベースのバックアップ戦略は大幅に制限されますが、基本-フルバックアップと増分バックアップを組み合わせ、個々のタスクの頻度を設定し、正しい実行を制御する-は、使用するツールに関係なく変更されません。

元の記事はここにあります: http : //www.cyberciti.biz/tips/how-to-backup-mysql-databases-web-server-files-to-a-ftp-server-automatically.html 次は翻訳テキストそのものです。



* * *



これは、専用またはVPSサーバーで独自のMySQL Webサーバーとデータベース管理システムを実行する管理者向けのシンプルなバックアップソリューションです。 ほとんどの専用ホスティングプロバイダーは、専用ネットワークストレージ(NAS)またはFTPサーバーへのバックアップサービスをユーザーに提供します。 これらのプロバイダーは、プライベート仮想ネットワークを介してユーザーを過度に機能するストレージアレイにバインドします。 私は多くのサーバープロジェクトを管理できたため、代わりに独自の自動化ソリューションを提供する準備ができました。 シェルスクリプトだけが必要な場合は、ここに移動します(適切な入力を提供するだけで、すぐにFTPバックアップスクリプトが生成されます。PHPスクリプトジェネレーターコードを取得することもできます)。



tarユーティリティを使用した増分バックアップ


磁気テープまたはストリーマー上にバックアップを作成できます(またはストリーマーまたはテープと同様に任意のファイルで作業できます)。 しかし、今日、このソリューションは機能を失っています。 GNU tarユーティリティでは、-gオプションを使用して増分バックアップを作成できます。 次の例では、tarコマンドは/ var / www / html、/ home、および/ etcディレクトリの増分コピーを作成します。 コンソールで実行します。

#tar -g /var/log/tar-incremental.log -zcvf /backup/today.tar.gz / var / www / html / home / etc

ここで、-gスイッチは、バックアップから新しい(増分)情報を作成/出力/抽出し、/ var / log / tar-incremental.logファイルに入れます。



MySQLデータベースバックアップの作成


mysqldumpクライアントアプリケーションは、データベース(テーブル)、テーブル、および個々のMySQLデータのダンプまたはバックアップ用です。 たとえば、次のコマンドは特定のDBMSのデータベースのリストを表示します。

$ mysql -u root -h localhost -p -Bse 'show databases'

出力結果(例として示す):

ブルーテログ

ケーキ

よくある質問

mysql

phpads

お知らせ

テストする

tmp

バン

wp

これで、mysqldumpコマンドを使用して各データベースをバックアップできます。 たとえば、faqsデータベースの場合、コマンドは次のようになります。

$ mysqldump -u root -h localhost -pmypassword faqs | gzip -9> faqs-db.sql.gz



プロジェクトの簡単なバックアップスキームを作成する


バックアップの保存にリモートネットワークストレージ(FTPまたはNAS)を使用する主な利点は、データ損失に対する追加の保護です。 複数のプロトコルを使用してバックアップを転送できます。

  1. FTP
  2. Ssh
  3. RSYNC
  4. さまざまな商用ソリューション


ここでは、FTPバックアップ用に設計されたソリューションのみを説明します。 このソリューションの基礎となるバックアップ戦略の背後にある考え方は次のとおりです。





テスト構成のパラメーター


サーバー===> ftp / nasサーバー

IP:202.54.1.10 ===> 208.111.2.5

テスト用のFTPアカウントに関する次の詳細情報を想定します。



バックアップを配置する場所:

=> / home / nixcraft / full / dd-mm-yy / files-complete;

=> /ホーム/ nixcraft /増分/ dd-mm-yy /ファイル-増分。

ここで、dd-mm-yyはバックアップの日付です。



tarユーティリティを使用した自動バックアップ


これで、tarおよびmysqldumpコマンドを使用してMySQLファイルとデータベースをバックアップする方法がわかりました。 これらのコマンドを単一のスクリプトにリンクすることで、手順全体を一度だけ自動化するときが来ました。

  1. 始めるために、スクリプトはMySQLサーバーとファイルシステムの両方からすべてのデータを/ backupという一時ディレクトリに収集します。 これを行うには、tarコマンドを使用します。
  2. 次に、スクリプトはFTP経由でストレージサーバーに接続し、上記で説明したディレクトリ構造を作成します。
  3. このスクリプトは、/ backupディレクトリからFTPサーバーにファイルをダンプします。
  4. 一時ファイルは/ backupディレクトリから削除されます。
  5. FTPへのバックアップが何らかの理由で中断された場合、または失敗した場合、スクリプトは電子メールで通知します。


スクリプトを正しく使用するには、次のパッケージをインストールする必要があります(ncftpユーティリティはFTPクライアントとして使用されます)。



ftpbackup.shと呼ばれるこの例のリストを以下に示します。

#!/ bin / sh

#システム+ MySQLバックアップスクリプト

#完全バックアップ日-日(その日の残りは増分バックアップを行います)

#Copyright©2005-2006 nixCraft < www.cyberciti.biz/fb >

#このスクリプトは、GNU GPLバージョン2.0以降でライセンスされています

bash.cyberciti.biz/backup/wizard-ftp-script.phpにより自動生成



###システム設定###

DIRS = "/ home / etc / var / www"

BACKUP = / tmp / backup。$$

NOW = $(日付+ "%d-%m-%Y")

INCFILE = "/ root / tar-inc-backup.dat"

DAY = $(日付+ "%a")

FULLBACKUP = "Sun"

### MySQLセットアップ###

MUSER = "admin"

MPASS = "mysqladminpassword"

MHOST = "localhost"

MYSQL = "$(mysql)"

MYSQLDUMP = "$(mysqldump)"

Gzip = "$(which gzip)"

### FTPサーバーのセットアップ###

FTPD = "/ home / vivek / incremental"

FTPU = "vivek"

FTPP = "ftppassword"

FTPS = "208.111.11.2"

NCFTP = "$(どのncftpput)"

###その他のもの###

EMAILID = "admin@theos.in"

###ファイルシステムのバックアップを開始###

[! -d $ BACKUP] && mkdir -p $ BACKUP ||:

###完全バックアップを作成するかどうかを確認します###

if ["$ DAY" == "$ FULLBACKUP"]; それから

FTPD = "/ home / vivek / full"

FILE = "fs-full- $ NOW.tar.gz"

tar -zcvf $ BACKUP / $ FILE $ DIRS

他に

i = $(日付+ "%Hh%Mm%Ss")

FILE = "fs-i- $ NOW- $ i.tar.gz"

tar -g $ INCFILE -zcvf $ BACKUP / $ FILE $ DIRS

fi

### MySQLバックアップを開始###

#すべてのデータベース名を取得

DBS = "$($ MYSQL -u $ MUSER -h $ MHOST -p $ MPASS -Bse 'show databases')"

$ DBSのdb

する

FILE = $ BACKUP / mysql- $ db。$ NOW-$(日付+ "%T")。Gz

$ MYSQLDUMP -u $ MUSER -h $ MHOST -p $ MPASS $ db | $ GZIP -9> $ファイル

やった

### FTPを使用してバックアップをダンプする###

#ncftpを使用してFTPバックアップを開始

ncftp -u "$ FTPU" -p "$ FTPP" $ FTPS << EOF

mkdir $ FTPD

mkdir $ FTPD / $ NOW

cd $ FTPD / $ NOW

lcd $ BACKUP

mput *

やめる

Eof

### FTPバックアップが失敗したかどうかを調べる###

if ["$?" == "0"]; それから

rm -f $ BACKUP / *

他に

T = / tmp / backup.fail

echo "日付:$(日付)"> $ T

echo "ホスト名:$(ホスト名)" >> $ T

echo "バックアップに失敗しました" >> $ T

mail -s "BACKUP FAILED" "$ EMAILID" <$ T

rm -f $ T

fi



cronユーティリティを使用して自動定期バックアップスクリプト実行を設定する方法


必要な時間と周期のパラメーターを使用してcronタスクを追加するだけです。

13 0 * * * /home/admin/bin/ftpbackup.sh> / dev / null 2>&1



翻訳者からの短い後書きとして。

データバックアップタスクはシステム管理者にとって最も頻繁に懸念される問題の1つであるため、変更や変更がなくても、この分野で成功したスクリプトの適用可能性は5、10、または20年間非常に高くなることがあります。 特に、最初にWindowsでのみ作成された記事に記載されているスクリプトと同様のスクリプトは、研究所のサーバーの1つで数年間機能しましたが、それをより最新の高度なGUIプログラムに置き換えました。



真面目な管理者は、多くの労力をかけずに独自にそのようなスクリプトを作成できることは明らかです。 私の目標は、よく知られた経済的理由によりコンピューターデータベースを使用せざるを得なかった科学者が、コマンド言語レベルでOSおよびDBMSとのやり取りのタスクを構築する方法を学んだロジックを示すことでした。 スクリプトとデータベース管理のみを習得しているユーザーは、このような例が非常に役立ちます。



これらはいわばイデオロギー上の考慮事項です。 外国のスクリプトは、特定の問題を指数関数的に解決するチェスのスケッチと非常に正確に比較できます。 上記のような古典的なソリューションは、独立した実験のための実績のある分野になり、GUIを備えた製品の機能に満足しておらず、バッチコマンドのフルパワーを実現しようとする人々に論理と思考の方向を示すことができます。 したがって、私にとって重要なのはそれほど前ではなく、逆に、提案されたソリューションの有効性、その内部ロジックと各アイテムの説明可能性です。 これをベースとして、別のDBMSまたは異なる範囲のタスク用に独自の「スケッチ」を簡単に作成できます。 一度設定された思考の一般的なロジックは、将来、管理者または開発者の兵器庫に貴重な追加になるでしょう。



理解のしやすさ、記述された基本条件(記事の冒頭で説明した)の実現、およびこのスクリプトのサイズが小さいため、MySQLデータのバックアップに関するさまざまな実験のベースとして推奨できます。 まあ、そしてこの「研究」が完全に時代遅れなら-まあ、多分それはそうです。 現在のプログラマやシステム管理者が現在同じタスクのために提供しているソリューションと比較することは興味深いでしょう。 上記の製品を使用できる独自のスクリプトを使用したコメントへようこそ。



All Articles