私たちはウェブサイトをアップグレードしていて、古いデータベースと比較して新しいデータベースのサイズをチェックしていましたが、/ var/lib/mysql /ディレクトリに、.frmファイルしかなかったことがわかりました。 HDD全体で.MYDファイルを検索しましたが、古いデータベースのものだけです。これは、MySQL5.5を実行しているCentOS6.6システム上にあります。
それらのファイルはどこにありますか?最初は、それらがキャッシュに保持されているだけで、サーバーの電源が切れるとすべてが失われるのではないかと心配していましたが、今はよくわかりません。
うわー、素晴らしいコマンドRolando、これは大部分がInnoDBではないように見える結果ですが、データが異なる形式であっても、同じ場所にデータを保存する必要があると思います。/var/lib/mysqlのdu -h
を使用し、気になるディレクトリが1MB未満の場合、古いDBは1.7GBです。
+----------------+----------------------+----------------------+----------------------+
| Storage Engine | Data Size | Index Size | Table Size |
+----------------+----------------------+----------------------+----------------------+
| MEMORY | 0.000 GB | 0.000 GB | 0.000 GB |
| InnoDB | 0.151 GB | 0.059 GB | 0.210 GB |
| MyISAM | 1.381 GB | 0.227 GB | 1.608 GB |
| Total | 1.532 GB | 0.286 GB | 1.817 GB |
+----------------+----------------------+----------------------+----------------------+
+-----------------------+------------------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+-----------------------+------------------------+
| INNODB_DATA_FILE_PATH | ibdata1:10M:autoextend |
| DATADIR | /var/lib/mysql/ |
| INNODB_FILE_PER_TABLE | OFF |
+-----------------------+------------------------+
これがあなたの状況です:あなたのINNODB_FILE_PER_TABLEはOFFです。
InnoDBテーブルのデータページとインデックスページはすべてシステムテーブルスペース(ibdata1)内にあります。これらのテーブルでは、.frm
ファイルのみが表示されます。したがって、すべてがOKです。
InnoDBは次のようになります(画像提供:Percona CTO Vadim Tkachenko)
最近では、多くの人がデフォルトの innodb_file_per_table = 1 を使用しています。これ MySQL 5.1の時代のデフォルトでは0でした 。 innodb_file_per_table = 0
にmy.cnf
がある場合、MySQLはすべてのInnoDBテーブルをibdata1内に残します。
これについての詳細は、私の投稿を参照してください
InnoDBテーブルはibdata1内に残すことができます。それらを外部に保存したい場合は、私の投稿の警告を参照してください どのInnodbテーブルが書き込まれているのかを判断するにはどうすればよいですか?