1

Innodb file-per-table に安全に切り替えて、ibdata1 を削除できますか? これが私の攻撃計画です。すべてのデータの最近のバックアップがあります。

  1. /etc/my.cnf に innodb_file_per_table=1 を追加して再起動しました
  2. ALTER tablename ENGINE=InnoDB; を実行しました。各 Innodb テーブル

次に、次のことを行います。

  1. MySQL を停止する
  2. ibdata1、ib_logfile0、ib_logfile1 を削除
  3. MySQL を起動

これは機能しますか?

4

1 に答える 1

2

ドキュメントによると:

複数のテーブルスペースを有効にすると、InnoDB は新しく作成された各テーブルを、適切なデータベース ディレクトリ内の独自の tbl_name.ibd ファイルに格納します。インデックスとデータ用に別個の tbl_name.MYD ファイルと tbl_name.MYI ファイルを使用する MyISAM ストレージ エンジンとは異なり、InnoDB はデータとインデックスを 1 つの .ibd ファイルにまとめて格納します。tbl_name.frm ファイルは通常どおり作成されます。

my.cnf から innodb_file_per_table 行を削除してサーバーを再起動すると、 InnoDB は共有テーブルスペース ファイル内に新しいテーブルを作成します。

file-per-table の設定に関係なく、システム テーブルスペース内のテーブルと独自のテーブルスペース内のテーブルの両方に常にアクセスできます。

あなたの質問に対する答え: いいえ、オプションを有効にするだけでは既存のデータは移動されないため、ibdata1、ib_logfile0、または ib_logfile1 を削除することはできません。

于 2012-09-22T23:42:35.200 に答える