博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
postgres 数据备份与恢复
阅读量:5793 次
发布时间:2019-06-18

本文共 2368 字,大约阅读时间需要 7 分钟。

hot3.png

PostgreSQL自带一个客户端pgAdmin,里面有个备份,恢复选项,也能对数据库进行备份 恢复(还原),但最近发现数据库慢慢庞大的时候,经常出错,备份的文件过程中出错的几率那是相当大,手动调节灰常有限。所以一直寻找完美的备份恢复方案。

梦里寻他千百度,伊人却在灯火阑珊处...其实PostgreSQL内置不少的工具,寻找的备份恢复方案就在其中:pg_dump,psql。这两个指令在数据库的安装目录下,比如我自己本地安装的,路径形如:C:\Program Files\PostgreSQL\9.0\;然后进入到bin文件夹,会看到不少的exe文件,这就是PostgreSQL内置的工具了。里面会找到pg_dump.exe,psql.exe两个文件。我们怎么用他们?

用法:

备份数据库,指令如下:

pg_dump -h 164.82.233.54 -U postgres databasename > C:\databasename.bak

开始-运行-cmd 弹出dos控制台;然后 在控制台里,进入PostgreSQL安装目录bin下:

cd C:\Program Files\PostgreSQL\9.0\bin

最后执行备份指令:
pg_dump -h 164.82.233.54 -U postgres databasename > C:\databasename.bak

指令解释:如上命令,pg_dump 是备份数据库指令,164.82.233.54是数据库的ip地址(必须保证数据库允许外部访问的权限哦~),当然本地的数据库ip写 localhost;postgres 是数据库的用户名;databasename 是数据库名。> 意思是导出到C:\databasename.bak文件里,如果没有写路径,单单写databasename.bak文件名,那么备份文件会保存在C:\Program Files\PostgreSQL\9.0\bin 文件夹里。

恢复数据库,指令如下:
psql -h localhost -U postgres -d databasename <  C:\databasename.bak

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

以上所有的是针对windows而言的,如果在linux下,会不会有效?

在linux里依然有效。有一个值得注意的是:如果直接进入PostgreSQL的安装目录bin下,执行命令,可能会出现 找不到pg_dump,psql 的现象,我们在可以这样:

备份:

/opt/PostgreSQL/9.0/bin/pg_dump -h 164.82.233.54 -U postgres databasename > databasename.bak

恢复:

/opt/PostgreSQL/9.0/bin/psql -h localhost -U postgres -d databasename < databasename.bak

备份表

pg_dump  --host 主机名 --port 5432 --username 用户名 -t 表名 >C:/备份后的名称.sql 数据库名

备份表

pg_dump -i -h 主机名 -p 5432 -U 用户名-F c -v -f        "C:/DataCatalog.backup" -t 表名 数据库名

还原表
pg_restore -i -h 主机名 -p 5432 -U postgres -d 数据库名 -a -t 数据库表 -v "C:/DataCatalog.backup"

pg_dump  --host 主机名 --port 5432 --username 用户名 -t 表名 >C:/备份后的名称.sql 数据库名

这种形式可以生成sql语句文件 ,,还不知道以何种形式还原;

删除列名

ALTER TABLE 表名   DROP COLUMN 列名

修改字段长度

alter table 表名 alter column 列名 type varchar(100) ;

设置序列

SELECT setval('public.seq_test_student', 10, true);

指定当前值为10 

ALTER TABLE tableName

DROP CONSTRAINT  projectbill_pkey,
DROP COLUMN "id",  
ADD COLUMN "id" serial8 NOT NULL,  //自动增长
ADD CONSTRAINT projectbill_pkey PRIMARY KEY ("id");   主键
-- ALTER TABLE projectbill ADD COLUMN id integer   PRIMARY KEY;

备份表:pg_dump -t 要备份的表 -f test_data  -h 主机名 -U 用户名 -p 5432 数据库名还原表:psql.exe -h 主机 -U 用户名 -p 5432 -d 数据库 < test_datatest_data是备份数据,此处放在postgre/bin/test_data中可以找到

转载于:https://my.oschina.net/stonezing/blog/178838

你可能感兴趣的文章
List<T> to DataTable
查看>>
[Java]Socket和ServerSocket学习笔记
查看>>
stupid soso spider
查看>>
svn命令在linux下的使用
查看>>
MySQL主从同步相关-主从多久的延迟?
查看>>
Gradle之module间依赖版本同步
查看>>
一些kindle资源
查看>>
java springcloud版b2b2c社交电商spring cloud分布式微服务(十五)Springboot整合RabbitMQ...
查看>>
SpringCloud使用Prometheus监控(基于Eureka)
查看>>
10g手动创建数据库
查看>>
Linux—文件系统
查看>>
运用Loadrunner测试Mysql数据库性能
查看>>
Spring MVC EL表达式不能显示
查看>>
【致青春】我们挥霍时间的年代
查看>>
Windwos Server 2008 R2 DHCP服务
查看>>
SAS和SATA硬盘的区别
查看>>
现代程序设计 学生情况调查
查看>>
U盘安装linux后无法引导
查看>>
C# 矩阵作业
查看>>
俺的新书《Sencha Touch实战》终于出版了
查看>>