PostgreSQL使用pg_dump导出与恢复

相关概念:PostgreSQL

pg_dump 适合做逻辑备份,常见用途有:

  • 导出整个数据库
  • 只导出部分表
  • 迁移到另一台机器

整库导出

pg_dump -U looko -d ark_voice_sjp \
  --no-owner \
  --no-privileges \
  --clean \
  -f ark_voice_sjp.sql

整库恢复

psql -h ts.1phk.linux -U postgres -d ark_voice_sjp -f ark_voice_sjp.sql

只导出部分表

pg_dump -U looko -h localhost -p 6432 -d arkvoiceddd \
  -t 'album*' \
  -t 'song*' \
  -t artist \
  --clean \
  --data-only \
  --if-exists \
  --no-owner \
  --no-privileges \
  > selected_tables_backup.sql

导入部分表数据

psql -U looko -h localhost -p 6432 -d arkvoiceddd -f selected_tables_backup.sql

参数理解

常见参数可以这样记:

  • --clean:导入前先执行删除
  • --data-only:只导出数据,不导出表结构
  • --no-owner:不保留原 owner
  • --no-privileges:不导出授权信息

如果目标环境和源环境的角色、权限、库所有者不完全一致,这几个参数会很实用。