新聞中心
postgresql 怎么備份數(shù)據(jù)庫(kù)
PostgreSQL自帶一個(gè)客戶(hù)端pgAdmin,里面有個(gè)備份,恢復(fù)選項(xiàng),也能對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份 恢復(fù)(還原),但最近發(fā)現(xiàn)數(shù)據(jù)庫(kù)慢慢龐大的時(shí)候,經(jīng)常出錯(cuò),備份的文件過(guò)程中出錯(cuò)的幾率那是相當(dāng)大,手動(dòng)調(diào)節(jié)灰常有限。所以一直尋找完美的備份恢復(fù)方案。
成都創(chuàng)新互聯(lián)公司,為您提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)站營(yíng)銷(xiāo)推廣、網(wǎng)站開(kāi)發(fā)設(shè)計(jì),對(duì)服務(wù)航空箱等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)及推廣經(jīng)驗(yàn)。成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司成立于2013年,提供專(zhuān)業(yè)網(wǎng)站制作報(bào)價(jià)服務(wù),我們深知市場(chǎng)的競(jìng)爭(zhēng)激烈,認(rèn)真對(duì)待每位客戶(hù),為客戶(hù)提供賞心悅目的作品。 與客戶(hù)共同發(fā)展進(jìn)步,是我們永遠(yuǎn)的責(zé)任!
夢(mèng)里尋他千百度,伊人卻在燈火闌珊處...其實(shí)PostgreSQL內(nèi)置不少的工具,尋找的備份恢復(fù)方案就在其中:pg_dump,psql。這兩個(gè)指令 在數(shù)據(jù)庫(kù)的安裝目錄下,比如我自己本地安裝的,路徑形如:C:\Program Files\PostgreSQL\9.5\;然后進(jìn)入到bin文件夾,會(huì)看到不少的exe文件,這就是PostgreSQL內(nèi)置的工具了。里面會(huì)找到 pg_dump.exe,psql.exe兩個(gè)文件。我們?cè)趺从盟麄儯?/p>
用法:
備份數(shù)據(jù)庫(kù),指令如下:
pg_dump -h 164.82.233.54 -U postgres databasename C:\databasename.bak
開(kāi)始-運(yùn)行-cmd 彈出dos控制臺(tái);然后 在控制臺(tái)里,進(jìn)入PostgreSQL安裝目錄bin下:
cd C:\Program Files\PostgreSQL\9.0\bin
最后執(zhí)行備份指令:
pg_dump -h 164.82.233.54 -U postgres databasename C:\databasename.bak
指令解釋?zhuān)喝缟厦睿琾g_dump 是備份數(shù)據(jù)庫(kù)指令,164.82.233.54是數(shù)據(jù)庫(kù)的ip地址(必須保證數(shù)據(jù)庫(kù)允許外部訪問(wèn)的權(quán)限哦~),當(dāng)然本地的數(shù)據(jù)庫(kù)ip寫(xiě) localhost;postgres 是數(shù)據(jù)庫(kù)的用戶(hù)名;databasename 是數(shù)據(jù)庫(kù)名。 意思是導(dǎo)出到C:\databasename.bak文件里,如果沒(méi)有寫(xiě)路徑,單單寫(xiě)databasename.bak文件名,那么備份文件會(huì)保存在C: \Program Files\PostgreSQL\9.0\bin 文件夾里。
恢復(fù)數(shù)據(jù)庫(kù),指令如下:
psql -h localhost -U postgres -d databasename C:\databasename.bak(測(cè)試沒(méi)有成功)
pg_restore.exe --host localhost --port 5432 --username "postgres" --dbname "symbolmcnew" --no-password --verbose "databasename.backup"(測(cè)試成功)
指令解釋?zhuān)喝缟厦睿琾sql是恢復(fù)數(shù)據(jù)庫(kù)命令,localhost是要恢復(fù)到哪個(gè)數(shù)據(jù)庫(kù)的地址,當(dāng)然你可以寫(xiě)上ip地址,也就是說(shuō)能遠(yuǎn)程恢復(fù)(必須保證 數(shù)據(jù)庫(kù)允許外部訪問(wèn)的權(quán)限哦~);postgres 就是要恢復(fù)到哪個(gè)數(shù)據(jù)庫(kù)的用戶(hù);databasename 是要恢復(fù)到哪個(gè)數(shù)據(jù)庫(kù)。 的意思是把C:\databasename.bak文件導(dǎo)入到指定的數(shù)據(jù)庫(kù)里。
以上所有的是針對(duì)windows而言的,如果在linux下,會(huì)不會(huì)有效?
在linux里依然有效。有一個(gè)值得注意的是:如果直接進(jìn)入PostgreSQL的安裝目錄bin下,執(zhí)行命令,可能會(huì)出現(xiàn) 找不到pg_dump,psql的現(xiàn)象,我們?cè)诳梢赃@樣:
備份:
/opt/PostgreSQL/9.5/bin/pg_dump -h 164.82.233.54 -U postgres databasename databasename.bak
恢復(fù):
/opt/PostgreSQL/9.5/bin/psql -h localhost -U postgres -d databasename databasename.bak
windows下postgresql備份方法
直接用echo重定向?qū)懭氪蜷_(kāi). 例如: echo "創(chuàng)建新文件"newtext.txt (echo重定項(xiàng)寫(xiě)入時(shí),沒(méi)有的文件將會(huì)被創(chuàng)建) windows10終端命令行怎么打開(kāi) 1、首先在電腦桌面左下角點(diǎn)擊WIN圖標(biāo),然后就可以看到命令提示符,點(diǎn)擊進(jìn)去就可以了. 2、還可以使用...
postgreSQL 備份庫(kù)
cd到postgresql/bin目錄下:
備份數(shù)據(jù)庫(kù):
pg_dump -h localhost -U greenerp greenerp greenerp_140224.bak
恢復(fù)數(shù)據(jù)庫(kù):
psql -h localhost -U greenerp -d greenerp greenerp_140311.bak
postgresql 怎樣自動(dòng)備份
第一步:
下載批處理文件。
第二步:
你可以通過(guò)一個(gè)簡(jiǎn)單的命令(schtasks /?查看幫助)或者使用圖形界面(開(kāi)始-控制面板-系統(tǒng)和安全-管理工具-任務(wù)計(jì)劃程序)運(yùn)行任務(wù)計(jì)劃管理工具,還可以在%SYSTEMROOT%\System32目錄下雙擊Taskschd.msc來(lái)啟動(dòng)它。
第三步:
你可以通過(guò)向?qū)Щ蛲ㄟ^(guò)XML文件導(dǎo)入信息來(lái)創(chuàng)建基本任務(wù)。向?qū)Х绞絼?chuàng)建方法見(jiàn)任務(wù)計(jì)劃程序幫助,下面介紹下命令行語(yǔ)法:
schtasks /Create [/S system [/U username [/P [password]]]] [/RU username [/RP password]] /SC schedule [/MO modifier] [/D day] [/M months] [/I idletime] /TN taskname /TR taskrun [/ST starttime] [/RI interval] [ {/ET endtime | /DU duration} [/K] [/XML xmlfile] [/V1]] [/SD startdate] [/ED enddate] [/IT] [/Z] [/F]
查看此命令幫助:
schtasks /Create /?
如果在Windows防火墻中遠(yuǎn)程任務(wù)計(jì)劃管理被禁用而文件和打印共享被啟用并且遠(yuǎn)程注冊(cè)表服務(wù)正在運(yùn)行,遠(yuǎn)程計(jì)算機(jī)上將會(huì)被創(chuàng)建一個(gè)V1任務(wù)即使沒(méi)有使用參數(shù)V1。參數(shù)V1表明一個(gè)任務(wù)對(duì)下層系統(tǒng)可見(jiàn)。
使用代碼
腳本:
a href="" target="_blank" rel="nofollow"@ECHO/a OFF @setlocal enableextensionsa href="" target="_blank" rel="nofollow"@cd/a /d "%~dp0" SET PGPATH=C:\"Program Files"\PostgreSQL\9.1\bin\ SET SVPATH=f:\ SET PRJDB=demo SET DBUSR=postgres FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k FOR /F "TOKENS=1,2,3 DELIMS=: " %%i IN ('TIME /T') DO SET t=%%i%%j%%k SET DBDUMP=%PRJDB%_%d%_%t%.sqla href="" target="_blank" rel="nofollow"@ECHO/a OFF %PGPATH%pg_dump -h localhost -p 5432 -U postgres %PRJDB% %SVPATH%%DBDUMP% echo Backup Taken Complete %SVPATH%%DBDUMP%
初始值
PGPATH - PostgreSQL路徑
SVPATH - 備份文件路徑
PRJDB - 要備份的數(shù)據(jù)庫(kù)名
DBUSR - 數(shù)據(jù)庫(kù)用戶(hù)名
PostgreSQL中實(shí)現(xiàn)Update前的備份騷操作
參考文章: 【PostgreSQL 如何實(shí)現(xiàn)upsert與新舊數(shù)據(jù)自動(dòng)分離】
很多業(yè)務(wù)也行有這樣的需求,新的數(shù)據(jù)會(huì)不斷的插入,并且可能會(huì)有更新。 對(duì)于更新的數(shù)據(jù),需要記錄更新前的記錄到歷史表。 這個(gè)需求有點(diǎn)類(lèi)似于審計(jì)需求,即需要對(duì)記錄變更前后做審計(jì)。 本文的目的并不是審計(jì),而且也可能不期望使用觸發(fā)器。
還有什么方法呢?
PostgreSQL 這么高大上,當(dāng)然有,而且還能在一句SQL里面完成,看法寶。
創(chuàng)建一張當(dāng)前狀態(tài)表,一張歷史記錄表。
插入一條不存在的記錄,不會(huì)觸發(fā)插入歷史表的行為。
注意替代變量
插入一條不存在的記錄,不會(huì)觸發(fā)插入歷史表的行為。
插入一條已存在的記錄,并且有數(shù)據(jù)的變更,觸發(fā)數(shù)據(jù)插入歷史表的行為。
插入一條已存在的記錄,并且已存在的記錄值和老值一樣,不會(huì)觸發(fā)將數(shù)據(jù)插入歷史表的行為。
執(zhí)行計(jì)劃
網(wǎng)站題目:包含備份postgresql的詞條
鏈接分享:http://www.ef60e0e.cn/article/dsdhojh.html
其他資訊
- 怎么讓Linux開(kāi)機(jī)時(shí)自動(dòng)啟動(dòng)mysql-創(chuàng)新互聯(lián)
- Vue入門(mén)六、slot插槽,$refs,$parent-創(chuàng)新互聯(lián)
- 織夢(mèng)去掉{dede:field.body/}中p元素的方法-創(chuàng)新互聯(lián)
- centos7系統(tǒng)有關(guān)shell命令的應(yīng)用-創(chuàng)新互聯(lián)
- 如何實(shí)現(xiàn)SpringBoot中整合Sharding-JDBC讀寫(xiě)分離-創(chuàng)新互聯(lián)