備份:
一般在安裝PG數(shù)據(jù)庫的時(shí)候俄占,都會(huì)有個(gè)bin目錄,在這個(gè)目錄下有pg_dump淆衷、pg_restore缸榄、psql這些可執(zhí)行文件。
linux備份(這是沒有配置環(huán)境變量的時(shí)候祝拯,需要進(jìn)入這個(gè)目錄甚带,否則不需要,配置環(huán)境變量如下黃色標(biāo)注)
到bin目錄下:./pg_dump -h 127.0.0.1 -U postgres -p 5432 -F c -f /hd01/pg_back/databack/data.bak? db_test
還原也是同理到bin目錄下:./pg_restore -h 127.0.0.1 -U postgres -p 5432 -d db_test<? /hd01/pg_back/databack/data.bak
bin目錄下有上述pg_dump和pg_restore的可執(zhí)行文件佳头,pg_restore有時(shí)候根據(jù)還原的文件格式來鹰贵,有時(shí)候會(huì)用psql,這兩個(gè)都是還原命令康嘉,用錯(cuò)了會(huì)有提示的碉输。
注意:如果提示sh: pg_dump: command not found
則是沒有加到環(huán)境變量中,需要vi .bash_profile亭珍,注意前面的點(diǎn)
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
? ? ? ? . ~/.bashrc
fi
# User specific environment and startup programs
export PGHOME=/hd01/ronds/pg13/pg131? ? ?(這個(gè)pg安裝路徑根據(jù)你實(shí)際安裝的來)
export PGDATA=/hd01/ronds/pg13/pg13data? ??(這個(gè)pg的data文件夾路徑根據(jù)你實(shí)際安裝的來)
PATH=$PATH:$HOME/bin:$PGHOME/bin
export PATH
還原:
還原首先要準(zhǔn)備一個(gè)空庫敷钾,如果想用之前的庫名字,需要先刪除之前的庫肄梨,再新建一個(gè)空庫阻荒,但是PG有時(shí)候會(huì)提示有會(huì)話連接,不能刪除众羡,這時(shí)候斷開PG會(huì)話侨赡,再刪除該庫,注意需要在別的庫設(shè)為活動(dòng)對(duì)象的時(shí)候粱侣,再執(zhí)行刪庫語句刪除之前的數(shù)據(jù)庫羊壹。(刪除請(qǐng)務(wù)必謹(jǐn)慎操作,建議直接新建一個(gè)新庫甜害,名字隨意)
斷開pg會(huì)話
SELECT pg_terminate_backend(pg_stat_activity.pid)?
FROM pg_stat_activity?
WHERE datname='dbname' AND pid<>pg_backend_pid();
然后在另一個(gè)數(shù)據(jù)庫活動(dòng)對(duì)象上 刪除之前的數(shù)據(jù)庫
注意: 還原之前請(qǐng)刪除數(shù)據(jù)庫重建舶掖,可能需要停掉服務(wù),斷開所有數(shù)據(jù)庫的會(huì)話連接
linux還原
執(zhí)行psql -h localhost -U postgres -p 5432 -d db_test -f "/hd01/pg13/pg_test-2021-03-16.bak"
或者pg_restore -h localhost -U postgres -p 5432 -d db_test
windows下還原
pg_restore -h localhost -U postgres -d db_test<? F:\PGBACK\pgsql-backup.2021-03-19\pgsql-backup.2021-03-19.bak
數(shù)據(jù)庫備份還原操作不一定要在裝數(shù)據(jù)庫的那臺(tái)服務(wù)器上操作尔店,只要?jiǎng)e的服務(wù)器上也有PG的程序眨攘,并且這服務(wù)器能和目標(biāo)服務(wù)器ping通主慰,只需要把上面的localhost改成對(duì)應(yīng)的IP地址,即可在服務(wù)器A上備份還原服務(wù)器B上的數(shù)據(jù)庫鲫售,地址改為B的IP共螺。