注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

PostgreSQL 中文网

 
 
 

日志

 
 

PostgreSQL9.3Beta1:pg_dump 新增并行参数 (Parallel pg_dump)  

2013-05-17 14:59:07|  分类: Postgres基础 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

         9.3 版本开始,pg_dump 增加 -j njobs 参数支持并行导出功能,而之前版本的 pg_dump 备份时
不支持这一功能,当然这个并行也有很多限制,之后会介绍到。

一 环境信息
主机: 8 核 8GB
数据库: PostgreSQL9.3beta1
系统:CentOS release 5.4

--1.1 数据库信息
 [pg93@server1 ~]$ psql
psql (9.3beta1)
Type "help" for help.

francs=> select pg_size_pretty(pg_database_size('francs'));
 pg_size_pretty 
----------------
 5678 MB
(1 row)

francs=> \dt+
                        List of relations
 Schema |    Name    | Type  | Owner  |    Size    | Description 
--------+------------+-------+--------+------------+-------------
 francs | big_table1 | table | francs | 1613 MB    | 
 francs | big_table2 | table | francs | 1074 MB    | 
 francs | big_table3 | table | francs | 535 MB     | 
 francs | big_table4 | table | francs | 265 MB     | 
 francs | big_table5 | table | francs | 1073 MB    | 
 francs | test_1     | table | francs | 8192 bytes | 
 francs | test_json1 | table | francs | 16 kB      | 
(7 rows)
   

二  并行备份测试
--2.1 普通备份
 pg_dump -h 127.0.0.1 -E UTF8 -Fc -U postgres -v francs > francs.dmp
 备注:耗时 9分51秒;  备份文件大小 1046 MB 。

--2.2 并行备份: -j 2
--2.2.1 备份脚本
 pg_dump -h 127.0.0.1 -E UTF8 -Fd -j 2 -U postgres -v francs -f francs_j2
 备注:耗时 4分59秒;  备份目录大小 1045 MB。

--2.2.2 备份过程中有两个 copy 进程
 [pg93@server1 tf]$ ps -ef | grep COPY
pg93     15813 32478 42 13:53 ?        00:00:02 postgres: postgres francs 127.0.0.1(59247) COPY        
pg93     15814 32478 40 13:53 ?        00:00:02 postgres: postgres francs 127.0.0.1(59248) COPY 
   
--2.2.3 备份目录的文件
 [pg93@server1 tf]$ ll francs_j2
total 1.1G

-rw-rw-r-- 1 pg93 pg93   52 May 17 13:57 2751.dat.gz
-rw-rw-r-- 1 pg93 pg93   74 May 17 13:57 2753.dat.gz
-rw-rw-r-- 1 pg93 pg93 368M May 17 13:56 2754.dat.gz
-rw-rw-r-- 1 pg93 pg93 246M May 17 13:55 2755.dat.gz
-rw-rw-r-- 1 pg93 pg93 124M May 17 13:57 2756.dat.gz
-rw-rw-r-- 1 pg93 pg93  62M May 17 13:58 2757.dat.gz
-rw-rw-r-- 1 pg93 pg93 246M May 17 13:57 2758.dat.gz
-rw-rw-r-- 1 pg93 pg93 7.4K May 17 13:53 toc.dat
  备注:pg_dump 加了 -j 参数后,会对每张表生成一个已压缩的备份文件。


--2.3 并行备份: -j 4
--2.3.1 备份脚本
 pg_dump -h 127.0.0.1 -E UTF8 -Fd -j 4 -U postgres -v francs -f francs_j4
 备注:耗时 4分16秒  ;  备份目录大小 1045 MB。
 
--2.3.2 对应有 4 个 COPY 进程
 [pg93@server1 tf]$ ps -ef | grep COPY
pg93     16280 32478 39 14:00 ?        00:00:03 postgres: postgres francs 127.0.0.1(55852) COPY        
pg93     16283 32478 30 14:00 ?        00:00:03 postgres: postgres francs 127.0.0.1(55853) COPY        
pg93     16285 32478 34 14:00 ?        00:00:03 postgres: postgres francs 127.0.0.1(55854) COPY        
pg93     16286 32478 33 14:00 ?        00:00:03 postgres: postgres francs 127.0.0.1(55855) COPY  
 备注:开启 4 个并行进程时,服务器明显负载升高,负载达到 6 左右。
  
--2.4 总结
    
    从上面测试来看,开启并行备份产生的文件和不开启并行的文件大小差不多大,但开启并行的总体时间
要短些,服务器负载也高些。 

数据库大小: 5678 MB   

  无并行 -j 2 -j 4 
 消耗时间  9分51秒 4分59秒 4分16秒
 备份文件大小 1046 MB  1045 MB 1045 MB
   


三 恢复测试

         加了 -j 参数的 pg_dump 最后产生的是目录,并且目录里存放的是已压缩的表文件,那么如何利用这个
目录恢复数据库呢,接着测试。

--3.1 创建新库 francs2 
 postgres=# create database francs2;
CREATE DATABASE

postgres=# grant all on database francs2 to francs with grant option;
GRANT

postgres=# \c francs2 francs
You are now connected to database "francs2" as user "francs".

francs2=> create schema francs;
CREATE SCHEMA
   
--3.2 将备份文件导入库 francs2   
  pg_restore -h 127.0.0.1 -d francs2 -U postgres -v -j 2  francs_j4

  备注:francs_j4 是数据目录,之前版本这里需要指定文件,而这里指定的是目录。   

--3.3 验证
 francs=> \c francs2 francs
You are now connected to database "francs2" as user "francs".

francs2=> \dt
          List of relations
 Schema |    Name    | Type  | Owner  
--------+------------+-------+--------
 francs | big_table1 | table | francs
 francs | big_table2 | table | francs
 francs | big_table3 | table | francs
 francs | big_table4 | table | francs
 francs | big_table5 | table | francs
 francs | test_1     | table | francs
 francs | test_json1 | table | francs
 备注:导入正常。

四 pg_dump 开启并行注意事项

  1 要开启 pg_dump 的并行参数,归档格式必须为 -Fd 。
  2 开启并行后,会产生一个数据目录,并在这个目录中产生已压缩的数据文件。
  3 开启并行后,运行过程中数据库负载会增加,但总体运行时间要短些。
  4 使用 9.3 版本的 pg_dump 并行备份 pre-9.2 版本需要特别注意,建议不要这么做。

五 参考

  评论这张
 
阅读(8780)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016