サラリーマンのすらすらIT日記

IT関連を中心とした日々を綴ります。
--/--/--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2013/08/24

MySQL-innodb_file_per_tableを途中でオフした時

MySQLを使ったあるパッケージアプリで、初めはinnodb_file_per_tableがオンだったのを、アップデートした時にデフォルトがinnodb_file_per_tableオフのため、オフに気が付かずに運用を開始してしまいました。

innodb_file_per_tableがオフで、データファイルがデフォルトのままだと、ibdata1ファイルにデータがたまっていき、現在巨大なサイズになっています。innodb_file_per_tableオンの時は小さかったのですが。また、innodb_file_per_tableオンの時に書いたデータもあるため、テーブルごとのファイルもそこそこ大きくなっています。この状態でibdata1ファイルを小さくして、innodb_file_per_tableオンで運用する方法を考えました。

以前このような時の対処法をWebで見つけたような記憶があるのですが、URLを失念しました。とりあえずテスト環境を作って試行錯誤することに。

まずinnodb_file_per_tableオフ、ibdata1は巨大、テーブルごとのファイルが大きい現状態で、mysqldumpしてみましたがエラー。次にテーブルことのファイルを削除してmysqldumpしましたが、これもダメ。結局うまくいった方法というのは、次の手順。

1.このパッケージアプリのインストーラで新規インストールします。MySQLのテーブルはインストーラが作成する。この段階でユーザが入力したデータはなし。

2.ibdata1ファイルとib_logfileファイル3つだけを、mysql\dataディレクトリに戻す。per_table部分のデータは初期のまま。

3.mysqldumpコマンド実行。問題なく終了。リストアに必要なSQLファイルができる。

4.パッケージアプリのユーザテーブルをdropする。

5.MySQLを停止してから、ibdata1ファイルとib_logfileファイル3つを削除する。

6.my.iniファイルを編集して、innodb_file_per_tableをオンにして。MySQLを起動。まっさらなibdata1ファイルとib_logfileファイル3つができる。

7.3でバックアップしたSQLファイルからデータをリストアする。


これでinnodb_file_per_tableオン状態でデータが復帰したようです。これが一般的に使える方法かどうかは不明ですが。

スポンサーサイト

コメント

コメントの投稿

  • URL
  • コメント
  • パスワード
  • 秘密
  • 管理者にだけ表示を許可する

トラックバック

トラックバックURL:http://sookibizviz.blog81.fc2.com/tb.php/1662-7a34f46b

■  カレンダー

09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

■  プロフィール

sookibizviz

Author:sookibizviz
仕事の内容やソフトの紹介を交えながら、日々の悪戦苦闘を綴っていきます。

■  最新記事

■  最新コメント

■  最新トラックバック

■  月別アーカイブ

■  カテゴリ

未分類 (64)
BizViz (24)
IT (1119)
計量 (76)
環境 (26)
数学 (181)
ニュース (46)
本 (187)
音楽 (113)
囲碁 (5)
将棋 (26)
ブログ (14)
日記 (19)

■  FC2カウンター

■  検索フォーム

■  RSSリンクの表示

■  QRコード

QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。