![]() |
![]() |
MySQL 5.5.22 リリースノート (日本語翻訳)
機能の追加と変更
・ InnoDB : --ignore-builtin-innodb を使用すると、現在は非推奨の警告が発生する(Bug#13586262)。
・ yaSSLは1.7.2から2.2.0にアップグレードされた。
修正されたバグ
・ セキュリティ修正 :Bug#63775が修正された。
・ 重要な変更 : InnoDB : UPDATE 操作が原因で行のサイズが大きくなると、その行に関する情報が引き続き InnoDB ページサイズの制約内に収まるように、他の(更新されていない)カラムがオフページストレージに移動される可能性があった。新しく割り当てられるオフページデータへのポインタは、ページが割り当てられ書き込まれるまで設定されないため、カラムをページ外へ移動中にシステムがクラッシュすると、データが失われる可能性があった。この問題は、Barracudaファイル形式で ROW_FORMAT=DYNAMIC または ROW_FORMAT=COMPRESSED を使用するテーブルにおいて、特に innodb_file_per_table 設定が有効な場合に頻繁に発生した。ページ割り当て操作は、.ibdテーブルスペースファイルを拡張する際に頻繁に発生するためである。この問題は、InnoDBのバージョン、ファイル形式、行形式がどのような組み合わせでも発生する可能性があった。
これに関連する問題として、 UPDATE 操作や、削除されてマークされたレコードを再利用する INSERT 操作の際に、アイソレーションレベルにかかわらず、影響されるカラムのデータが他のトランザクションで無効になる場合があった。
カラムデータを元のページから移動してポインタで置き換える操作の順序が修正され、カラムデータが転送される正確なタイミングでクラッシュが発生しても、クラッシュリカバリ時に転送は再実行されなくなる。
MySQL5.1では、この修正はInnoDBプラグインに適用されるが、組み込みのInnoDBストレージエンジンには適用されない(Bug#13721257、Bug#12612184、Bug#12704861)。
・ InnoDB :ゼロ長の値( '' )を含むカラムにインデックスを作成する際、デバッグビルドでのみ、誤った表明が発生する可能性があった(Bug#13654923)。
・ InnoDB : ALTERTABLE...ADDCOLUMN などのDDL操作が停止し、最終的に fil_rename_tablespace についての Error1005:Can'tcreatetable メッセージでタイムアウトする可能性があった(Bug#13636122、Bug#62100、Bug#63553)。
・ InnoDB : InnoDB テーブルに対するDDL操作によってMySQLサーバがビジー状態になり、次の表明エラーで停止する可能性があった。
InnoDB:Failingassertion:trx->error_state==DB_SUCCESS
このエラーは、1023個のUNDOスロットがすべて同時トランザクションによって使用されている際にDDL操作を実行すると発生した。 InnoDB のUNDOスロットの数を増やしたことにより同時トランザクションの数(UNDOスロットに対応する)が1Kから128Kに増えたため、MySQL5.5および5.6ではこのエラーが発生しにくくなった(Bug#12739098、Bug#62401)。
・ InnoDB : $TMPDIR 変数のパスが / 文字で終わっている場合、 InnoDB ストレージエンジンを使用するテンポラリテーブルでサーバ起動時にエラーが発生する可能性があった。エラーログは以下のようになる。
・12020219:21:26InnoDB:Operatingsystemerrornumber2inafileoperation.
・InnoDB:Theerrormeansthesystemcannotfindthepathspecified.
・InnoDB:IfyouareinstallingInnoDB,rememberthatyoumustcreate
・InnoDB:directoriesyourself,InnoDBdoesnotcreatethem.
・12020219:21:26InnoDB:Error:tryingtoopenatable,butcouldnot
・InnoDB:openthetablespacefile't/#sql7750_1_0.ibd'!
・InnoDB:HaveyoumovedInnoDB.ibdfilesaroundwithoutusingthe
・InnoDB:commandsDISCARDTABLESPACEandIMPORTTABLESPACE?
・InnoDB:Itisalsopossiblethatthisisatemporarytable#sql...,
InnoDB:andMySQLremovedthe.ibdfileforthis.
この問題の回避策としては、類似のテンポラリテーブルを再作成し、その .frm ファイルを、エラーメッセージで示された名前の下にある tmpdir にコピー( #sql123.frm など)して、 tmpdir を末尾のスラッシュなしで通常の値( /var/tmp など)に設定して mysqld を再起動していた。起動時に、MySQLは .frm ファイルを認識し、孤立したテンポラリテーブルに対して DROPTABLE を発行する(Bug#11754376、Bug#45976)。
・ レプリケーション :順序指定なしで他のテーブルから選択する SELECT に基づいて、 AUTO_INCREMENT カラムがあるテーブルに書き込むステートメントでは、テーブルから行が取得される順序が両者で異なることがあるため、マスタとスレーブが同期しなくなる可能性があった。 INSERT...SELECT 、 REPLACE...SELECT 、または CREATETABLE...SELECT ステートメントがこれに該当する。このようなステートメントは現在、ステートメントベースのレプリケーションでは安全でないとマークされ、実行すると警告がスローされる。また、ログフォーマットが MIXED の場合は、行ベースのフォーマットを使用して強制的にステートメントがログに記録される(Bug#11758263、Bug#50440)。
・ ALTERTABLE ステートメントを使用して InnoDB テーブルの KEY_BLOCK_SIZE プロパティを変更すると、たとえば非圧縮テーブルから圧縮テーブルに切り替えると、それ以降のサーバ再起動が次のようなメッセージで失敗する可能性があった。
・InnoDB:Error:datafile path /ibdata2usespagesize1024,
・InnoDB:buttheonlysupportedpagesizeinthisreleaseis=16384
この問題は、MySQL5.5.20で導入された退化であった(Bug#13698765、Bug#64160)。
・ RPMパッケージ shared と shared-compat の内容は、それまで存在した重複を避けるためにバージョン5.5.6と5.6.1で変更されていた(MySQL5.0と5.1には引き続き存在する)。ただし、RPMメタ情報はそれに合わせて変更されていなかったため、引き続きRPMパッケージ shared と shared-compat は競合すると見なされた。これが修正された(Bug#60855、Bug#12368215)。
参考:Bug#56150も参照。
・ 64ビットシステムで、 myisam_sort_buffer_size を4GBより大きく設定できなかった(Bug#45702、Bug#11754145)。
・ ロックが不適切なため、テーブルに対する修正およびチェック操作と同時に ARCHIVE テーブルへの挿入を行うとテーブルが破損した(Bug#37280、Bug#11748748)。