postgresql 物理备份 tar + pigz
普通的tar命令是单进程执行,备份稍大些目录时就会感觉力不从心。linux 推出了并行版本的tar,那就是 pigz。备份速度非常快,使用一次,你就离不了它了。
安装pigz
yum install pigz
pigz备份
tar --exclude=/var/lib/postgresql/9.1/main/postmaster.pid --exclude=/var/lib/postgresql/9.1/main/pg_xlog -Pcf - /var/lib/postgresql/9.1/main/ /pg_tbs/ |pigz -p 8 > /backup/20180117_base.tgz
解压
tar -Pxvf /backup/20180117_base.tgz
或者
tar -I pigz -Pxvf /backup/20180117_base.tgz -C /tmp
或者
unpigz < /backup/20180117_base.tgz | tar -PxvC /tmp/
pigz -p 8 代表使用8个进程,也可以开16个。
这个命令在短时间内是高cpu、高io的操作。在生产环境中合理调整并发进程。
如果库比较大时,压缩后的文件会比较大,这时需要 split 来分割一下
压缩分割,一次搞定
tar --exclude=/var/lib/postgresql/9.1/main/postmaster.pid --exclude=/var/lib/postgresql/9.1/main/pg_xlog -Pcf - /var/lib/postgresql/9.1/main/ /pg_tbs/ |pigz -p 8 |split --bytes=10G - /backup/20180117_base.tgz.
合并解压,一次搞定
cat /backup/20180117_base.tgz.a* | tar -Pxv -I pigz