目前postgres的版本高的有12+,低的还有10+,都是普遍正在使用的版本,甚至有些老系统还在使用9+的系列版本。因为某些原因,现在需要将部分数据从12+高版本迁移到10+的低版本
这个在理论上是可行的,可选的组件有pg_dump和pg_dumpall。
pg_dump只备份数据库集群中的某个数据库的数据,它不会导出角色和表空间相关的信息,因为这些信息是整个数据库集群共用的,不属于某个单独的数据库。
pg_dumpall,对集簇中的每个数据库调用pg_dump来完成该工作,还会还转储对所有数据库公用的全局对象(pg_dump不保存这些对象)。 目前这包括适数据库用户和组、表空间以及适合所有数据库的访问权限等属性。
备份命令:
对单个数据库进行备份
pg_dump –h 127.0.0.1 -p 5432 -U postgres -c –f dbname.sql dbname
使用如下命令可对全部pg数据库进行备份
pg_dumpall –h 127.0.0.1 –p 5432 -U postgres –c –f db_bak.sql
恢复方式很简单,执行恢复命令即可:
psql –h 127.0.0.1 -p 5432 -U postgres –f db_bak.sql
这里需要注意的是,pg_dump和pg_dumpall都要用和当前pgsql版本相同配套的组件才行,比如12+的pgsql操作的时候,需要使用12+相应的pg_dump/pg_dumpall组件;10+的时候,需要使用10+相应的psql,不然会报一些莫名其妙的错误出来。