GNU/Linux >> Linux の 問題 >  >> Linux

mysqlhotcopy を使用した MySQL データベースのバックアップと復元


mysqlhotcopy は、MySQL のインストールに付属する perl スクリプトです。これにより、テーブルがロックされ、テーブルがフラッシュされてから、データベースのコピーが実行されます。また、mysqlhotcopy を使用して、scp を使用してバックアップを別のサーバーに直接自動的にコピーすることもできます
.

1. mysqlhotcopy コマンド:

[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold

上記の例では、/home/backup/database ディレクトリに MySQL データベースの sugarcrm のバックアップを実行します。

  • –allowold:このオプションは、新しいバックアップを作成する前に、古いバックアップの名前を {datbase-name}_old に変更します。この例では、sugarcrm バックアップが /home/backup/database に既に存在する場合、古いバックアップを /home/backup/database/sugarcrm_old に移動してから、/home/backup/database/sugarcrm を作成します。
  • –keepold:このオプションは、バックアップが完了した後、mysqlhotcopy に古いバックアップ (つまり、名前を変更した _old) を保持するように指示します。

以下に示すように、perldoc を使用して mysqlhotcopy ドキュメントを表示します。

[local-host]# perldoc mysqlhotcopy

以下は、mysqlhotcopy コマンドに渡すことができる利用可能なオプションです。

オプション

説明

–addtodest ターゲット ディレクトリの名前を変更しません (存在する場合)。ファイルを追加するだけ
–allowold ターゲットが存在する場合は中止しないでください。 _old サフィックスを追加して名前を変更
–checkpoint=db_name.tbl_name チェックポイント エントリの挿入
–chroot=パス mysqld が動作する chroot jail のベース ディレクトリ
–デバッグ デバッグログを書く
–ドライラン アクションを実行せずにレポート
–フラッシュログ すべてのテーブルがロックされた後にログをフラッシュ
–ヘルプ ヘルプ メッセージを表示して終了
–host=ホスト名 指定されたホストの MySQL サーバーに接続します
–keepold 完了時に以前の (名前が変更された) ターゲットを削除しない
–インデックスなし 完全なインデックス ファイルをバックアップに含めないでください
–パスワード[=パスワード] サーバーへの接続時に使用するパスワード
–port=port_num 接続に使用する TCP/IP ポート番号
–静かに エラー以外は沈黙
–正規表現 指定された正規表現に一致する名前を持つすべてのデータベースをコピー
–リセットマスター すべてのテーブルをロックした後、バイナリ ログをリセットします
–リセットスレーブ すべてのテーブルをロックした後、master.info ファイルをリセットします
–ソケット=パス localhost への接続用
–tmpdir=パス 一時ディレクトリ
–user=user_name, サーバーへの接続時に使用する MySQL ユーザー名
–バージョン バージョン情報を表示して終了

2. mysqlhotcopy コマンド出力:

上記の mysqlhotcopy コマンドは、次のような出力を表示します。

[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold
Locked 98 tables in 0 seconds.
Flushed tables (`sugarcrm`.`accounts`, `sugarcrm`.`accounts_audit`, `sugarcrm`.`accounts_bugs`) in 0 seconds.
Copying 295 files...
Copying indices for 0 files...
Unlocked tables.
mysqlhotcopy copied 98 tables (295 files) in 0 seconds (0 seconds overall).

デフォルトでは、MySQL データベースは /var/lib/mysql/{db-name} の下にあります。 mysqlhotcopy は、この既定のデータベースの場所からバックアップ ディレクトリにテーブル ファイルのバックアップを作成します。バックアップ ディレクトリ /home/backup/database/sugarrcrm には、実際の MySQL データベース /var/lib/mysql/sugarrcrm ディレクトリからのすべてのファイルの正確なコピーが含まれます。

[local-host]# ls -1 /var/lib/mysql/sugarcrm | wc -l
295
[local-host]# ls -1 /home/backup/database/sugarcrm | wc -l
295

すべてのテーブルには、拡張子が *.frm、*.MYD、および *.MYI の 3 つの対応するファイルがあることに注意してください。データベース ディレクトリには、データベース関連のパラメーターを含む db.opt ファイルも含まれています。

上記の例では、mysqlhotcopy が 98 の sugarcrm データベース テーブルのバックアップを作成していることがわかります。したがって、バックアップ ディレクトリ内のファイルの総数 =98 テーブル * 3 + 1 データベース構成ファイル =296 ファイル。

3. mysqlhotcopy から復元

mysqlhotcopy バックアップからバックアップを復元するには、ファイルをバックアップ ディレクトリから /var/lib/mysql/{db-name} ディレクトリにコピーするだけです。安全のために、ファイルを復元 (コピー) する前に必ず mysql を停止してください。ファイルを /var/lib/mysql/{db-name} にコピーしたら、mysql を再起動してください。

4. mysqlhotcopy のトラブルシューティング

DBD/mysql.pm が見つからない問題を解決するには? mysqlhotcopy は perl スクリプトであり、perl-DBD モジュールが必要です。 perl-DBD モジュールがインストールされていない場合、mysqlhotcopy の実行中に次のエラーを受け取る場合があります。

[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold
install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains:
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/5.8.8 .) at (eval 7) line 3.
Perhaps the DBD::mysql perl module hasn't been fully installed,
or perhaps the capitalisation of 'mysql' isn't right.
Available drivers: DBM, ExampleP, File, Proxy, Sponge.
at /usr/bin/mysqlhotcopy line 177

以下に示すように、perl-DBD パッケージを必ずインストールしてください。

[local-host]# rpm -ivh perl-DBD-MySQL-3.0007-1.fc6.i386.rpm
Preparing...                ########################################### [100%]
1:perl-DBD-MySQL         ########################################### [100%]

perl-DBD のインストールに関する問題を解決するにはどうすればよいですか? perl-DBD のインストール中に、次のエラー メッセージが表示される場合があります。

[local-host]# rpm -ivh perl-DBD-MySQL-3.0007-1.fc6.i386.rpm
rpmdb: Program version 4.3 doesn't match environment version
error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch
error: cannot open Packages index using db3 -  (-30974)
warning: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/redhat
rpmdb: Program version 4.3 doesn't match environment version
error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch
warning: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/redhat
error: Failed dependencies:
libmysqlclient.so.15 is needed by perl-DBD-MySQL-3.0007-1.fc6.i386
libmysqlclient.so.15(libmysqlclient_15) is needed by perl-DBD-MySQL-3.0007-1.fc6.i386

mysql.com から MySQL-shared-compat をダウンロードしてインストールすると、perl-DBD パッケージのインストール中に上記のエラーが解決されます。

[local-host]# rpm -ivh MySQL-shared-compat-5.1.25-0.rhel5.i386.rpm
Preparing...                ########################################### [100%]
1:MySQL-shared-compat    ########################################### [100%]

MySQL データベースのバックアップまたは復元に他の方法を使用していますか?コメントを残してください。


Linux
  1. Postgresデータベースをバックアップおよび復元する方法

  2. コマンドラインを使用してMySQLデータベースをバックアップおよび復元する方法

  3. PostgreSQLでデータベースをバックアップおよび復元する方法

  1. MySQL:mysqldumpを使用してデータベースをバックアップ(ダンプ)および復元する方法

  2. SSHのコマンドを使用してMySQLデータベースを復元するにはどうすればよいですか?

  3. MySQLユーザーとデータベースの基本

  1. MySQLデータベースをバックアップおよび復元する方法

  2. MS SQLServer2008データベースのバックアップと復元

  3. MySQLデータベースをインポートする