2021年4月份开始接触openGuass并做openGuass的有关实验,今天记下gs_dump逻辑备份的实验经历:-D,以免未来忘记。(部分内容可能有疏漏,望包容和指出)
注:实验的设计思路参考于华为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=# ^D\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逻辑备份可以指定文件格式的机制也非常灵活。
注:本篇文章为原创文章,转载请注明出处哦~