Mysqldumpバックアップとリストア

6978 ワード

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テーブルバックアップ

  
  
  
  
  1. # /usr/bin/mysqldump -R -uuser -ppassword --single-transaction --default-character-set=utf8 --quick db_name > db_name.sql  

パラメータの説明:

  
  
  
  
  1. --compatible=name 

mysqldumpには、エクスポートされたデータがどのデータベースまたは古いバージョンのMySQLサーバと互換性があるかを示します.値はansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_optionsなどで、いくつかの値をカンマで区切ることができます.もちろん、完全な互換性を保証するのではなく、できるだけ互換性があります.

  
  
  
  
  1. --complete-insert,-c 

エクスポートされたデータは、フィールド名を含む完全なINSERT方式、すなわち、すべての値を1行に書く.これにより、挿入効率が向上するが、max_allowed_packetパラメータの影響を受けて挿入に失敗する可能性がある.そのため、このパラメータを慎重に使用する必要があります.少なくとも私はお勧めしません.

  
  
  
  
  1. --default-character-set=charset 

データをエクスポートするときにどの文字セットを使用するかを指定し、データテーブルがデフォルトのlatin1文字セットを使用しない場合は、エクスポート時にこのオプションを指定する必要があります.そうしないと、データを再インポートした後に文字化けして問題が発生します.

  
  
  
  
  1. --disable-keys 
mysqldump文の先頭と末尾にINSERT文と/*!40000 ALTER TABLE table DISABLE KEYS */;文を追加すると、すべてのデータを挿入した後にインデックスを再構築するため、挿入文の速度が大幅に向上します.このオプションは/*!40000 ALTER TABLE table ENABLE KEYS */;テーブルにのみ適用されます.

  
  
  
  
  1. --extended-insert = true|false 

デフォルトでは、MyISAMmysqldumpモードをオンにしているので、使いたくない場合は、このオプションを使用して、--complete-insertの値を設定すればよい.

  
  
  
  
  1. --hex-blob 

16進数フォーマットを使用してバイナリ文字列フィールドをエクスポートします.バイナリデータがある場合は、このオプションを使用する必要があります.影響するフィールドタイプはfalseです.

  
  
  
  
  1. --lock-all-tables,-x 

エクスポートを開始する前に、コミット要求はすべてのデータベースのすべてのテーブルをロックし、データの一貫性を保証します.これはグローバルリードロックであり、BINARY、VARBINARY、BLOBおよび--single-transactionのオプションを自動的にオフにします.

  
  
  
  
  1. --lock-tables 
--lock-tablesと同様ですが、すべてのライブラリの下のテーブルを一気にロックするのではなく、現在エクスポートされているデータテーブルをロックします.このオプションは--lock-all-tablesテーブルにのみ適用され、MyISAMテーブルの場合はInnodbオプションが使用できます.

  
  
  
  
  1. --no-create-info,-t 
--single-transaction文を追加せずにデータのみをエクスポートします.

  
  
  
  
  1. --no-data,-d 

データはエクスポートされず、データベース・テーブル構造のみがエクスポートされます.

  
  
  
  
  1. --opt 

これはただのショートカットオプションで、CREATE TABLEオプションを同時に追加するのと同じです.このオプションでは、--add-drop-tables --add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charsetのデータをすばやくエクスポートし、エクスポートしたデータをすばやくエクスポートできます.このオプションはデフォルトでオンですが、mysqldumpで無効にできます.ただし、--skip-optを実行してmysqldumpまたは--quickのオプションが指定されていない場合、結果セット全体がメモリに格納されます.大きなデータベースをエクスポートすると、問題が発生する可能性があります. 

  
  
  
  
  1. --quick,-q 

このオプションは、大きなテーブルをエクスポートするときに便利です.--optは、すべてのレコードを取得してメモリにキャッシュするのではなく、サーバクエリからレコードを直接出力するように強制します. 

  
  
  
  
  1. --routines,-R 

ストアド・プロシージャとカスタム関数をエクスポートします.

  
  
  
  
  1. --single-transaction 

このオプションは、データをエクスポートする前にmysqldump SQL文を発行し、BEGINはアプリケーションをブロックせず、エクスポート時のデータベースの一貫性を保証します.BEGINInnoDBなどのトランザクション・テーブルにのみ適用されます.このオプションとBDBオプションは、--lock-tablesが保留中のトランザクションにコミットを隠すため、反発します.大きなテーブルをエクスポートするには、LOCK TABLESのオプションを組み合わせて使用します. 

  
  
  
  
  1. --triggers 

トリガを同時にエクスポートします.このオプションはデフォルトで有効になり、--quickで無効になります. 
 
単一テーブルのエクスポート:

  
  
  
  
  1. mysqldump -R -uroot -p'password' --add-drop-table --single-transaction --default-character-set=utf8 --quick db_name table > db_table.sql 

復元:
1、--skip-triggersクライアントで

  
  
  
  
  1. # /usr/bin/mysqldump -uuser -ppassword db_name < /data/db/db_name.sql 

2、source文法で、ここでファイルの絶対パスを指定する必要がある

  
  
  
  
  1. mysql> source /data/db/db_name.sql;