Using Jumbo Frames w/ MySQL
I first learned about jumbo frames while working on a MySQL cluster deployment. The MySQL cluster required low latency to keep the nodes in sync. The budget didn’t allow for the recommended infiniband hardware. We decided to swap out an older Dell switch (used for the internal backend network 10.0.0.0/8 ) with a Cisco switch that supported 9000 byte frames (Jumbo Frames).
All the MySQL nodes were built with dual GigE network cards and we wanted to take advantage of that. Ethernet uses a standard frame size of 1500 bytes. We configured our network interfaces to use jumbo frames by setting the MTU with the following command.
ip link set eth0 mtu 9000
This allows larger frames to be transferred between nodes improving the local network throughput. Once the jumbo frames were configured, we were able to stand up an operational 4 node MySQL Cluster. We learned a few things through trial and error. The database size increased significantly when moving to MySQL Cluster. A varchar(255) became a char(255); a fixed-length character type.
Conclusion
Jumbo frames work well for transferring large files; make sure your network and destination support it.
The implementation of the MySQL cluster allowed us to work through some limitations of the version, 5.0 at the time, but from an operational stand point we didn’t feel confident in the solution. The entire database needed to be stored in RAM and recovering from a failed node was very slow. We decided on a master/slave setup with a 2nd slave for running reports.