What is Aurora?
It's a mySQL wire protocol compatible storage management system that sits on top of mySQL and modifies some innodb internals. You can read about more of the architecture here: I think of it as a Proxy Storage Engine System
The differences start from just starting the server. Aurora MySQL has Huge Page support turned on by default since AWS launches Aurora MySQL server with their custom flag for innodb large page support:
innodb_shared_buffer_pool_uses_huge_pages
This is not an open source setting documented by MySQL official build. In fact, there is not much information on this setting at all. I can only assume RDS instances are configured with Huge page support as detailed here and this custom setting for Aurora turns large page support on for mysqld.
So, what else is different between Aurora and Innodb? From Amazon's docs
The following MySQL parameters do not apply to Aurora MySQL:
innodb_adaptive_flushing
innodb_adaptive_flushing_lwm
innodb_checksum_algorithm
innodb_doublewrite
innodb_flush_method
innodb_flush_neighbors
innodb_io_capacity
innodb_io_capacity_max
innodb_log_buffer_size
innodb_log_file_size
innodb_log_files_in_group
innodb_max_dirty_pages_pct
innodb_use_native_aio
innodb_write_io_threads
thread_cache_size
The following MySQL status variables do not apply to Aurora MySQL:
innodb_buffer_pool_bytes_dirty
innodb_buffer_pool_pages_dirty
innodb_buffer_pool_pages_flushed
NoteThese lists are not exhaustive.
In summary, Aurora uses mySQL but it's also a layer on top of mySQL. In all essence, it's just another storage engine which forks Innodb and provides management primitives built into the DBMS system.
In the next weeks, I'll describe how we launch Aurora instances and why as well as capturing more differences that have not made it into this list.
No comments:
Post a Comment