備份和恢復postgreSQL資料庫
但是,你也不必每次都陷入這種困境。如果你將資料存放在 PostgreSQL 表中,你就可以定時的進行資料庫備份,從而避免上述悲劇的發生。PostgreSQL 自帶有內建工具來執行備份工作,而且在系統出現損壞或是意外時,你可以通過這些工具進行“回滾”,並通過以前儲存的快照將系統恢復到其初始的狀態。
資料備份
PostgreSQL 自帶的內建備份工具叫做 pg_dump。這個工具是通過一系列的SQL語句讀取某個指定的資料庫並複製其中的內容,以它作為快照並用於日後的資料恢復。客戶端到伺服器端的連線是用於執行備份工作。這些備份檔案就是前面所講的快照並可以用於日後的資料恢復。而保證客戶端與伺服器端的連線是執行備份所必需的。
注意: 在進行上述工作之前,首先請確保你具有登入到伺服器並訪問你將要備份的資料庫或表的許可權。你可以通過使用PostgreSQL 命令列客戶端——psql,進行伺服器登入。在客戶端中輸入主機名(-h),使用者名稱(-u)和密碼(-p),以及資料庫名,然後就可以校驗你是否被授權訪問。
使用 pg_dump 非常的簡單——只需要在命令提示符後面輸入將要匯出的資料庫名就可以進行備份工作了,如下例所示(根據你自己的安裝路經更改PostgreSQL 路徑):
$ /usr/local/pgsql/bin/pg_dump -D -h localhost -U pgsql test > test.bak
通過上面的命令就會建立一個名為test.bak的檔案,檔案中記錄了用於恢復資料庫的SQL命令。在這個檔案中你可以看到類似於下面這個例子中所列出的內容:
--
-- Name: pets; Type: TABLE; Schema: public; Owner: root; Tablespace:
--
CREATE TABLE pets (
species character varying,
name character varying
);
ALTER TABLE public.pets OWNER TO root;
--
-- Data for Name: pets; Type: TABLE DATA; Schema: public; Owner: root
--
INSERT INTO pets (species, name) VALUES ('dog', 'Sparky');
INSERT INTO pets (species, name) VALUES ('cat', 'Tabitha');
如果你希望對整個系統中所有的資料庫進行備份的話(而不是隻對某一個資料庫進行備份),你可以使用命令pg_dumpall 而不是pg_dump。執行這個命令可以對PostgreSQL 所能識別的所有的資料庫(包括其自身的系統資料庫) 備份到一個檔案中。下面給出了一個使用例項:
$ /usr/local/pgsql/bin/pg_dumpall -D -h localhost -U pgsql > all.bak
為了保證你的備份時刻保持更新,你可以通過往cron table中加入pg_dump或者是pg_dumpall命令來定期執行備份工作。這裡給出了兩個cron entries的例子。第一個是在每天凌晨3點對test資料庫進行備份,而第二個是在每個星期五的晚上9點對所有的資料庫進行備份:
0 3 * * * /usr/local/pgsql/bin/pg_dump -D -h localhost -U pgsql test > /disk2/test.bak0 21 * *
5 /usr/local/pgsql/bin/pg_dumpall -D -h localhost -U pgsql > /disk2/all.bak
資料恢復
從備份中恢復資料的工作比執行備份甚至更簡單——你所要做的就是通過執行備份檔案中的SQL命令來對資料庫進行恢復。如果你是使用pg_dump對某一個資料庫進行了備份,那麼備份中就會有CREATE TABLE 的語句來對源表進行復制。當然,你首先要新建立一個空資料庫來存放這些資料表。你可以使用createdb 這個工具來完成這一步工作,這個工具也是PostgreSQL 套件中的一部分:
$ /usr/local/pgsql/bin/createdb restored
現在你就可以執行備份檔案中的SQL命令來對資料庫進行恢復了,如下例所示:
$ /usr/local/pgsql/bin/psql -h localhost -U pgsql -d restored < test.bak
如果你是使用pg_dumpall對所有的資料庫進行備份的,就沒有必要先新建一個資料庫,因為備份檔案中已經包含了完成CREATE DATABASE工作的相關的呼叫。在這裡,只需要在psql命令列客戶端中輸入對應的備份檔案就可以了,而不需要指定目標資料庫:
$ /usr/local/pgsql/bin/psql -h localhost -U pgsql < all.bak
一旦資料恢復完成後,你就可以登入到伺服器並檢視到已恢復的資料。相關文章
- PostgreSql資料庫的備份和恢復SQL資料庫
- postgresql備份與恢復資料庫SQL資料庫
- 【備份恢復】從備份恢復資料庫資料庫
- 資料庫資料的恢復和備份資料庫
- Mongo 資料庫備份和恢復命令Go資料庫
- 備份和恢復SQL Server資料庫SQLServer資料庫
- Postgresql 備份恢復SQL
- 備份與恢復:polardb資料庫備份與恢復資料庫
- 使用Mysqldump備份和恢復MySQL資料庫MySql資料庫
- 非RMAN熱備份資料庫和恢復資料庫
- db2備份和恢復資料庫DB2資料庫
- 【備份恢復】noarchive模式下使用增量備份恢復資料庫Hive模式資料庫
- Postgresql 備份與恢復SQL
- 【備份恢復】在 ARCHIVELOG 模式下執行資料庫還原和恢復操作(源庫備份源庫恢復)Hive模式資料庫
- 達夢資料庫備份恢復資料庫
- mongo資料庫備份與恢復Go資料庫
- 資料庫的備份與恢復資料庫
- Informix資料庫備份與恢復ORM資料庫
- Mysql資料庫備份及恢復MySql資料庫
- SQL Server 資料庫備份還原和資料恢復SQLServer資料庫資料恢復
- DB2資料庫的備份和恢復DB2資料庫
- oracle資料庫備份和恢復的內容Oracle資料庫
- 2 Day DBA-管理方案物件-執行備份和恢復-資料庫備份和恢復概念物件資料庫
- rman資料庫全庫備份與恢復資料庫
- 2 Day DBA-管理方案物件-執行備份和恢復-資料庫備份和恢復概覽物件資料庫
- 直接透過備份恢復資料庫資料庫
- mysql的資料庫備份與恢復MySql資料庫
- oracle資料庫的備份與恢復Oracle資料庫
- 資料庫備份與恢復技術資料庫
- pg_dump 備份,恢復資料庫資料庫
- Xtrabackup實現資料庫備份和災難恢復資料庫
- 可定製的資料庫備份和恢復程式資料庫
- c# 實現資料庫的備份和恢復C#資料庫
- 【備份恢復】RMAN catalog 恢復目錄資料庫資料庫
- SqlServer資料庫恢復備份資料的方法SQLServer資料庫
- 資料庫備份與異機恢復——熱備份方式資料庫
- 【備份恢復】資料恢復指導資料恢復
- 使用innobackupex線上增量備份和再增量備份及恢復mysql資料庫MySql資料庫