Sunday, May 19, 2013

小さいIBDATAファイル

Original post: http://anothermysqldba.blogspot.com/2013/05/a-smaller-ibdata-file.html


私は小さいibdataファイルの欲求がで最近出て見てきましたforums.mysql.com

InnoDBデータベースは、ディスクへのデータベース·データを格納するibdataファイル(複数可)を使用する。 システムを正しく構成する鍵であり、あなたはここでそのようなオプションの詳細について学ぶことができます。 http://dev.mysql.com/doc/refman/5.6/en/innodb-configuration.html

InnoDBはACIDに準拠しており、安全なトランザクションストレージエンジンを提供し、それは非常に生産的ですが、削除、および/または多くの場合、データを交換する場合は、時間をかけて失った領域を回復する必要があります。 どのくらいの時間は、お使いのシステムとの使用に依存しています。 あなたは、単一のコマンドを実行し、ibdataファイル内のスペースを回復することはできません。 それはいくつかの手順を取るとスレーブサーバー上で行われない限り、それは、舞台裏の仕事の背後にはありません。 あなたは奴隷を持っている場合には、まずスレーブデータベース上でこの作業を行うために、マスター·データベースになるために、そのデータベースサーバーを回転させるための計画が最善です。

だから、2つの異なる状況、これらは唯一の解決策が、いくつかの解決策ではありません。

  • あなたはibdataファイルに同じサイズを維持したいが、あなただけの無駄なスペースをクリアしたい
失われたスペースを回復する最善の方法は、データをダンプし、それをリロードすることです。 はい、私は知っているDBAのための最初の選択肢ではない。 これは大きなデータベースが、より面倒です。 私はあなたがスレーブデータベースを持っており、スレーブからこれを行うことができますし、後でそれをマスターすることを望んでいるでしょう。

  1. データベースをバックアップします
    1. mysqldump --user=<username> --password=<> --add-drop-database --master-data=2 --triggers --routines --events --databases (list database names and do not add mysql to this list) > /Just_AN_example/mysqldump_<DATEHERE>_.sql
      1. これはただのバイナリが破損した場合にあなたにASCIIコピーを提供します。
      2. また、必要に応じてコメントを介してマスタデータを有している。
      3. これは、同様にタクトであなたのMySQL認証を維持します。
        1. 私は別にダンプとしてMySQLデータベースを保存します。
    2. また、バックアップを作成することができますMySQLのエンタープライズバックアップまたはPercona XtraBackupシステムが大きくデシベルだった、これらは良い選択であるオンラインバックアップを必要に応じて、。 あなたまであなたが様々な理由のために使っている。
  2. データベースのチェックサム
    1. あなたはそれをバックロードするので、それを比較することができます持っているものにいくつかの数字を収集します。
      1. これはPercona Toolkitを使用して行うことができ

        1. # ./pt-table-checksum --password=<Password> > checksum_before_dump.txt
      2. クエリは、あなた自身を書くことができます。
        1. 私もこのブログに投稿している
          1. http://anothermysqldba.blogspot.com/2013/05/mysql-checksum.html
  3. 任意の読み取り専用の変数に/停止データベースを起動し、このダウンタイムを活用して調整したいと思います
  4. データベースをバックロード


  1. 上記のプロセスの手順1〜2を実行します。
  2. 上記のプロセスのステップ4では、あなたのmy.cnfファイルに以下を追加したくなるでしょう。
    1. innodb_file_format =バラクーダ
    2. innodb_file_per_tableを= 1
  3. ibdataファイルとログを削除します。
    1. いいえ、この点から戻ってくるん
  4. データベースを起動します
  5. それが起動して確認し、実行中の
  6. バックアップからデータベースをロードします。

もちろんこれは、すべての手順を確認してから、新しいマスターにスレーブを回転実行可能な状況に自分自身を得ることができるので、非生産/スレーブサーバ上で行うのが最善でしょう。