点击上方“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

本文作者:魏 斌(上海新炬王翦团队)
本文来源:“IT那活儿”公众号





