Mysqldumpバックアップとリストア
MySQLバックアップとそのリカバリメカニズム、およびメンテナンスデータテーブルの正しいメンテナンス.主に2つの異なるテーブルのタイプはMyISAMとInnodbである.
現在MySQLでサポートされている無料MySQLバックアップツールは、mysqldump、mysqlhotcopy、SQL構文でバックアップすることもできます:BACKUPTABLEまたはSELECT INTO OUTFILE、またはバイナリログ(binlog)をバックアップするか、データファイルと関連するプロファイルを直接コピーすることもできます.MyISAMテーブルはファイル形式で保存されているため、比較的バックアップが容易で、上記のいくつかの方法で使用できます.Innodbのすべてのテーブルは、同じデータファイルibdata 1に保存されています(複数のファイル、または独立した表領域ファイルである場合もあります)、比較的バックアップが難しく、無料のスキームは、データファイルのコピー、binlogのバックアップ、mysqldumpの使用です
mysqldumpはSQLレベルのMySQLサブメカニズムを採用しており、データテーブルをSQLスクリプトファイルに導き、異なるMySQLバージョン間でアップグレードする際に比較的適切であり、これも最も一般的なバックアップ方法である.
Innodbテーブルバックアップ
パラメータの説明:
mysqldumpには、エクスポートされたデータがどのデータベースまたは古いバージョンのMySQLサーバと互換性があるかを示します.値は
エクスポートされたデータは、フィールド名を含む完全な
データをエクスポートするときにどの文字セットを使用するかを指定し、データテーブルがデフォルトの
デフォルトでは、
16進数フォーマットを使用してバイナリ文字列フィールドをエクスポートします.バイナリデータがある場合は、このオプションを使用する必要があります.影響するフィールドタイプは
エクスポートを開始する前に、コミット要求はすべてのデータベースのすべてのテーブルをロックし、データの一貫性を保証します.これはグローバルリードロックであり、
データはエクスポートされず、データベース・テーブル構造のみがエクスポートされます.
これはただのショートカットオプションで、
このオプションは、大きなテーブルをエクスポートするときに便利です.
ストアド・プロシージャとカスタム関数をエクスポートします.
このオプションは、データをエクスポートする前に
トリガを同時にエクスポートします.このオプションはデフォルトで有効になり、
単一テーブルのエクスポート:
復元:
1、
2、source文法で、ここでファイルの絶対パスを指定する必要がある
現在MySQLでサポートされている無料MySQLバックアップツールは、mysqldump、mysqlhotcopy、SQL構文でバックアップすることもできます:BACKUPTABLEまたはSELECT INTO OUTFILE、またはバイナリログ(binlog)をバックアップするか、データファイルと関連するプロファイルを直接コピーすることもできます.MyISAMテーブルはファイル形式で保存されているため、比較的バックアップが容易で、上記のいくつかの方法で使用できます.Innodbのすべてのテーブルは、同じデータファイルibdata 1に保存されています(複数のファイル、または独立した表領域ファイルである場合もあります)、比較的バックアップが難しく、無料のスキームは、データファイルのコピー、binlogのバックアップ、mysqldumpの使用です
mysqldumpはSQLレベルのMySQLサブメカニズムを採用しており、データテーブルをSQLスクリプトファイルに導き、異なるMySQLバージョン間でアップグレードする際に比較的適切であり、これも最も一般的なバックアップ方法である.
Innodbテーブルバックアップ
- # /usr/bin/mysqldump -R -uuser -ppassword --single-transaction --default-character-set=utf8 --quick db_name > db_name.sql
パラメータの説明:
- --compatible=name
mysqldumpには、エクスポートされたデータがどのデータベースまたは古いバージョンのMySQLサーバと互換性があるかを示します.値は
ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options
などで、いくつかの値をカンマで区切ることができます.もちろん、完全な互換性を保証するのではなく、できるだけ互換性があります.
- --complete-insert,-c
エクスポートされたデータは、フィールド名を含む完全な
INSERT
方式、すなわち、すべての値を1行に書く.これにより、挿入効率が向上するが、max_allowed_packet
パラメータの影響を受けて挿入に失敗する可能性がある.そのため、このパラメータを慎重に使用する必要があります.少なくとも私はお勧めしません.
- --default-character-set=charset
データをエクスポートするときにどの文字セットを使用するかを指定し、データテーブルがデフォルトの
latin1
文字セットを使用しない場合は、エクスポート時にこのオプションを指定する必要があります.そうしないと、データを再インポートした後に文字化けして問題が発生します.
- --disable-keys
mysqldump
文の先頭と末尾にINSERT
文と/*!40000 ALTER TABLE table DISABLE KEYS */;
文を追加すると、すべてのデータを挿入した後にインデックスを再構築するため、挿入文の速度が大幅に向上します.このオプションは/*!40000 ALTER TABLE table ENABLE KEYS */;
テーブルにのみ適用されます.
- --extended-insert = true|false
デフォルトでは、
MyISAM
がmysqldump
モードをオンにしているので、使いたくない場合は、このオプションを使用して、--complete-insert
の値を設定すればよい.
- --hex-blob
16進数フォーマットを使用してバイナリ文字列フィールドをエクスポートします.バイナリデータがある場合は、このオプションを使用する必要があります.影響するフィールドタイプは
false
です.
- --lock-all-tables,-x
エクスポートを開始する前に、コミット要求はすべてのデータベースのすべてのテーブルをロックし、データの一貫性を保証します.これはグローバルリードロックであり、
BINARY、VARBINARY、BLOB
および--single-transaction
のオプションを自動的にオフにします.
- --lock-tables
--lock-tables
と同様ですが、すべてのライブラリの下のテーブルを一気にロックするのではなく、現在エクスポートされているデータテーブルをロックします.このオプションは--lock-all-tables
テーブルにのみ適用され、MyISAM
テーブルの場合はInnodb
オプションが使用できます.
- --no-create-info,-t
--single-transaction
文を追加せずにデータのみをエクスポートします.
- --no-data,-d
データはエクスポートされず、データベース・テーブル構造のみがエクスポートされます.
- --opt
これはただのショートカットオプションで、
CREATE TABLE
オプションを同時に追加するのと同じです.このオプションでは、--add-drop-tables --add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charset
のデータをすばやくエクスポートし、エクスポートしたデータをすばやくエクスポートできます.このオプションはデフォルトでオンですが、mysqldump
で無効にできます.ただし、--skip-opt
を実行してmysqldump
または--quick
のオプションが指定されていない場合、結果セット全体がメモリに格納されます.大きなデータベースをエクスポートすると、問題が発生する可能性があります.
- --quick,-q
このオプションは、大きなテーブルをエクスポートするときに便利です.
--opt
は、すべてのレコードを取得してメモリにキャッシュするのではなく、サーバクエリからレコードを直接出力するように強制します.
- --routines,-R
ストアド・プロシージャとカスタム関数をエクスポートします.
- --single-transaction
このオプションは、データをエクスポートする前に
mysqldump
SQL文を発行し、BEGIN
はアプリケーションをブロックせず、エクスポート時のデータベースの一貫性を保証します.BEGIN
やInnoDB
などのトランザクション・テーブルにのみ適用されます.このオプションとBDB
オプションは、--lock-tables
が保留中のトランザクションにコミットを隠すため、反発します.大きなテーブルをエクスポートするには、LOCK TABLES
のオプションを組み合わせて使用します.
- --triggers
トリガを同時にエクスポートします.このオプションはデフォルトで有効になり、
--quick
で無効になります. 単一テーブルのエクスポート:
- mysqldump -R -uroot -p'password' --add-drop-table --single-transaction --default-character-set=utf8 --quick db_name table > db_table.sql
復元:
1、
--skip-triggers
クライアントで
- # /usr/bin/mysqldump -uuser -ppassword db_name < /data/db/db_name.sql
2、source文法で、ここでファイルの絶対パスを指定する必要がある
- mysql> source /data/db/db_name.sql;