2012-05-17 104 views
2

我想在每天結束時創建數據庫的只讀快照,並將它們保留幾個月。如何在Postgres(或MySql)中創建和查詢只讀快照?

我希望能夠針對特定(命名)快照運行查詢。

這是否可以實現優雅和資源使用最少(數據庫只改變非常緩慢,但有幾GB的數據 - 所以幾乎所有的數據是所有快照通用的)。

回答

2

在PostgreSQL中創建快照的常用方法是使用pg_dump/pg_restore。

更簡單的方法是簡單地使用CREATE DATABASE克隆數據庫。

CREATE DATABASE my_copy_db TEMPLATE my_production_db; 

這將比轉儲/恢復快得多。此解決方案唯一的缺點是源數據庫不能有任何打開的連接。

副本將不會是隻讀的默認,但你可以簡單地撤銷了用戶的各自權限,以確保

+0

我希望,有可能是一個優雅的方式,即,避免複製共享數據。我可能被哈斯克爾和Clojure中的不可變數據結構所迷惑。 – fadedbee

+0

@chrisdew:做這樣的快照(沒有真正複製數據)可能更好地在文件系統級別完成。我認爲有文件系統可以做這樣的事情,但我沒有經驗。 –