Trading up Your Engine: How to Move Your IOPS-heavy MySQL/Rails Stack to Unicode Without Downtime
Blog post from PagerDuty
In a detailed recount of PagerDuty's database transition, the text outlines the complex process of upgrading from MySQL 5.1, with latin1 character encoding, to MySQL 5.5, using the utf8mb4 encoding for full Unicode support. Initially, the company faced challenges with maintaining non-ASCII character support and dealing with performance issues due to MySQL’s limitations and the default latin1 character set. The transition involved addressing MySQL's constraints on index sizes, which restrict the use of utf8mb4 due to its higher byte requirement per character, by configuring the database to use the Barracuda file format and enabling large prefix support. The team utilized master/slave replication to ensure a seamless migration with minimal downtime, enabling character set conversions without data loss. By synchronizing the character set and collation settings between the database and client applications, the migration not only solved character encoding issues but also improved overall system performance. The text concludes with reflections on the successful execution of the migration, emphasizing the importance of addressing legacy system limitations to support modern, global character sets.