Comments - Migrating from 'innodb' checksum to 'crc32' checksum

11 months, 1 week ago Marko Mäkelä

I realize that it might be helpful to add back the innodb and none checksum algorithms to the innochecksum utility. This would require some code refactoring, duplicating some InnoDB source code instead of compiling that code with special options for inclusion in <<code>innochecksum<</code>>.

On the other hand, you could use the innochecksum utility from an older release to verify that the page checksums are valid and to convert them to the crc32 checksum. If you do not care about the verification step, then you should be able to blindly rewrite the page checksums to the crc32 format.

Still, I think that the best solution would be to rebuild all InnoDB tables, simply by OPTIMIZE TABLE. To see which tables are not in the full_crc32 format yet, try the following trick from MDEV-32230: SELECT name FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE row_format IS NULL;

I am afraid that the only way to convert the InnoDB system tablespace to the full_crc32 format would be to rebuild the entire database from a logical dump. The next best thing that you could do is to use innochecksum to convert each page to the crc32 checksum, and then start the server with innodb_checksum_algorithm=strict_full_crc32 so that new files will be created in the full_crc32 format, and for any old-format files only the crc32 page checksums will be allowed.

 
11 months, 1 week ago Keshan Nageswaran

Thank you for this Marko. The solutions provided are of real help for us. One last question, does the innodchecksum utility support full_crc32 validation?

"and then start the server with innodb_checksum_algorithm=strict_full_crc32 so that new files will be created in the full_crc32 format, and for any old-format files only the crc32 page checksums will be allowed."

In my understanding from the above statement, I believe we would end up having mix of crc32(old pages) and full_crc32(new pages), will this cause any issues during checksum validation with innodchecksum utility?

 
11 months, 1 week ago Ian Gilfillan

No, innochecksum does not fully support full_crc32 - see MDEV-26907. If innochecksum is a required part of your workflow, you could stick with crc32.

 
11 months, 1 week ago Keshan Nageswaran

Noted and Thank you Ian!

 
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.