0.0
No commit activity in last 3 years
No release in over 3 years
mysql_warmer warms up a cold database by sniffing SQL queries from a hot machine and then repeating those queries on a cold machine
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

>= 0.12.9
>= 0.1.0
pcap
>= 0
 Project Readme

mysql_warmer¶ ↑

The need for mysql_warmer arose out of having to add a newly seeded MySQL slave in to production rotation. Since the internal buffer pool is empty / not tuned for the queries that will be run on it, queries that would run in less than 1s often took much higher with a cold MySQL cache.

To alleviate the pain of addding a cold / untuned MySQL machine to the cluster, mysql_warmer simply executes the same queries that are being run on a warm slave, on a cold slave. You’re expected to run a query reaper on the slave with some reasonable timeout so that the initial flood of slow queries will not kill the machine. And once enough time has gone by, both the warm slave and the cold slave will start exhibiting identical performance characteristics and then we can give production traffic to the new slave.

Install¶ ↑

mysql_warmer has many dependencies. Make sure your system has libpcap installed with the dev headers.

$ sudo yum install libpcap libpcap-devel
$ gem install mysql_warmer

Usage¶ ↑

On the cold slave:

$ mysql_warmer -u root -p sekret production_db &
$ <start a query reaper with a timeout of 10s or similar>

On the warm slave:

$ sudo mysql_sniff <cold_slave_ip>

Note on Patches/Pull Requests¶ ↑

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.

Copyright © 2010 Rohith Ravi. See LICENSE for details.