MySQL 5.6.3 で導入された CRC32 チェックサムアルゴリズムは、ブロックを 1 回につき 32 ビットスキャンします。これは、ブロックを 1 回につき 8 ビットスキャンする InnoDB
のチェックサムアルゴリズムに対する改善です。CRC32 チェックサムアルゴリズムは、innodb_checksum_algorithm=crc32
を設定することによって有効にすることができます。
同様に MySQL 5.6.3 で導入された innodb_checksum_algorithm
構成パラメータによって、innodb_checksums
構成パラメータが置き換えられます。詳細は、innodb_checksum_algorithm
のドキュメントを参照してください。
CRC32 アルゴリズムが有効になっている場合、InnoDB
によってディスクに書き込まれるデータブロックのチェックサムフィールドには、以前とは異なる値が含まれています。テーブルスペース内のブロックが CRC32 チェックサムアルゴリズムを使用するように変更されたあと、関連付けられたテーブルを以前のバージョンの MySQL で読み取ることはできません。
新しい MySQL インスタンスを設定するときに、すべての InnoDB
データが CRC32 チェックサムアルゴリズムを使用して作成されている場合は、innodb_checksum_algorithm=strict_crc32
設定を使用できます。これは、古い値と新しい値の両方をサポートするための余分なチェックサム計算を実行しないため、crc32
設定より高速である可能性があります。
innodb_checksum_algorithm
のデフォルト値は MySQL 5.6.6 で innodb
から crc32
に変更されましたが、以前の MySQL バージョンへのダウングレード中の InnoDB
データファイルの互換性向上のため、および MySQL Enterprise Backup で使用するために 5.6.7 で innodb
に戻されました。検出された制限には、次のものが含まれます。
CRC32 チェックサムを含む
.ibd
ファイルは、5.6.3 より前の MySQL バージョンへのダウングレード中に問題が発生する可能性があります。MySQL 5.6.3 以降では、ディスクからブロックを読み取るとき、そのブロックの新しいチェックサム値と古いチェックサム値のどちらも正しいとして認識します。それにより、アルゴリズムの設定には関係なく、アップグレードおよびダウングレード中にそのデータブロックの互換性を保証します。新しいチェックサム値で書き込まれたデータが 5.6.3 より前のレベルの MySQL によって処理された場合は、破損しているとしてレポートされる可能性があります。3.8.0 までのバージョンの MySQL Enterprise Backup は、CRC32 チェックサムを使用するテーブルスペースのバックアップをサポートしていません。MySQL Enterprise Backup は、CRC32 チェックサムのサポートを 3.8.1 で (いくつかの制限付きで) 追加しています。詳細は、MySQL Enterprise Backup 3.8.1 の変更履歴を参照してください。