GP数据库备份

1. 表的逻辑备份方式
1) 备份表结构及数据:
create table new_tablename as select * from old_tablename;

select * into new_tablename from old_tablename where 1=1;
2) 仅备份表结构(不备份数据):
select * into new_table name from old_tablename where 1<>1;
3) 批量备份表结构及数据【通过如下语句生成备份指令,拷贝出来直接执行即可生成备份表】:
select 'create table back_'||tablename||' as select * from '||tablename||';' from pg_catalog.pg_tables t where t.schemaname='public';

select 'select * into back_'||tablename||' from '||tablename||' where 1=1;' from pg_catalog.pg_tables t where t.schemaname='public';
4) 批量备份表结构(不备份数据)【通过如下语句生成备份指令,拷贝出来直接执行即可生成备份表】: 
select 'select * into back_'||tablename||' from '||tablename||' where 1<>1;' from pg_catalog.pg_tables t where t.schemaname='public';


注释:此备份目的,仅仅只是为了防止在SP开发中因误操作导致数据错误影响测试或开发;


2. 备份数据库
1) 转储一个数据库: 
$ pg_dump mydb > db.out
2) 重载这个数据库: 
$ psql -d database -f db.out
3) 输出一个叫 mydb 的包含BLOB 的数据库到一个 tar 文件: 
$ pg_dump -Ft -b mydb > db.tar
4) 把这个数据库(连同BLOB)一起恢复到一个现有的叫 newdb 的数据库: 
$ pg_restore -d newdb db.tar
5) 转储所有数据库(pg_dumpall 内部调用 pg_dump): 
$ pg_dumpall > db.out
建议:恢复完之后,建议在每个已恢复的对象上运行 ANALYZE。 这样优化器就可以得到有用的统计。 你也可以用 vacuumdb -a -z 清理所有数据库。


3. 数据库物理表空间回收:
1) VACUUM用法(VACUUM 回收已删除元组占据的存储空间):
VACUUM [ FULL | FREEZE ] [ VERBOSE ] [ table ]
VACUUM [ FULL | FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]
VACUUM ANALYZE 先执行一个 VACUUM 然后是给每个选定的表执行一个 ANALYZE;


2) Vacuumdb用法(用于整理 PostgreSQL 数据库及查询优化器的内部统计数据,是vacuum命令的一个封装):
vacuumdb [connection-option...] [--full | -f] [--verbose | -v] [--analyze | -z] [--table | -t table [( column [,...] )] ] [dbname]

vacuumdb [connection-options...] [--all | -a] [--full | -f] [--verbose | -v] [--analyze | -z]






  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值