This week, Facebook’s development organization announced the completion of the task that companies fear. A major update has been made to your central database. Larry Dignan highlighted the highlights of his overview.
Database migrations happen all the time and there is no shortage of advice on how to conduct them. A detailed post on the Facebook blog gave valuable lessons, which we’ll go into more detail here.
MySQL represents a major generation upgrade for this platform. The update was so significant that Oracle, the owner of MySQL, was asked to perform a major update on its own MySQL service.
There’s a long list of changes in version 8.0, but we’ll highlight some of them here. It starts with manageability, MySQL 8.0 where it adds the transactional data dictionary, it is standard for enterprise-level databases.
There is the new legal “invisible index” feature that allows you to test the impacts of index elimination without having to physically remove it. It is analogous to the advanced indexing capabilities of Oracle Autonomous Database and Microsoft Azure SQL Database, which allow you to test alternative indexing schemes.
In some cases, the migration also involved the underlying storage engine. MySQL is a database that supports pluggable storage engines and since 2016, Facebook has changed all of its user-facing MySQL implementations of InnoDB.
Moving from InnoDB to MyRocks required a test framework that captured production traffic and replayed it into test instances. This whole process was not foolproof, issues like MyRocks would handle transaction write deadlocks were not noticed.
All these headaches could have been avoided or minimized, in the future when MySQL 9.0 exists, one of the answers will be to migrate to the cloud of database as a service (DBaaS), where cloud providers continuously maintain the current version and supposedly insulate customers from underlying platform changes.