MySQL on Ceph using Rados
Databases have always been heavy users for filesystems. They have strict durability requirements, they submit a high number of concurrent IO requests which are then required to complete in a timely manner. No wonder the choice of a filesystem has always been critical and workload dependent. Furthermore, most filesystems are not transactional and structures like the InnoDB doublewrite buffer are required to protect against partial page writes. But what is InnoDB writing and reading exactly? Mainly the reads and the writes operations are for pages and transaction log fragments. In both cases, these are objects which have nothing to do with a filesystem. What if we had a consistent object store supporting atomic operations? In this talk, I'll describe a MySQL prototype using the Ceph object store and the Rados protocol. I'll show some implementation details and highlight the benefits and the drawbacks. The similarities with AWS Aurora will also be examined and finally, we'll discuss the required steps to get multiple database instances to share the same physical dataset objects in order to get a fully functional cluster.
Principal consultant, Percona
I am a Principal Consultant at Percona, specializing in MySQL High-Availability and scaling solutions. Prior to joining Percona in 2009, I worked as a senior consultant for MySQL AB and Sun Microsystems, assisting customers across North America with NDB Cluster and Heartbeat/DRBD technologies.