暂无图片
在同一台服务器上,备份恢复一个数据库,那种方式快?
我来答
分享
James Yu
2024-09-24
在同一台服务器上,备份恢复一个数据库,那种方式快?

在同一台服务器上,譬如有个database db1,大小几十GB, 现在想在同一台服务器上通过备份/恢复产生一个 db1_test 用于测试,希望能快速生成测试库用于对比测试,用那个工具比较安全、快捷? 谢谢!

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
吾亦可往

在同一台服务器上对 PostgreSQL 数据库进行备份恢复以快速生成测试库,以下是一些较为安全快捷的方式:


一、使用 pg_dump 和 pg_restore


  1. 备份数据库 db1
   pg_dump -F c -b -v -f db1_backup.dump db1
复制


这将以自定义格式(-F c)备份数据库 db1,生成一个名为 db1_backup.dump 的备份文件。


  1. 恢复为新数据库 db1_test


   pg_restore -d db1_test -v db1_backup.dump
复制


这将把备份文件恢复到新的数据库 db1_test 中。


优点:


  • 是 PostgreSQL 自带的工具,稳定性高。
  • 可以灵活控制备份和恢复的选项。


缺点:


  • 对于非常大的数据库,恢复时间可能较长。


二、使用 pg_basebackup


如果数据库处于归档模式下,可以使用 pg_basebackup 进行物理备份和恢复。


  1. 备份:
   pg_basebackup -D backup_directory -Fp -Xs -v -P -h localhost -p 5432 -U username -R
复制


这将进行物理备份,并生成一个包含恢复所需信息的文件。


  1. 恢复:
    首先停止数据库服务器,然后将备份目录复制到新的数据库目录,并修改配置文件以指向新的数据库名称。


优点:


  • 对于大型数据库,物理备份和恢复可能比逻辑备份更快。


缺点:


  • 需要数据库处于归档模式,配置相对复杂。
  • 可能需要更多的磁盘空间来存储备份。


总体而言,对于几十 GB 的数据库,使用 pg_dump 和 pg_restore 通常是比较安全可靠的选择。如果数据库处于归档模式且对恢复速度有更高要求,可以考虑使用 pg_basebackup。同时,在进行备份和恢复操作之前,一定要确保对数据进行了充分的测试,并在非生产环境中进行演练,以确保操作的安全性和正确性。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
postgres_fdw这个扩展,可以实现从pg到oracle、mysql的跨库吗?
回答 1
不能,跨到oracle要用oraclefdw,跨到mysql要用mysqlfdw
pg中的行锁的存放地方再那里?
回答 1
有一个函数pglockstatus基于这个函数有一个视图pglocks就是简单封装了这个函数 CREATEORREPLACEVIEWpgcatalog.pglocksASSELECTlock
pg中对绑定变量的列收集直方图,会引起绑 定变量窥探的问题吗?
回答 1
PG有个plancachemode参数,设置为forcecustomplan将一直使用硬解析。
postgresql好用的etl工具?
回答 1
可以尝试下国内的ETLCloud,提供很多数据集成和转换功能,支持多种数据源的连接和转换操作,包括数据格式转换、数据清洗、字段映射等操作,能够将转换后的数据加载到目标系统中,可视化操作界面,刚进门也能
关于pg_squeeze,当表有更新操作,squeeze_table会被卡住,请问这个线上环境如何使用?
回答 1
在PostgreSQL中,pgsqueeze是一个用于在线表重组的扩展工具,它可以有效减少表膨胀(bloat),从而提高性能。然而,当表有频繁的更新、删除或插入操作时,pgsqueeze.squeez
PostgreSQL-SysLogger辅助进程收集哪些进程的stderr输出
回答 5
已采纳
syslogger辅助进程从postmaster进程、所有的服务进程及其他辅助进程收集所有的stderr输出,并写入到日志文件。全选
PostgreSQL中文本和varchar之间有什么区别?
回答 1
已采纳
都是变长,varchar有长度限制,text没有长度限制
postgres有 falshback query?
回答 3
因为是人为误操作,所以常规操作手段是优先考虑物理恢复,即在异机环境做库恢复,然后读出误操作前的数据,再将数据导入到生产环境;当然也可以在生产库使用物理备份集和归档进行基于时间点恢复,全库恢复到误操作前
为什么新版的postgresql编译的时候要用make world?
回答 1
其实不新了,这是PG9.0,2010年引入的编译选项。意思是编译、测试所有的代码,包括文档、插件等。
在pg里面,A这个是原表,怎样高效的查询得到B这边的结果呢?
回答 1
不知道新版本的PG是否支持层次查询了。但可以考虑使用和构造递归查询,示例如下:WITHrecursiveT(code,parentcode,name,h)AS(SELECTcode,parentcod