postgresql数据备份小结


这篇文章谈到的是database级别的备份

pg_dump备份, 有多个参数和选项

我想到的一个场景它没有满足:

备份A库BschemaC表,
输出的sql文件 或 归档文件中 create 和 copy 的目标 是 B . C
恢复时, 我想恢复到 B2.C, 这个地方就无解,
数据少, 文本还能替换,数据多到文件打不开怎么办

既然我们提前考虑到了这种情况, 就尽量提前规避

我总结的备份步骤如下:

第一步: 无论如何, 不管是备份database, 还是schema, 都要先备份结构, trigger, function ,table,
因为它们之间可能存在依赖关系, 避免恢复数据时事务失败, 不必要的vaccum
-s参数意味着只备份结构, 不备份data

 pg_dump  --host=localhost --port=6000 --username=demo2  --dbname=demo2  --schema=public -s 
 --file=C:\Users\zhangtianxiao\Documents\pgsql\t_b.sql

第二步: 备份数据, 备份数据可以具体到database, schema, table级别,
当整个库, 整个schema, 又或是某张表, 总体数据量太多, 整体备份会耗时很久,
我们可以分别备份,恢复
-s参数意味着只备份数据, 不备份结构

pg_dump  --host=localhost --port=6000 --username=demo2  --dbname=demo2  --schema=public 
-t t_b -a  --file=C:\Users\zhangtianxiao\Documents\pgsql\t_b.sql

恢复数据:
pg_dump中备份的sql 或 归档文件中 create 和 copy 的目标已经是 schema_name + table_name,
所以这里只需要提供dbname

psql --host=localhost --port=6000 --username=demo2  db_name < C:\Users\zhangtianxiao\Documents\pgsql\t_b.sql


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM