GP有两种备份工具,pg_dump 和gp_dump,每种数据库都提供有这方面的工具,例如Oracle的exp/imp,Informix的dbexp/dbimp,MySQL的mysqldump,而PostgreSQL提供的对应工具为pg_dump和pg_restore
gp_dump: GP特有的,其是并行备份的,该命令同时备份Master和所有活动的Segment Instance。因为Instance是并行备份的,所以消耗的时间与系统中Instance的数量没有关系。在Master主机上的备份文件包含DDL语句和具有GP特征的系统日志表(比如gp_segment_configuration)。Instance上的备份文件包含独立Instance的数据。所有的备份文件组成了一个完整的备份集合,通过一个唯一的14位数字的时间戳来识别。
pg_dump :PostgreSQL的备份工具(在GPDB中使用)将在Master主机上创建一个大的备份文件,包含所有活动Instance的数据。大多数情况下,这种做法是不切实际的,Master主机上不太可能有足够的磁盘空间来存储一个分布式数据库的全部数据。这个命令多用于从常规的PostgreSQL数据库系统迁移到GPDB系统,执行gp_dump时,只有Segment的primary和active Master运行备份操作,Mirror和stanby Master不参与备份。gp_dump在每个Segment上运行gp_dump_agent代理进程,将备份状态报告给Master的gp_dump进程。
Note:用来备份表机构还是可行的。或者少量数据迁移还是很有用的。本实验就是基于该命令进行的。
gp_dump命令会备份GPDB系统的内容为一系列的SQL命令文件,用作恢复GPDB系统的配置、数据库和数据。在备份操作期间,用户是可以访问数据库的。
本次通过pg_dump 将prod的sql脚本导出,在test环境导入sql脚本来执行。
gpadmin下查看帮助
pg_dump --help
导dm shcema 加数据
[gpadmin@P1QMSMDW01 gpseg-1]$ time pg_dump -U sys -n dm -f dm.sql qmsprd
Password:real 1m55.007s
user 0m3.847s
sys 0m11.842s[gpadmin@P1QMSMDW01 gpseg-1]$ time pg_dump -U sys -s -N dm -f other.sql qmsprd
Password:real 24m17.739s
user 0m3.164s
sys 0m0.597s
[gpadmin@P1QMSMDW01 gpseg-1]$scp /gpmaster/gpseg-1/pg_hba.conf [email protected]:/gpmaster/gpseg-1/
16、psql执行外部sql脚本
qmstst=# \x
qmstst=# \i dm.sql
立下FLG : 再使用gp_dump和gp_restore 来备份和恢复整个库。