postgres 數據備份與恢復

PostgreSQL自帶一個客戶端pgAdmin,裏面有個備份,恢復選項,也能對數據庫進行備份 恢復(還原),但最近發現數據庫慢慢龐大的時候,常常出錯,備份的文件過程當中出錯的概率那是至關大,手動調節灰常有限。因此一直尋找完美的備份恢復方案。 linux


夢裏尋他千百度,伊人卻在燈火闌珊處...其實PostgreSQL內置很多的工具,尋找的備份恢復方案就在其中:pg_dump,psql。這兩個指令在數據庫的安裝目錄下,好比我本身本地安裝的,路徑形如:C:\Program Files\PostgreSQL\9.0\;而後進入到bin文件夾,會看到很多的exe文件,這就是PostgreSQL內置的工具了。裏面會找到pg_dump.exe,psql.exe兩個文件。咱們怎麼用他們? sql


用法: 數據庫

備份數據庫,指令以下: windows

pg_dump -h 164.82.233.54 -U postgres databasename > C:\databasename.bak

開始-運行-cmd 彈出dos控制檯;而後 在控制檯裏,進入PostgreSQL安裝目錄bin下: 工具

cd C:\Program Files\PostgreSQL\9.0\bin post

最後執行備份指令:

pg_dump -h 164.82.233.54 -U postgres databasename > C:\databasename.bak

指令解釋:如上命令,pg_dump 是備份數據庫指令,164.82.233.54是數據庫的ip地址(必須保證數據庫容許外部訪問的權限哦~),固然本地的數據庫ip寫 localhost;postgres 是數據庫的用戶名;databasename 是數據庫名。> 意思是導出到C:\databasename.bak文件裏,若是沒有寫路徑,單單寫databasename.bak文件名,那麼備份文件會保存在C:\Program Files\PostgreSQL\9.0\bin 文件夾裏。 spa


恢復數據庫,指令以下:

psql -h localhost -U postgres -d databasename <  C:\databasename.bak

指令解釋:如上命令,psql是恢復數據庫命令,localhost是要恢復到哪一個數據庫的地址,固然你能夠寫上ip地址,也就是說能遠程恢復(必須保證數據庫容許外部訪問的權限哦~);postgres 就是要恢復到哪一個數據庫的用戶;databasename 是要恢復到哪一個數據庫。<  的意思是把C:\databasename.bak文件導入到指定的數據庫裏。 rest

以上全部的是針對windows而言的,若是在linux下,會不會有效? code

在linux裏依然有效。有一個值得注意的是:若是直接進入PostgreSQL的安裝目錄bin下,執行命令,可能會出現 找不到pg_dump,psql 的現象,咱們在能夠這樣: ip

備份:

/opt/PostgreSQL/9.0/bin/pg_dump -h 164.82.233.54 -U postgres databasename > databasename.bak

恢復:


/opt/PostgreSQL/9.0/bin/psql -h localhost -U postgres -d databasename < databasename.bak

備份表

pg_dump  --host 主機名 --port 5432 --username 用戶名 -t 表名 >C:/備份後的名稱.sql 數據庫名



備份表

pg_dump -i -h 主機名 -p 5432 -U 用戶名-F c -v -f        "C:/DataCatalog.backup" -t 表名 數據庫名



還原表
pg_restore -i -h 主機名 -p 5432 -U postgres -d 數據庫名 -a -t 數據庫表 -v "C:/DataCatalog.backup"




pg_dump  --host 主機名 --port 5432 --username 用戶名 -t 表名 >C:/備份後的名稱.sql 數據庫名

這種形式能夠生成sql語句文件 ,,還不知道以何種形式還原;


刪除列名

ALTER TABLE 表名   DROP COLUMN 列名

修改字段長度

alter table 表名 alter column 列名 type varchar(100) ;

設置序列

SELECT setval('public.seq_test_student', 10, true);


指定當前值爲10 




ALTER TABLE tableName
DROP CONSTRAINT  projectbill_pkey,
DROP COLUMN "id",  
ADD COLUMN "id" serial8 NOT NULL,  //自動增加
ADD CONSTRAINT projectbill_pkey PRIMARY KEY ("id");   主鍵
-- ALTER TABLE projectbill ADD COLUMN id integer   PRIMARY KEY;


備份表:pg_dump -t 要備份的表 -f test_data  -h 主機名 -U 用戶名 -p 5432 數據庫名

還原表:psql.exe -h 主機 -U 用戶名 -p 5432 -d 數據庫 < test_data



test_data是備份數據,此處放在postgre/bin/test_data中能夠找到
相關文章
相關標籤/搜索