postgresql 怎么还原数据库

postgresql 怎么还原数据库,第1张

还原需要原先对数据库进行过备份,才能从备份恢复,如果没有备份过,那是无法还原的。

恢复数据库,指令如下:

pg_restore.exe --host localhost --port 5432 --username "postgres" --dbname "symbolmcnew" --no-password --verbose "databasename.backup"

指令解释:如上命令,psql是恢复数据库命令,localhost是要恢复到哪个数据库的地址,当然你可以写上ip地址,也就是说能远程恢复(必须保证 数据库允许外部访问的权限哦~);postgres 就是要恢复到哪个数据库的用户;symbolmcnew 是要恢复到哪个数据库,databasename.backup指备份文件。

1、在保存备份文件的目录xxx下建立一个文件backup.sh,其内容是:

tar-zcfbin.tar.gz/bin

tar-zcfboot.tar.gz/boot

tar-zcfdev.tar.gz/dev

tar-zcfetc.tar.gz/etc

tar-zcflib32.tar.gz/lib32

tar-zcflib64.tar.gz/lib64

tar-zcflib.tar.gz/lib

tar-zcfopt.tar.gz/opt

tar-zcfsbin.tar.gz/sbin

tar-zcfselinux.tar.gz/selinux

tar-zcfsrv.tar.gz/srv

tar-zcfvar.tar.gz/var

tar-zcfusr.tar.gz/usr

2、在需要备份的时候进入到保存备份内容的目录执行一次命令:shbackup.sh

3、在保存备份文件的目录xxx下建立一个叫restore.sh的文件,其内容如下:

tar-zxf/mnt/xxx/bin.tar.gz

tar-zxf/mnt/xxx/boot.tar.gz

tar-zxf/mnt/xxx/dev.tar.gz

tar-zxf/mnt/xxx/etc.tar.gz

tar-zxf/mnt/xxx/lib32.tar.gz

tar-zxf/mnt/xxx/lib64.tar.gz

tar-zxf/mnt/xxx/lib.tar.gz

tar-zxf/mnt/xxx/opt.tar.gz

tar-zxf/mnt/xxx/sbin.tar.gz

tar-zxf/mnt/xxx/selinux.tar.gz

tar-zxf/mnt/xxx/srv.tar.gz

tar-zxf/mnt/xxx/var.tar.gz

tar-zxf/mnt/xxx/usr.tar.gz

4、如果需要系统恢复,我就用光盘启动,mount原来的根目录为yyy,接着mount保存备份文件的目录为xxx,接着进入到/mnt/yyy,并在此下达命令:sh/mnt/xxx/restore.sh

说明:

(1)、备份和恢复需要1个多小时,这个时间根据你电脑的CPU速度和硬盘转速会有所不同。

(2)、上面备份与恢复没有顾及/home目录和/root目录,因为我的系统主要是给学生做练习用的,那两个目录的内容没有意义。

在实际工作中,可能这两个目录才是最重要的,你可以模仿着别的目录添加到backup.sh和restore.sh文件中去,甚至别的目录都不备份(以便节约备份时间)就备份这两个目录。

--  以 test 作为用户名,导出 localhost:5432 服务器上的 Test 数据库。

--  导出的文件名为 test_data

F:\PostgreSQL\9.2\bin>pg_dump -f test_data -h localhost -U test -p 5432 Test

口令:

F:\PostgreSQL\9.2\bin>dir test_*

 驱动器 F 中的卷是 Install

 卷的序列号是 24AD-61D9

 F:\PostgreSQL\9.2\bin 的目录

2013-04-15  14:46           136,270 test_data

               1 个文件        136,270 字节

               0 个目录 10,456,657,920 可用字节

-- 将 test_data  文件中的数据,导入到 localhost:5432 服务器上的 Test2 数据库。

F:\PostgreSQL\9.2\bin>psql.exe -h localhost -U test -p 5432 -d Test2 < test_data

用户 test 的口令:test

SET

SET

SET

SET

SET

CREATE SCHEMA

ALTER SCHEMA

CREATE EXTENSION

COMMENT

CREATE EXTENSION

COMMENT

......

上面的例子, 是  备份 / 恢复整个数据库的.

如果你是要 仅仅 备份 / 恢复  某个表的,  那么命令行里面增加下面的参数:

-t, --table=TABLE            只转储指定名称的表


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8328587.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-15
下一篇2023-04-15

发表评论

登录后才能评论

评论列表(0条)

    保存