postgres数据库,还原与备份命令

备份:

一般在安装PG数据库的时候,都会有个bin目录,在这个目录下有pg_dump、pg_restore、psql这些可执行文件。

linux备份(这是没有配置环境变量的时候,需要进入这个目录,否则不需要,配置环境变量如下黄色标注

到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的可执行文件,pg_restore有时候根据还原的文件格式来,有时候会用psql,这两个都是还原命令,用错了会有提示的。

注意:如果提示sh: pg_dump: command not found

则是没有加到环境变量中,需要vi .bash_profile,注意前面的点

# .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     (这个pg安装路径根据你实际安装的来)

export PGDATA=/hd01/ronds/pg13/pg13data    (这个pg的data文件夹路径根据你实际安装的来)

PATH=$PATH:$HOME/bin:$PGHOME/bin

export PATH

还原:

还原首先要准备一个空库,如果想用之前的库名字,需要先删除之前的库,再新建一个空库,但是PG有时候会提示有会话连接,不能删除,这时候断开PG会话,再删除该库,注意需要在别的库设为活动对象的时候,再执行删库语句删除之前的数据库。(删除请务必谨慎操作,建议直接新建一个新库,名字随意)

断开pg会话

SELECT pg_terminate_backend(pg_stat_activity.pid) 

FROM pg_stat_activity 

WHERE datname='dbname' AND pid<>pg_backend_pid();

然后在另一个数据库活动对象上 删除之前的数据库

注意: 还原之前请删除数据库重建,可能需要停掉服务,断开所有数据库的会话连接

linux还原

执行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

数据库备份还原操作不一定要在装数据库的那台服务器上操作,只要别的服务器上也有PG的程序,并且这服务器能和目标服务器ping通,只需要把上面的localhost改成对应的IP地址,即可在服务器A上备份还原服务器B上的数据库,地址改为B的IP。

你可能感兴趣的:(postgres数据库,还原与备份命令)