备份:
一般在安装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。