このセクションでは、InnoDB
テーブル
スペースがスペースを使いきってしまったり、ログ
ファイルのサイズを変更したい時に何ができるか説明しています。
InnoDB
テーブル
スペースのサイズを増やす一番簡単な方法は、最初からこれを自動拡大として設定する事です。テーブル
スペース定義内の最後のデータ ファイルの
autoextend
属性を指定してください。すると
InnoDB
は領域を使い切ってしまった時、そのファイルのサイズを自動的に8MB
インクリメント増やします。インクリメントサイズは、MBで計られる
innodb_autoextend_increment
システム変数の値を設定する事で変更できます。
または、別のデータ
ファイルを追加する事でテーブル
スペースのサイズを増やす事ができます。これを行う為には、MySQL
サーバを閉じ、innodb_data_file_path
の最後に新しいデータ
ファイルを追加する為にテーブル
スペース設定を変更し、そしてサーバを再起動してください。
もし最後のデータ ファイルがキーワード
autoextend
で定義されていたら、テーブル
スペースの再設定の手順は、最後のデータ
ファイルがどのサイズまで成長するかを考慮する必要が有ります。データ
ファイルのサイズを求め、それを1024 × 1024
bytes (= 1MB)
の倍数の最近値まで丸め、そして丸めたサイズを
innodb_data_file_path
内で明示的に指定してください。すると別のデータ
ファイルを追加する事ができます。innodb_data_file_path
内の最後のデータ
ファイルだけが自動拡大として指定できるという事を覚えて置いてください。
ひとつの例として、テーブル
スペースが1つだけ自動拡大データ ファイル
ibdata1
を持っていると仮定してください:
innodb_data_home_dir = innodb_data_file_path = /ibdata/ibdata1:10M:autoextend
このデータ ファイルが、時間をかけて988MB まで成長したと仮定してください。ここに、元のデータ ファイルを非自動拡大に変更し、別の自動拡大データ ファイルを追加した後の設定ラインがあります:
innodb_data_home_dir = innodb_data_file_path = /ibdata/ibdata1:988M;/disk2/ibdata2:50M:autoextend
テーブル
スペース設定に新しいファイルを追加する時には、それが存在していない事を確認してください。InnoDB
はサーバを再起動する時にファイルを作成し、初期化します。
現在、データ ファイルをテーブルスペースから削除する事はできません。テーブル スペースのサイズを小さくするには、この手順を利用してください:
全ての InnoDB
テーブルをダンプする為に
mysqldump を利用してください。
サーバを停止してください。
全ての存在するテーブルスペース ファイルを削除してください。
新しいテーブルスペースを設定してください。
サーバを再起動してください。
ダンプ ファイルをインポートしてください。
InnoDB
ログ
ファイルの数やサイズを変更したければ、次の指示に従ってください。利用する手順は
innodb_fast_shutdown
の値によって決まります:
もし innodb_fast_shutdown
が2に設定されなければ:MySQL
サーバを停止し、エラー無しでシャットダウンした事を確認する必要があります。(ログ内に未処理のトランザクションの情報が無い事を保証する為)シャットダウンの際に何かが起きた場合、テーブルスペースを復旧する為に必要になるので、古いログ
ファイルを安全な場所にコピーしておいてください。古いログ
ファイルをログ ファイル
ディレクトリから削除し、ログ
ファイル設定を変更する為に
my.cnf
を編集し、MySQL
サーバを再起動してください。mysqld
はログ
ファイルが存在しない事を確認し、新しいものを作成している事を告げます。
もし innodb_fast_shutdown
が2に設定されると:サーバをシャットダウンし、innodb_fast_shutdown
を1に設定し、サーバを再起動してください。サーバは復旧を許可されます。そして、サーバをもう一度シャットダウンし、InnoDB
ログ ファイル
サイズを変更する為に前出の項目で説明されている手順に従わなければいけません。innodb_fast_shutdown
を2に設定し直し、サーバを再起動してください。