PostgreSQL数据库备份之pg

  • 时间:
  • 浏览:1

postgres  3542  3540  0 12:52 ?        00:00:00 postgres: logger process                               

(1 行记录)

postgres  6181  3540  1 13:41 ?        00:00:00 postgres: postgres music [local] idle in transaction   

postgres  61200  5445  0 13:41 pts/0    00:00:00 pg_dump music -j 2 -Fd -f music_j2

-bash-3.2$ date

postgres  5445  5444  0 13:28 pts/0    00:00:00 -bash

postgres  6184  61200  0 13:41 pts/0    00:00:00 pg_dump music -j 2 -Fd -f music_j2

-bash-3.2$ date 

postgres  3545  3540  0 12:52 ?        00:00:00 postgres: writer process                               

root      6151  5515  0 13:39 pts/1    00:00:00 grep postgres

-bash-3.2$ pg_dump music -j 2 -Fd -f music_j2

单系统进程导出:

开始 导出music数据库:

postgres  3540     1  0 12:52 ?        00:00:00 /usr/pgsql-9.4/bin/postmaster -D /var/lib/pgsql/9.4/data

postgres  3547  3540  0 12:52 ?        00:00:00 postgres: autovacuum launcher process                  

(1 行记录)

postgres  5955  3540  0 13:35 ?        00:00:00 postgres: autovacuum worker process   music           

postgres  3544  3540  0 12:52 ?        00:00:03 postgres: checkpointer process                         

2015年 07月 200日 星期四 13:39:14 CST

postgres  6143  5445  1 13:39 pts/0    00:00:00 pg_dump music

导出的时间是200毫秒。

数据库里仅有一张2G左右的表:

 1968 MB

root      5444  200200  0 13:28 pts/0    00:00:00 su - postgres

话越来越来越多说,咱们边走边聊,实验走起!~~~

[root@dbserver music]# ps -ef|grep postgres

postgres  3546  3540  0 12:52 ?        00:00:01 postgres: wal writer process                           

在单行导出的前一天 想看 的后台系统进程:

postgres  3549  3540  0 12:52 ?        00:00:00 postgres: stats collector process                      

postgres  6182  61200 52 13:41 pts/0    00:00:06 pg_dump music -j 2 -Fd -f music_j2

-bash-3.2$ pg_dump music >/tmp/music20200916.dmp

postgres  5955  3540  0 13:35 ?        00:00:00 postgres: autovacuum worker process   music            

2015年 07月 200日 星期四 13:41:44 CST

music=# select count(*) from test;

而且测试系统的CPU是设置的另一有有几个多单核CPU,而且设置成2度的并行:

postgres  3542  3540  0 12:52 ?        00:00:00 postgres: logger process                               

postgres  3549  3540  0 12:52 ?        00:00:00 postgres: stats collector process                      

postgres  5445  5444  0 13:28 pts/0    00:00:00 -bash

[root@dbserver music]# ps -ef|grep postgres

 在数据库导出的前一天 ,可都可以都可以通过 -j 参数设置并行度,可都可以都可以在一定程度上提高备份的传输速率,代价是消耗更多的系统资源。

而且数据类型较单一而且数据量较小,且使用的是固态硬盘,而且时间差别就有一阵一阵明显,有意使用者可在数据量大和数据类型宽裕的环境中验证其导出效果。

music=# select pg_size_pretty(pg_relation_size('test'));

找另一有有几个多大越来越来越多的表,中间有200万条数据:

导出时间是11毫秒。

postgres  3546  3540  0 12:52 ?        00:00:01 postgres: wal writer process                           

postgres  3548  3540  0 12:52 ?        00:00:00 postgres: archiver process   last was 0000000200000002000000B3

postgres  6183  3540 26 13:41 ?        00:00:03 postgres: postgres music [local] COPY                  

postgres  6144  3540 38 13:39 ?        00:00:04 postgres: postgres music [local] COPY                  

postgres  3547  3540  0 12:52 ?        00:00:00 postgres: autovacuum launcher process                  

postgres  3544  3540  0 12:52 ?        00:00:03 postgres: checkpointer process                         

  count  

操作过程:

2015年 07月 200日 星期四 13:39:44 CST

并行导出:

postgres  3545  3540  0 12:52 ?        00:00:00 postgres: writer process                               

----------------

2015年 07月 200日 星期四 13:41:23 CST

在并行导出的前一天 想看 后台的系统进程:

 pg_size_pretty 

 2000005

postgres  3540     1  0 12:52 ?        00:00:00 /usr/pgsql-9.4/bin/postmaster -D /var/lib/pgsql/9.4/data

postgres  3548  3540  0 12:52 ?        00:00:00 postgres: archiver process   last was 0000000200000002000000B0

root      6190  5515  0 13:41 pts/1    00:00:00 grep postgres

-bash-3.2$ date

-bash-3.2$ date

postgres  6185  3540  0 13:41 ?        00:00:00 postgres: postgres music [local] idle in transaction   

---------

root      5444  200200  0 13:28 pts/0    00:00:00 su - postgres