このユーティリティーは MySQL 5.6.20 で非推奨で、MySQL 5.7 で削除されます。
mysqlhotcopy はもともと Tim Bunce によって書かれ、提供された Perl スクリプトです。FLUSH TABLES
、LOCK TABLES
、および cp
または scp
を使用してデータベースのバックアップを作成します。データベースまたは単一のテーブルのバックアップを作成するための高速な方法ですが、データベースディレクトリが置かれているのと同じマシンでしか実行できません。mysqlhotcopy は MyISAM
テーブルおよびARCHIVE
テーブルのみに機能します。Unix で実行されます。
mysqlhotcopy を使用するには、バックアップを行うテーブルのファイルへの読み取りアクセス、これらのテーブルの SELECT
権限、RELOAD
権限 (FLUSH TABLES
を実行できるように)、および LOCK TABLES
権限 (テーブルをロックできるように) を持っていなければなりません。
shell> mysqlhotcopy db_name [/path/to/new_directory]
shell> mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory
指定されたデータベース内で正規表現と一致するテーブルをバックアップします。
shell> mysqlhotcopy db_name./regex/
テーブル名の正規表現は、チルダ (「~
」) をプリフィクスとして使用することで否定できます。
shell> mysqlhotcopy db_name./~regex/
mysqlhotcopy は次のオプションをサポートします。これらはコマンド行またはオプションファイルの [mysqlhotcopy]
グループおよび [client]
グループで指定できます。MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.6「オプションファイルの使用」を参照してください。
表 4.17 mysqlhotcopy のオプション
オプション名 | 説明 |
---|---|
--addtodest | ターゲットディレクトリの名前変更をせず (存在する場合)、単にファイルを追加 |
--allowold | ターゲットが存在する場合中止せず、_old サフィクスを追加することで名前変更 |
--checkpoint | チェックポイントエントリを挿入 |
--chroot | mysqld が動作する chroot ジェイルのベースディレクトリ |
--debug | デバッグのログを書き込み |
--dryrun | アクションを実行せずにレポート |
--flushlog | すべてのテーブルがロックされたあとにログをフラッシュ |
--help | ヘルプメッセージを表示して終了 |
--host | 指定されたホスト上で MySQL サーバーに接続 |
--keepold | 終了後に以前の (名前変更された) ターゲットを消去しない |
--method | ファイルをコピーする方法 |
--noindices | フルインデックスファイルをバックアップに含めない |
--old_server | FLUSH TABLES tbl_list WITH READ LOCK をサポートしないサーバーに接続しない |
--password | サーバーに接続する際に使用するパスワード |
--port | 接続に使用する TCP/IP ポート番号 |
--quiet | エラー発生時以外サイレント |
--regexp | 与えられた正規表現と一致する名前を持つデータベースをすべてコピー |
--resetmaster | テーブルをすべてロックしたあとにバイナリログをリセット |
--resetslave | テーブルをすべてロックしたあとに master.info ファイルをリセット |
--socket | ローカルホストへの接続で、使用する Unix ソケットファイル |
--tmpdir | 一時ディレクトリ |
--user | サーバーへの接続時に使用する MySQL ユーザー名 |
-
ヘルプメッセージを表示して終了します。
-
ターゲットディレクトリの名前変更をせず (存在する場合)、単にファイルを追加します。
-
ターゲットが存在する場合、中止せず
_old
サフィクスを追加することで名前変更します。 -
指定されたデータベース
db_name
とテーブルtbl_name
にチェックポイントエントリを挿入します。 -
mysqld が稼働している chroot jail のベースディレクトリ。
path
値は mysqld に与えられる--chroot
オプションと一致するようにしてください。 -
デバッグ出力を有効化します。
-
アクションを実行せずにレポートします。
-
すべてのテーブルがロックされたあとにログをフラッシュします。
-
--host=
,host_name
-h
host_name
ローカルサーバーへの TCP/IP 接続を行うために使用するローカルホストのホスト名。デフォルトでは、Unix ソケットファイルを使用して
localhost
に接続します。 -
終了後に以前の (名前変更された) ターゲットを削除しません。
-
ファイルのコピー方法 (
cp
またはscp
)。デフォルトはcp
です。 -
MyISAM
テーブルのフルインデックスファイルをバックアップに含めません。これによりバックアップを小さく、高速にできます。リロードされたテーブルのインデックスはあとで myisamchk -rq を使用して再構築できます。 -
--password=
,password
-p
password
サーバーに接続する際に使用するパスワードです。ほかの MySQL プログラムとは異なり、このオプションではパスワード値はオプションではありません。
コマンド行でパスワードを指定することはセキュアでないとみなすべきです。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。オプションファイルを使用すれば、コマンド行でパスワードを指定することを回避できます。
-
ローカルサーバーへの接続時に使用する TCP/IP ポート番号。
-
MySQL 5.6 では、mysqlhotcopy は
FLUSH TABLES
を使用してテーブルのフラッシュおよびロックを実行します。サーバーが、このステートメントが導入された 5.5.3 より古い場合は、tbl_list
WITH READ LOCK--old_server
オプションを使用します。 -
エラー発生時以外サイレントにします。
-
--record_log_pos=
db_name
.tbl_name
指定されたデータベース
db_name
およびテーブルtbl_name
に、マスターとスレーブのステータスを記録します。 -
与えられた正規表現と一致する名前を持つデータベースをすべてコピーします。
-
テーブルをすべてロックしたあとにバイナリログをリセットします。
-
テーブルをすべてロックしたあとに、マスター情報リポジトリファイルまたはテーブルをリセットします。
-
localhost
への接続に使用される Unix ソケットファイル。 -
コピーされたデータベースの名前に使用するサフィクス。
-
一時ディレクトリ。デフォルトは
/tmp
です。 -
--user=
,user_name
-u
user_name
サーバーへの接続時に使用する MySQL ユーザー名。
--checkpoint
オプションおよび --record_log_pos
オプションに必要なテーブルの構造に関する情報を含めて、追加の mysqlhotcopy ドキュメントに関しては、perldoc
を使用してください。
shell> perldoc mysqlhotcopy