1 说明
Greenplum 支持逻辑备份。我们使用Greenplum自带的pg_dump命令实现逻辑备份功能,导出备份文件,再通过 psql 导入到Greenplum中,达到备份的效果。
2 备份数据
2.1 创建需要备份的数据库
创建dump1数据库,并在数据库中创建test1的schema,创建几张表并插入数据
2.2 执行备份数据库的命令
pg_dump -U username -h hostname -p port databasename -f filename
参数说明如下:
username:本地数据库用户名 hostname:本地数据库主机名,如果是在本地数据库主机登录,可以使用 localhost port:本地数据库端口号 databasename:要备份的本地数据库名 filename:要生成的备份文件名称
实例:
$ pg_dump -h 192.168.100.55 -U gpmon -p 2345 dump1 -f dump1.sql Password:
2.3 查看备份出来的数据格式
$ head -n 40 dump1.sql -- -- Greenplum Database database dump --
SET statement_timeout = 0; SET client_encoding = 'UTF8'; SET standard_conforming_strings = on; SET check_function_bodies = false; SET client_min_messages = warning;
SET default_with_oids = false;
-- -- Name: test1; Type: SCHEMA; Schema: -; Owner: gpmon --
CREATE SCHEMA test1;
ALTER SCHEMA test1 OWNER TO gpmon;
SET search_path = public, pg_catalog;
SET default_tablespace = '';
-- -- Name: test1; Type: TABLE; Schema: public; Owner: gpmon; Tablespace: --
CREATE TABLE test1 ( id integer, name character varying(255) ) DISTRIBUTED RANDOMLY;
ALTER TABLE public.test1 OWNER TO gpmon;
-- -- Data for Name: test1; Type: TABLE DATA; Schema: public; Owner: gpmon
**********************
3 恢复备份数据
3.1 创建需要恢复的数据库
CREATE DATABASE dump2;
3.2 导入备份数据
psql -U username -h hostname -d desintationdb -p port -f dumpfilename.sql
参数说明如下: username:RDS 上的 PostgreSQL 数据库用户名 hostname:RDS 上的 PostgreSQL 数据库地址 port:RDS 上的 PostgreSQL 数据库端口号 databasename:RDS 上的 PostgreSQL 数据库名 filename:本地备份数据文件名
实例:
$ psql -U gpmon -h 192.168.100.55 -d dump2 -p 2345 -f dump1.sql Password for user gpmon: SET SET SET SET SET SET CREATE SCHEMA ALTER SCHEMA SET SET CREATE TABLE ALTER TABLE CREATE TABLE ALTER TABLE SET CREATE TABLE ALTER TABLE REVOKE REVOKE GRANT GRANT