利用 Percona Playback warm-up MySQL 資料庫…

Percona Playback 是一套可以將事先記錄下來的 SQL Query Log 在指定的 MySQL Server 上重作一次的工具,目前最新的版本是 0.5,支援讀取 slow query log 或是 tcpdump capture file。Percona 標榜可以完全按照 Query Log 的 Pattern (包含 thread concurrency,query 所花的時間等等)來重作一次 Query,不過測試的結果還是有點落差。

首先先在 Production 的 Server 上面紀錄 Query Log。因為 Percona Playback 0.5 的 Slow Query Reader 是爛的(bug 1035217),所以只能用 tcpdump:
tcpdump -w log.dump dst port 3306 and dst ip 192.168.1.1

記錄到足夠長度的 log 之後,把 log 放到要測試的 MySQL 機器上,開始執行 percona playback。要注意的是,所有的 Log (包含 UPDATE, DELETE, INSERT 等等會修改資料庫內容的 Query)都會被執行,如果要在 Slave 上跑的話,記得要事先濾掉,才不會造成 Master Slave 不同步的狀況。
percona-playback --input-plugin=tcpdump --tcpdump-filelog.dump --tcpdump-mode=fast --mysql-host=127.0.0.1 --mysql-username=root --mysql-schema=mydb

官方文件是使用 --tcpdump-mode=accurate,速度慢很多,使用 --tcpdump-mode=fast 會快不少。