点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!
pg_dump是什么
即使当前数据库正在使用,也能够生成一致性的备份。
这也就意味着转储的内容是pg_dump开始运行时刻的数据库快照,且在pg_dump运行过程中发生的更新将不会被转储。pg_dump备份期间不会阻塞其他用户访问数据库(包括读、写),但是会阻塞那些需要排它锁的操作,比如大部分形式的ALTER TABLE。
pg_dump只能备份一个数据库。
如果要备份Cluster中数据库共有的全局对象,例如角色和表空间,需要使用pg_dumpall。
转储可以被输出到脚本或归档文件格式。
转储的脚本是包含 SQL 命令的纯文本文件,它们可以用来重构数据库到它被转储时的状态。要从这样一个脚本恢复,直接使用psql执行即可。脚本文件还可以通过修改一部分内容在其他架构的数据库上重构数据库,其和mysqldump很类似。这也是相对于其他备份方法的一个重要优势。
注意:pg_dump产生的转储文件不包含优化器用来做出查询计划决定的统计信息。当导入完成后,建议做全库的ANALYZE,这对后续优化器能根据可用的统计信息对SQL执行进行最优化操作。
另一种可选的归档文件格式必须与pg_restore配合使用来重建数据库。
它们允许pg_restore能选择恢复什么,或者甚至在恢复之前对条目重排序。归档文件格式被设计为在架构之间可移植。当使用归档文件格式之一并与pg_restore组合时,pg_dump提供了一种灵活的归档和传输机制。
pg_dump可以被用来备份整个数据库,然后pg_restore可以被用来检查归档并/或选择数据库的哪些部分要被恢复。
最灵活的输出文件格式是“自定义”格式(-Fc)和“目录”格式(-Fd)。它们允许选择和重排序所有已归档项、支持并行恢复并且默认是压缩的。“目录”格式是唯一一种支持并行转储的格式。
以pgtt库为例进行讲解
2.1 将源数据库转储到文件中。在之前要查看一下数据库的大小,选择合适大小的目录存放文件。
c pgtt
select pg_database_size(pgtt);
su - postgres
pg_dump -U root -p 10001 -d pgtt -b -f /app/pg/pgtt_data20211022.sql
scp pgtt_data20211022.sql postgres@xxx.xxx.xxx.xxx:/app/pg
CREATE USER pgtt WITH ENCRYPTED PASSWORD xxxxxx;
CREATE DATABASE pgtt OWNER pgtt TEMPLATE template1;
REVOKE CONNECT ON DATABASE pgtt FROM PUBLIC;
GRANT CONNECT ON DATABASE pgtt TO pgtt;
su - postgres
psql -U root -p 10001 -d pgtt -f /app/pg/pgtt_data20211022.sql
pg_dump -C -h local -U localuser sourcedb | psql -h remote -U remoteuser targetdb
pg_dump -C -h $local -U root pgtt | psql -h $remote -U root pgtt
pg_dumpall -h 10.10.xxx.xxx -U root --port=10001 -f /app/pg/onlyroles20211022.sql --roles-only
pg_dump -U root -p 10001 -d pgtt -s -b -f /app/pg/pgtt_jg_20211022.sql
--只导数据,没有创建用户角色:
pg_dump -U root -p 10001 -d pgtt -a -b -f /app/pg/pgtt_data20211022.sql
scp onlyroles20211022.sql postgres@10.10.xxx.xxx:/app/pg
scp pgtt_jg_20211022.sql postgres@10.10.xxx.xxx:/app/pg
scp pgtt_data20211022.sql postgres@10.10.xxx.xxx:/app/pg
psql -U root -p 10001 -d pgtt -f /app/pg/onlyroles20211022.sql
psql -U root -p 10001 -d pgtt -f /app/pg/pgtt_jg_20211022.sql
psql -U root -p 10001 -d pgtt -f /app/pg/pgtt_data20211022.sql
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129397.html
摘要:指定要用于查找的口令文件的名称。前四个字段可以是确定的字面值,也可以使用通配符匹配所有。利用环境变量引用的文件权限也要满足这个要求,否则同样会被忽略。在上,该文件被假定存储在一个安全的目录中,因此不会进行特别的权限检查。 pg_dump pg_dump 把一个数据库转储为纯文本文件或者是其它格式. 用法: pg_dump [选项]... [数据库名字] 一般选项: -f, --fi...
摘要:无意中看到了一篇讲数据批量导入的文章,才注意到的命令。的直接可以干这个事情,而且导出速度是非常快的。总结还有一些其他配置,比如把输入输出源指定成和命令,或者指定的等等。合理使用能大大提高效率。 TL;DR 无意中看到了一篇讲 数据批量导入 的文章,才注意到 PostgreSQL 的 COPY 命令。简而言之,它用来在文件和数据库之间复制数据,效率非常高,并且支持 CSV 。 导出 CS...
摘要:无意中看到了一篇讲数据批量导入的文章,才注意到的命令。的直接可以干这个事情,而且导出速度是非常快的。总结还有一些其他配置,比如把输入输出源指定成和命令,或者指定的等等。合理使用能大大提高效率。 TL;DR 无意中看到了一篇讲 数据批量导入 的文章,才注意到 PostgreSQL 的 COPY 命令。简而言之,它用来在文件和数据库之间复制数据,效率非常高,并且支持 CSV 。 导出 CS...
摘要:的问题当出现不能的时候,我也尝试过这种提示里面的命令,可是还是不能解决这个问题。解决方法一般自己机器上面的都是测试数据,所以可以直接删除掉旧的数据库文件。解决方法然后就可以该干嘛干嘛了。 有些出现的问题其实是不懂正确的流程,都是在试错,可是还是学到了很多东西,写下了,希望对我和大家都有帮助。 Homebrew 的问题 当我去运行brew update的时候出现错误untracked...
摘要:打开多个窗口一个数据库连接打开多个窗口用于查看数据表及数据进入工具首选项数据库对象查看器勾选自动冻结对象查看器窗口即可。显示行号进入工具首选项代码编辑器行装订线勾选显示行数即可。 Oracle SQL Developer 个人使用记录 以下简称 SQL Developer 对我Java开发来说,这个工具已经足够使用了,虽然还有很多缺点,但够用就行,相对于我来说的优点: 整体UI还算舒...
阅读 1346·2023-01-11 13:20
阅读 1684·2023-01-11 13:20
阅读 1132·2023-01-11 13:20
阅读 1858·2023-01-11 13:20
阅读 4100·2023-01-11 13:20
阅读 2704·2023-01-11 13:20
阅读 1385·2023-01-11 13:20
阅读 3597·2023-01-11 13:20