<?xml version="1.0" encoding="UTF-8" ?><oembed><version>1.0</version><provider_name>Jui-Nan Lin&#039;s Blog</provider_name><provider_url>https://jnlin.org</provider_url><author_name>jnlin</author_name><author_url>https://jnlin.org/author/jnlin/</author_url><title>利用 Percona Playback warm-up MySQL 資料庫...</title><html>&lt;a href=&quot;http://www.percona.com/doc/percona-playback/&quot;&gt;Percona Playback&lt;/a&gt; 是一套可以將事先記錄下來的 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 是爛的（&lt;a href=&quot;https://bugs.launchpad.net/percona-playback/+bug/1035217&quot;&gt;bug 1035217&lt;/a&gt;），所以只能用 tcpdump：
&lt;code&gt;tcpdump -w log.dump dst port 3306 and dst ip 192.168.1.1&lt;/code&gt; 

記錄到足夠長度的 log 之後，把 log 放到要測試的 MySQL 機器上，開始執行 percona playback。要注意的是，所有的 Log （包含 UPDATE, DELETE, INSERT 等等會修改資料庫內容的 Query）都會被執行，如果要在 Slave 上跑的話，記得要事先濾掉，才不會造成 Master Slave 不同步的狀況。
&lt;code&gt;percona-playback --input-plugin=tcpdump --tcpdump-filelog.dump --tcpdump-mode=fast --mysql-host=127.0.0.1 --mysql-username=root --mysql-schema=mydb&lt;/code&gt;

官方文件是使用 &lt;code&gt;--tcpdump-mode=accurate&lt;/code&gt;，速度慢很多，使用 &lt;code&gt;--tcpdump-mode=fast&lt;/code&gt; 會快不少。</html><type>rich</type></oembed>