<?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>MySQL (MyISAM) 的備份</title><html>&lt;p&gt;當系統小的時候，用 mysqldump 在離峰時間把資料 dump 出來還算可行。&lt;br /&gt;雖然 Table 會暫時 Lock 住，但是因為小，所以速度可以很快，鎖住的時間可以不計。&lt;br /&gt;但當系統大的時候就不能這樣做了。&lt;/p&gt; &lt;p&gt;好在已經有許多處理這個問題的經驗者。&lt;br /&gt;解決這個問題的 Key Point 是「減少鎖 Table 的時間」，因此如果採用的 File System 或是 Volume Manager 有支援快速的 snapshot 功能的話，整個問題就簡單很多。步驟如以下所示：&lt;/p&gt; &lt;ol&gt; &lt;li&gt;SLAVE STOP;&lt;/li&gt; &lt;li&gt;FLUSH TABLE WITH READ LOCK;&lt;/li&gt; &lt;li&gt;作 snapshot &lt;/li&gt; &lt;li&gt;UNLOCK TABLES;&lt;/li&gt; &lt;li&gt;SLAVE START;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;如果採用 LVM (Linux), ZFS (FreeBSD, Solaris) 或是 NetApp 的話，整個備份過程可以小於 5 秒鐘，因此可以做到每個小時備份一次而不影響正常使用。如果在 Slave 上做 snapshot 備份，則完全不會影響到寫入（READ LOCK時還是可以讀）。&lt;/p&gt;</html><type>rich</type></oembed>