PostgreSQL数据库升级的速度测试
之前博主在PostgreSQL升级这篇文章中介绍了几种升级方法,今天我们就按照那篇文章来总结下各个方法的效率问题。哪种升级方法最快,具体应该选择哪种升级办法?如果你对升级还不怎么熟悉,可以再熟悉这个网址https://zhangnq.com/1597.html上的内容 。
测试环境:
操作系统:ubuntu 12.04
原数据库:postgresql 9.2.4
新数据库:postgresql 9.3.1
数据库大小:pgdata目录150G,另外几个表空间总共约700G。
实际操作:
一、使用pg_dump,不加任何参数直接备份、psql恢复
开始时间:3月17日14:29
结束时间:3月17日20:05
备份数据库文件大小约300G 。
psql恢复
开始时间:3月18日11:03
结束时间:3月18日18:16
小结:备份和恢复的总时间大概需要13小时。
二、使用pg_dump,添加-Fc参数备份、pg_restore恢复
开始时间:3月19日9:14
结束时间:3月19日20:00
备份数据库文件大小约115G。
pg_restore恢复
开始时间:3月20日16:52
结束时间:3月20日19:02
小结:备份恢复总时间大概需要13小时。
比较两种升级方案的测试结果可以发现,他们升级恢复总的花费时间相差不大,不过添加-Fc参数后可以把备份文件大小减小很多。不过在9.3版本,pg_dump新增加了-j并行备份的功能,我想速度肯定会快很多。由于环境只有9.2的,所以这个博主暂时没测试。
三、使用pg_upgrade不加-j并行参数升级
开始时间:4月1日09:55
结束时间:4月1日13:23
小结:升级花费3.5小时左右,然后运行analyze_new_cluster.sh脚本,大概又用时1.5小时,总共5小时。
四、使用pg_upgrade添加-j并行参数升级
开始时间:4月1日16:28
结束时间:4月1日19:39
小结:这里我添加-j 15,看看效果,不过升级还是花费了3小时左右,貌似效果不怎么明显。
五、使用pg_upgrade添加-j 15 -k参数升级
添加-k硬链接后升级速度快了很多,没几分钟居然升级好了。快的有些让我不敢相信,然后运行analyze_new_cluster.sh脚本大概用了1小时左右。
不过这里需要注意,因为添加-k参数后是直接在原文件上修改,所以强烈建议升级前对数据目录,所有表空间数据进行硬备份,不然出错会比较麻烦。
测试总结:
以上是博主实际升级操作后的总结,可能比较粗浅。在数据库比较大时,升级速度pg_upgrade加硬链接参数应该会比较快,但是pg_upgrade在操作之前一定要记得数据备份。pg_dump逻辑备份恢复的升级操作数据安全性比较高,不容易出错。
升级前可能在postgresql.conf中还可以对性能进行优化,这个需要继续学习。
参考链接:https://zhangnq.com/1597.html