2021年4月份开始接触openGuass并做openGuass的有关实验,今天记下gs_dump逻辑备份的实验经历,以免未来忘记。(部分内容可能有疏漏,望包容和指出)
注:实验的设计思路参考于华为openGauss的指导手册。
1,数据库逻辑备份介绍
数据库逻辑备份指将数据库对象和文件导出到文件的格式。那么物理备份和逻辑备份的区别在哪呢?做过物理备份实验gs_basebackup(在小编的上一篇文章也有哦)不难发现物理备份是将数据库关键文件转储,在恢复数据库时利用转储文件和cp命令进行恢复。而此次的逻辑备份指的是对数据库对象进行文件导出。逻辑备份是对象级备份,可移植性会更高,而且在逻辑备份中导出的文件格式可以自己指定哦。
本实验的关键在于一些逻辑命令参数的指定,参数表在华为官方文章有哦(网址:华为gs_dump文章),以下主要以实例进行说明~
2,gs_dump逻辑备份实验
2.1 导出数据库全量信息,导出文件为纯文本格式
(1)以操作系统用户omm登录数据库主节点。
Ssh root@弹性公网ip //并输入密码
cd /opt/software/openGauss/script
su - omm
成功登入的截图如下:
创建存储备份文件的文件夹。
mkdir -p /home/omm/logical/backup
执行gs_dump,导出的MPPDB_backup.sql文件格式为纯文本格式。
gs_dump -U omm -W Bigdata@123 -f /home/omm/logical/backup/MPPDB_backup.sql -p 26000 postgres -F p
其中-U表示用户,-W用于指定用户连接的密码,-f表示指定输出文件,-p表示指定端口,-F表示表示输出格式,p表示纯文本格式
执行后结果为:
gsql ((openGauss 1.1.0 build 392c0438) compiled at 2020-12-31 20:08:06 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
postgres=# \q
[omm@ecs-a560 ~]$ gs_dump -U omm -W Bigdata@123 -f /home/omm/logical/backup/MPPDB_backup.sql -p 26000 postgres -F p
gs_dump[port='26000'][postgres][2021-07-06 09:38:53]: The total objects number is 443.
gs_dump[port='26000'][postgres][2021-07-06 09:38:53]: [100.00%] 443 objects have been dumped.
gs_dump[port='26000'][postgres][2021-07-06 09:38:53]: dump database postgres successfully
gs_dump[port='26000'][postgres][2021-07-06 09:38:53]: total time: 378 ms
切换到backup文件夹,查看MPPDB_backup.sql文件。
ll /home/omm/logical/backup/
total 112K
-rw------- 1 omm dbgrp 109K Jul 6 09:38 MPPDB_backup.sql
末尾部分内容显示如下:
CREATE INDEX ix_pmk_snapshot_time ON pmk_snapshot USING btree (current_snapshot_time DESC) TABLESPACE pg_default;
SET search_path = public;
--
-- Name: inx_stu01; Type: INDEX; Schema: public; Owner: omm; Tablespace:
--
CREATE INDEX inx_stu01 ON student USING btree (std_name) TABLESPACE pg_default;
--
-- Name: public; Type: ACL; Schema: -; Owner: omm
--
REVOKE ALL ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON SCHEMA public FROM omm;
GRANT CREATE,USAGE ON SCHEMA public TO omm;
GRANT USAGE ON SCHEMA public TO PUBLIC;
--
-- PostgreSQL database dump complete
--
2.2 导出数据库全量信息,导出文件格式为tar格式。
首先以操作系统用户omm登录数据库主节点。(操作步骤如上哦)
执行gs_dump,导出的MPPDB_backup.tar文件格式为tar格式。
gs_dump -U omm -W Bigdata@123 -f /home/omm/logical/backup/MPPDB_backup.tar -p 26000 postgres -F t
其中-t表示输出格式为tar
结果显示如下:
gs_dump[port='26000'][postgres][2021-07-06 09:45:05]: The total objects number is 443.
gs_dump[port='26000'][postgres][2021-07-06 09:45:05]: [100.00%] 443 objects have been dumped.
gs_dump[port='26000'][postgres][2021-07-06 09:45:05]: dump database postgres successfully
gs_dump[port='26000'][postgres][2021-07-06 09:45:05]: total time: 311 ms
查看生成的文件信息。
ll /home/omm/logical/backup/
结果显示如下:
total 356K
-rw------- 1 omm dbgrp 109K Jul 6 09:38 MPPDB_backup.sql
-rw------- 1 omm dbgrp 241K Jul 6 09:45 MPPDB_backup.tar
2.3 导出数据库全量信息,导出文件格式为自定义归档格式。
首先以操作系统用户omm登录数据库主节点。(操作步骤同上哦)
执行gs_dump,导出的MPPDB_backup.dmp文件格式为自定义归档格式。
gs_dump -U omm -W Bigdata@123 -f /home/omm/logical/backup/MPPDB_backup.dmp -p 26000 postgres -F c
其中c表示文件格式为自定义格式。
结果显示如下:
gs_dump[port='26000'][postgres][2021-07-06 09:47:44]: The total objects number is 443.
gs_dump[port='26000'][postgres][2021-07-06 09:47:44]: [100.00%] 443 objects have been dumped.
gs_dump[port='26000'][postgres][2021-07-06 09:47:44]: dump database postgres successfully
gs_dump[port='26000'][postgres][2021-07-06 09:47:44]: total time: 312 ms
查看生成的文件信息。
ll /home/omm/logical/backup/
//以下为显示结果
total 468K
-rw------- 1 omm dbgrp 110K Jul 6 09:47 MPPDB_backup.dmp
-rw------- 1 omm dbgrp 109K Jul 6 09:38 MPPDB_backup.sql
-rw------- 1 omm dbgrp 241K Jul 6 09:45 MPPDB_backup.tar
2.4 导出数据库全量信息,导出文件格式为目录格式。
首先以操作系统用户omm登录数据库主节点。(操作步骤同上哦)
执行gs_dump,导出的MPPDB_backup文件格式为目录格式。
gs_dump -U omm -W Bigdata@123 -f /home/omm/logical/backup/MPPDB_backup -p 26000 postgres -F d
其中d指定为目录格式
显示结果如下:
gs_dump[port='26000'][postgres][2021-07-06 09:52:12]: The total objects number is 443.
gs_dump[port='26000'][postgres][2021-07-06 09:52:12]: [100.00%] 443 objects have been dumped.
gs_dump[port='26000'][postgres][2021-07-06 09:52:12]: dump database postgres successfully
gs_dump[port='26000'][postgres][2021-07-06 09:52:12]: total time: 312 ms
(3)查看生成的文件信息。
ll /home/omm/logical/backup/
显示结果如下:
total 472K
drwx------ 2 omm dbgrp 4.0K Jul 6 09:52 MPPDB_backup
-rw------- 1 omm dbgrp 110K Jul 6 09:47 MPPDB_backup.dmp
-rw------- 1 omm dbgrp 109K Jul 6 09:38 MPPDB_backup.sql
-rw------- 1 omm dbgrp 241K Jul 6 09:45 MPPDB_backup.tar
进一步查看目录内部内容
cd /home/omm/logical/backup/MPPDB_backup
ls
结果显示如下:
4522.dat.gz 4524.dat.gz 4526.dat.gz 4528.dat.gz dir.lock
4523.dat.gz 4525.dat.gz 4527.dat.gz 4529.dat.gz toc.dat
2.5 导出数据库的表(或视图、或序列、或外表)对象。
以操作系统用户omm登录数据库主节点。(步骤如上面哦)
执行gs_dump,导出的表customer_t1
gs_dump -U omm -W Bigdata@123 -f /home/omm/logical/backup/bkp_shl2.sql -t public.customer_t1 -p 26000 postgres
其中customer_t1为事先建立好的表,bkp_shl2,sql为导出的文件
运行结果如下:
gs_dump[port='26000'][postgres][2021-07-06 09:57:45]: The total objects number is 379.
gs_dump[port='26000'][postgres][2021-07-06 09:57:45]: [100.00%] 379 objects have been dumped.
gs_dump[port='26000'][postgres][2021-07-06 09:57:45]: dump database postgres successfully
gs_dump[port='26000'][postgres][2021-07-06 09:57:45]: total time: 178 ms
查看生成的文件信息
ll /home/omm/logical/backup/
cat /home/omm/logical/backup/bkp_shl2.sql
显示的结果部分如下:
--
-- PostgreSQL database dump
--
SET statement_timeout = 0;
SET xmloption = content;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET search_path = public;
SET default_tablespace = '';
SET default_with_oids = false;
--
-- Name: customer_t1; Type: TABLE; Schema: public; Owner: omm; Tablespace:
--
CREATE TABLE customer_t1 (
c_customer_sk integer,
c_customer_id character(5),
c_first_name character(6),
c_last_name character(8)
)
WITH (orientation=row, compression=no);
ALTER TABLE public.customer_t1 OWNER TO omm;
--
-- Data for Name: customer_t1; Type: TABLE DATA; Schema: public; Owner: omm
--
COPY customer_t1 (c_customer_sk, c_customer_id, c_first_name, c_last_name) FROM stdin;
3769 hello \N \N
6885 maps Joes \N
4321 tpcds Lily \N
9527 world James \N
\.
;
--
-- PostgreSQL database dump complete
--
3, 实验小结
逻辑备份实验的步骤大体上为登录数据库主节点—进行逻辑备份—查看逻辑文件,总体上比较简单。逻辑备份对于数据库的恢复非常重要,是数据库安全机制重要的一环。openGauss逻辑备份可以指定文件格式的机制也非常灵活。
注:本篇文章为原创文章,转载请注明出处哦~