MySQLデータベースのバックアップにmysqldumpまたはmysqlhotcopyを使用する必要がありますか?


14

MySQLデータベースで実行しているWordPressブログがあり、定期的にバックアップしたい。mysqldumpプログラムまたはmysqlhotcopyスクリプトを使用してバックアップを作成する方が良いでしょうか?それぞれの長所と短所は何ですか?他に考慮すべきオプションはありますか?

回答:


5

私は現在、データベースのバックアップを維持するためにmysqldumpを使用していることを伝えることができます。これは、誰かが自分のWebページを削除した場合に、最大1週間前から復元できるように、毎週のバックアップを維持することが私の目標であるためです。

これの良い点は、それが基本的なテキストファイルであるため、MySQLを使用して任意のコンピューターにインポートし、ロードして、欠落しているデータを検索できることです。注:必要なものを取得するために、スクリプトで使用しているコマンドは次のとおりです。

mysqldump --databases databaseName > /file/path

これ--databasesが、mysqldumpがCREATE DATABASE IF NOT EXISTヘッダーをダンプするために必要な場所にインポートできるようにするものです。

この方法は私には有効ですが、他の目的のためにもっと良い方法があると確信しています。また、バックアップソリューションについては、少なくとも別のコンピューター、できればオフサイト(クラウド内)に保存することをお勧めします。


5

「WordPressデータベースバックアップ(WP-DB-Backup)」というWordPressプラグインを使用することを検討します。これは、Wordpressデータベースバックアップガイドにも記載されています。このプラグインは、スケジュールに従ってデータベースをバックアップし、それをメールで送信できます(小さなデータベースを想定しています)。ローカルでバックアップすることもできます。コメントスパムとリビジョンを除外して、DBを小さくすることができます

制御はしませんが、実装は簡単です。

MySQLダンプを使用すると、最大限の制御が可能になります。ホスティングサービスも制限要因になる可能性があります。一部のホストは、cronジョブを実行したり、mysqldumpコマンドを実行したりするアクセス権を与えません。


4

提案#1

MySQLインスタンスのバックアップを行う場合、サーバーの負荷を課したり、ディスクI / Oを増やしたりしても本番データベースに影響を与えないようにMySQL Replicatonをセットアップするのが最善です。

MySQLレプリケーションをセットアップしたら、スレーブでmysqldumpを実行する限り、さまざまな方法でmysqldumpのスクリプトを作成できます(さまざまな手法については、DBA StackExchangeの投稿を参照してください)。

提案#2

MySQLレプリケーション用に別のサーバーをセットアップできず、すべてのデータがInnoDBである場合、ポイントインタイムmysqldumpを実行する必要があります。これは--single-transaction、mysqldumpのオプションを使用して行われます。したがって、午前0時にmysqldumpを実行し、バックアップが午前12時15分に終了した場合、mysqldumpの復元時の出力は午前12:00時点のデータを反映します。

提案#3

MySQLバックアップに使用できる別のプログラムは、PerconaのXtraBackupです。

XtraBackupは、rsyncのように動作しますが、目的を指示する包括的なツールです。すべてのInnoDBデータとテーブルスペースのコピーを開始できます。内部でチェックポイントを作成し、InnoDBクラッシュリカバリをインプレースで実行して、完全なポイントインタイムバックアップを取得することができます。XtraBackupには、増分バックアップの作成を可能にする追加機能もあります。別の追加機能は、InnoDBログファイルの作成であり、これもインプレースクラッシュリカバリによって構築されます。MyISAMテーブルのフリーズコピーを提供するラッパーソフトウェアもあります。

MySQLインスタンスのバックを実行しますが、明確な違いがあります。バックアップの特定時点は、バックアップが開始されたときではなく、いつ完了したかに基づいています。したがって、真夜中にXtraBackupを実行し、バックアップが午前12時15分に終了した場合、復元されたmysqldumpの出力は午前12時15分時点のデータを反映します。


2

テーブルのストレージエンジンに依存します。このMySQLマニュアルページに準拠したARCHIVEおよびMyISAMテーブルでのみ機能し、同じマシンで実行する必要があります(つまり、ローカルソケットまたはTCP / IPを使用しない)

MySQLはまた言う

サーバーでバックアップを実行していて、テーブルがすべてMyISAMテーブルである場合は、代わりにmysqlhotcopyを使用することを検討してください。これは、より高速なバックアップと復元を実現できるためです。


1

多くの既存のmySQLバックアップスクリプトの1つを使用して、適切に作成するための苦痛を軽減することをお勧めします。

「automysqlbackup」を使用します。これは、サーバー上のcronジョブとして設定できるオープンソースのシェルスクリプトです。:それはほとんど考えられるすべてのバックアップの状況について説明しhttp://sourceforge.net/projects/automysqlbackup/を。それは数年間私のために完璧に働いてきました-徹底的にお勧めします。


1

mysqlhotcopyは、'05年頃のPerlスクリプトです。したがって、PerlおよびさまざまなPerlに依存関係が追加されます。これを渡します。

mysqldumpは、MySQLとともに配布され、積極的に保守されているCプログラムです。-xオプションを追加すると、テーブルがロックされるため、黄金になります。

私は個人的にこのスクリプトをcronで持っています(手動で実行したい場合は `エスケープを削除する必要があります)、それは私のデータベースのそれぞれをローカルファイルにバックアップし、すべてのデータベースの完全なダンプ。

また、そこに複数のデータベースがある場合は、それらの許可もダンプする必要があります。Maatkitがお手伝いしますmk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sql。グラントテーブルをバックアップし、再度インポートする準備を整えてください。


0

また、InterworxやEnsimなどの多くのサーバー管理ツールがmysqldumpを使用してデータベースをバックアップし、次に単純なmysqlコマンドを使用して復元することも知っています。これから、これが最良の方法の1つであると推測します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.