简介
本指导书适用于openGauss数据库,通过该指导书可以了解openGauss数据库支持的两种备份恢复类型、多种备份恢复方案,并能够在备份和恢复过程中提供数据的可靠性保障机制。
内容描述
数据备份是保护数据安全的重要手段之一,为了更好的保护数据安全,openGauss数据库支持两种备份恢复类型、多种备份恢复方案,备份和恢复过程中提供数据的可靠性保障机制。
备份与恢复类型可分为逻辑备份与恢复、物理备份与恢复。
前置条件
实验环境说明
设备明显表
实验概览

数据库备份恢复
实验介绍
关于本实验
本实验主要描述openGauss数据库支持的两种备份恢复类型、多种备份恢复方案,并能够在备份和恢复过程中提供数据的可靠性保障机制。
实验目的
实验前提
在对数据库进行备份前,对数据库进行如下操作:
步骤 1 切换到omm用户,以操作系统用户omm登录数据库主节点。
步骤 2 启动数据库服务
步骤 3 连接openGauss数据库。
步骤 4 创建customer_t1表。
当结果显示为如下信息,则表示创建成功。
步骤 5 向表中插入数据。
显示结果为:
步骤 6 查看表中的数据。
步骤 7 创建customer_t2表。
当结果显示为如下信息,则表示创建成功。
步骤 8 向表中插入数据。
显示结果为:
步骤 9 查看表中数据。
步骤 10 创建用户lucy。
步骤 11 切换到Lucy用户。
步骤 12 创建lucy shema的表。
步骤 13 向表中插入数据。
当结果显示为如下信息,则表示插入数据成功。
步骤 14 查看表中数据。
显示结果为:
步骤 15 退出数据库:
物理备份和恢复
openGauss部署成功后,在数据库运行的过程中,会遇到各种问题及异常状态。openGauss提供了gs_basebackup工具做基础备份。gs_basebackup工具由操作系统用户omm执行。
实验前提
在数据库备份之前创建存储备份文件的文件夹。
步骤 1 切换到omm用户,以操作系统用户omm登录数据库主节点。
步骤 2 创建存储备份文件的文件夹。
物理备份
步骤 1 如果数据库服务没有启动,就启动数据库服务(务必以操作系统用户omm启动数据库服务,如果没有请切换用户)。
结果显示为:
步骤 2 将数据库进行物理备份。
参数-D directory表示备份文件输出的目录,必选项。
结果显示为:
步骤 3 切换到存储备份文件夹查看备份文件。
显示如下:
物理备份恢复
当数据库发生故障时需要从备份文件进行恢复。因为gs_basebackup是对数据库按二进制进行备份,因此恢复时可以直接拷贝替换原有的文件, 或者直接在备份的库上启动数据库。
说明:
- 若当前数据库实例正在运行,直接从备份文件启动数据库可能会存在端口冲突,这时,需要修配置文件的port参数,或者在启动数据库时指定一下端口。
- 若当前备份文件为主备数据库,可能需要修改一下主备之间的复制连接。即配置文件中的postgre.conf中的replconninfo1,replconninfo2等。
当数据库发生问题需要从备份进行恢复时,步骤如下:
步骤 1 停止openGauss((务必以操作系统用户omm停止数据库服务,如果没有请切换用户)。
显示的结果为:
步骤 2 清理原库中的所有或部分文件。
查看数据库节点文件夹名称(文件夹名称是数据库安装时定义的,不同数据可能不同)。
查看文件列表如下:
删除文件,对数据库文件进行**。
删除文件后,列表如下:
或者为空:
步骤 3 使用数据库系统用户权限从备份中还原需要的数据库文件,"/gaussdb/data/db1"中db1是数据库节点文件夹名称,不同数据库可能不同请查看确认。
备份时间大概需要几分钟,恢复后文件列表如下:
若数据库中存在链接文件, 需要修改使其链接到正确的文件。
步骤 4 重启数据库服务器, 并检查数据库内容,确保数据库已经恢复到所需的状态。
逻辑备份和恢复
通过逻辑导出对数据进行备份,逻辑备份只能基于备份时刻进行数据转储,所以恢复时也只能恢复到备份时保存的数据。对于故障点和备份点之间的数据,逻辑备份无能为力,逻辑备份适合备份那些很少变化的数据,当这些数据因误操作被损坏时,可以通过逻辑备份进行快速恢复。如果通过逻辑备份进行全库恢复,通常需要重建数据库,导入备份数据来完成,对于可用性要求很高的数据库,这种恢复时间太长,通常不被采用。由于逻辑备份具有平台无关性,所以更为常见的是逻辑备份被作为一个数据迁移及移动的主要手段。
实验前提
在数据库备份之前创建存储备份文件的文件夹。
步骤 1 切换到omm用户,以操作系统用户omm登录数据库主节点。
步骤 2 创建存储备份文件的文件夹。
gs_dump
注意事项
- 如果openGauss有任何本地数据要添加到template1数据库,请将gs_dump的输出恢复到一个真正的空数据库中,否则可能会因为被添加对象的定义被复制,出现错误。要创建一个无本地添加的空数据库,需从template0而非template1复制,例如:
- tar归档形式的文件大小不得超过8GB(tar文件格式的固有限制)。tar文档整体大小和任何其他输出格式没有限制,操作系统可能对此有要求。
- 由gs_dump生成的转储文件不包含优化程序用来做执行计划决定的统计数据。因此,最好从某转储文件恢复之后运行**YZE以确保最佳效果。转储文件不包含任何ALTER DATABASE…SET命令,这些设置由gs_dumpall转储,还有数据库用户和其他完成安装设置。
- 使用gs_dump转储数据库为SQL文本文件或其它格式的操作:示例中“Bigdata@123”表示数据库用户密码“/home/omm/logical/backup/MPPDB_backup.sql”表示导出的文件;“26000”表示数据库服务器端口;“postgres”表示要访问的数据库名。
说明:导出操作时,请确保该目录存在并且当前的操作系统用户对其具有读写权限。
gs_dump备份示例1
执行gs_dump,导出postgres数据库全量信息,导出的MPPDB_backup.sql文件格式为纯文本格式。
步骤 1 以操作系统用户omm登录数据库主节点。
步骤 2 执行gs_dump,导出的MPPDB_backup.sql文件格式为纯文本格式。
执行后显示为:
步骤 3 切换到backup文件夹,查看MPPDB_backup.sql文件。
gs_dump备份示例2
执行gs_dump,导出postgres数据库全量信息,导出的MPPDB_backup.tar文件格式为tar格式。
步骤 1 以操作系统用户omm登录数据库主节点。
步骤 2 执行gs_dump,导出的MPPDB_backup.tar文件格式为tar格式。
运行后的结果为:
步骤 3 查看生成的文件信息。
gs_dump备份示例3
执行gs_dump,导出postgres数据库全量信息,导出的MPPDB_backup.dmp文件格式为自定义归档格式。
步骤 1 以操作系统用户omm登录数据库主节点。
步骤 2 执行gs_dump,导出的MPPDB_backup.dmp文件格式为自定义归档格式。
运行后的结果为:
步骤 3 查看生成的文件信息。
gs_dump备份示例4
执行gs_dump,导出postgres数据库全量信息,导出的MPPDB_backup文件格式为目录格式。
步骤 1 以操作系统用户omm登录数据库主节点。
步骤 2 执行gs_dump,导出的MPPDB_backup文件格式为目录格式。
运行后的结果为:
步骤 3 查看生成的文件信息。
gs_dump备份示例5
执行gs_dump,导出postgres数据库的表(或视图、或序列、或外表)对象,例如表customer_t1。
步骤 1以操作系统用户omm登录数据库主节点。
步骤 2 执行gs_dump,导出的表customer_t1。
运行后的结果为:
步骤 3 查看生成的文件信息。
步骤 4 查看生成的sql文件。
gs_dumpall
gs_dumpall是openGauss用于导出所有数据库相关信息工具,它可以导出openGauss数据库的所有数据,包括默认数据库postgres的数据、自定义数据库的数据、以及openGauss所有数据库公共的全局对象。
gs_dumpall在导出openGauss所有数据库时分为两部分:
gs_dumpall自身对所有数据库公共的全局对象进行导出,包括有关数据库用户和组,表空间以及属性(例如,适用于数据库整体的访问权限)信息。
gs_dumpall通过调用gs_dump来完成openGauss中各数据库的SQL脚本文件导出,该脚本文件包含将数据库恢复为其保存时的状态所需要的全部SQL语句。
以上两部分导出的结果为纯文本格式的SQL脚本文件,使用gsql运行该脚本文件可以恢复openGauss数据库。
参数说明:
表1-3 gs_dumpall参数说明
操作步骤:
步骤 1切换到omm用户,以操作系统用户omm登录数据库主节点。
步骤 2 使用gs_dumpall一次导出openGauss的所有数据库。
结果显示为:
步骤 3 查看生成的文件信息。
gs_restore
gs_restore是openGauss提供的针对gs_dump导出数据的导入工具。通过此工具可由gs_dump生成的导出文件进行导入。
gs_restore工具由操作系统用户omm执行。
主要功能包含:
- 导入到数据库:
如果连接参数中指定了数据库,则数据将被导入到指定的数据库中。其中,并行导入必须指定连接的密码。 - 导入到脚本文件:
如果未指定导入数据库,则创建包含重建数据库所必须的SQL语句脚本并写入到文件或者标准输出。等效于直接使用gs_dump导出为纯文本格式。
参数说明:
表1-4gs_restore参数说明
gs_restore导入示例1
执行gs_restore,将导出的MPPDB_backup.tar文件(tar格式)导入到db_tpcc01数据库。
步骤 1切换到omm用户,以操作系统用户omm登录数据库主节点。
步骤 2连接openGauss数据库。
步骤 3创建数据库。
当结果显示为如下信息,则表示创建成功。
步骤 4 退出数据库。
步骤 5 执行gs_restore,将导出的MPPDB_backup.tar文件(tar格式)导入到db_tpcc01数据库。
如果成功,显示如下:
步骤 6连接db_tpcc01数据库。
步骤 7查看数据库中恢复的customer_t1表。
步骤 8退出db_tpcc01数据库。
简介
本指导书适用于openGauss数据库,通过该指导书可以了解openGauss数据库支持的两种备份恢复类型、多种备份恢复方案,并能够在备份和恢复过程中提供数据的可靠性保障机制。
内容描述
数据备份是保护数据安全的重要手段之一,为了更好的保护数据安全,openGauss数据库支持两种备份恢复类型、多种备份恢复方案,备份和恢复过程中提供数据的可靠性保障机制。
备份与恢复类型可分为逻辑备份与恢复、物理备份与恢复。
前置条件
由于本实验主要是在openEuler操作系统上进行数据库的备份和恢复,需要掌握Linux系统的基本操作和系统命令。
实验前提和数据库恢复验证中需要掌握openGauss数据库的基本操作和SQL语法,openGauss数据库支持SQL2003标准语法。
实验环境说明
组网说明
本实验环境为openGauss数据库管理系统,安装在华为云openEuler弹性服务器ECS上。
设备介绍
为了满足数据库原理与实践课程实验需要,建议每套实验环境采用以下配置:
设备名称、型号与版本的对应关系如下:
设备明显表
实验概览
数据库备份恢复
实验介绍
关于本实验
本实验主要描述openGauss数据库支持的两种备份恢复类型、多种备份恢复方案,并能够在备份和恢复过程中提供数据的可靠性保障机制。
实验目的
掌握openGauss数据库中逻辑备份与恢复方法;
掌握openGauss数据库物理备份与恢复的方法;
能够在备份和恢复过程中提供数据的可靠性保障机制。
实验前提
在对数据库进行备份前,对数据库进行如下操作:
步骤 1 切换到omm用户,以操作系统用户omm登录数据库主节点。
步骤 2 启动数据库服务
步骤 3 连接openGauss数据库。
步骤 4 创建customer_t1表。
postgres=#DROP TABLE IF EXISTS customer_t1; postgres=#CREATE TABLE customer_t1 ( c_customer_sk integer, c_customer_id char(5), c_first_name char(6), c_last_name char(8) );当结果显示为如下信息,则表示创建成功。
步骤 5 向表中插入数据。
显示结果为:
步骤 6 查看表中的数据。
postgres=# select * from customer_t1; c_customer_sk | c_customer_id | c_first_name | c_last_name ---------------+---------------+--------------+------------- 6885 | maps | Joes | 4321 | tpcds | Lily | 9527 | world | James | 3769 | hello | | (4 rows)步骤 7 创建customer_t2表。
postgres=#DROP TABLE IF EXISTS customer_t2; postgres=#CREATE TABLE customer_t2 ( c_customer_sk integer, c_customer_id char(5), c_first_name char(6), c_last_name char(8) );当结果显示为如下信息,则表示创建成功。
步骤 8 向表中插入数据。
显示结果为:
步骤 9 查看表中数据。
select * from customer_t2; c_customer_sk | c_customer_id | c_first_name | c_last_name ---------------+---------------+--------------+------------- 3769 | hello | | 6885 | maps | Joes | 9527 | world | James | (3 rows)步骤 10 创建用户lucy。
步骤 11 切换到Lucy用户。
步骤 12 创建lucy shema的表。
步骤 13 向表中插入数据。
当结果显示为如下信息,则表示插入数据成功。
步骤 14 查看表中数据。
显示结果为:
firstcol ---------- 100 (1 row)步骤 15 退出数据库:
物理备份和恢复
openGauss部署成功后,在数据库运行的过程中,会遇到各种问题及异常状态。openGauss提供了gs_basebackup工具做基础备份。gs_basebackup工具由操作系统用户omm执行。
实验前提
在数据库备份之前创建存储备份文件的文件夹。
步骤 1 切换到omm用户,以操作系统用户omm登录数据库主节点。
步骤 2 创建存储备份文件的文件夹。
物理备份
步骤 1 如果数据库服务没有启动,就启动数据库服务(务必以操作系统用户omm启动数据库服务,如果没有请切换用户)。
结果显示为:
步骤 2 将数据库进行物理备份。
参数-D directory表示备份文件输出的目录,必选项。
结果显示为:
步骤 3 切换到存储备份文件夹查看备份文件。
显示如下:
物理备份恢复
当数据库发生故障时需要从备份文件进行恢复。因为gs_basebackup是对数据库按二进制进行备份,因此恢复时可以直接拷贝替换原有的文件, 或者直接在备份的库上启动数据库。
说明:
当数据库发生问题需要从备份进行恢复时,步骤如下:
步骤 1 停止openGauss((务必以操作系统用户omm停止数据库服务,如果没有请切换用户)。
显示的结果为:
步骤 2 清理原库中的所有或部分文件。
查看数据库节点文件夹名称(文件夹名称是数据库安装时定义的,不同数据可能不同)。
查看文件列表如下:
删除文件,对数据库文件进行**。
删除文件后,列表如下:
或者为空:
步骤 3 使用数据库系统用户权限从备份中还原需要的数据库文件,"/gaussdb/data/db1"中db1是数据库节点文件夹名称,不同数据库可能不同请查看确认。
备份时间大概需要几分钟,恢复后文件列表如下:
若数据库中存在链接文件, 需要修改使其链接到正确的文件。
步骤 4 重启数据库服务器, 并检查数据库内容,确保数据库已经恢复到所需的状态。
逻辑备份和恢复
通过逻辑导出对数据进行备份,逻辑备份只能基于备份时刻进行数据转储,所以恢复时也只能恢复到备份时保存的数据。对于故障点和备份点之间的数据,逻辑备份无能为力,逻辑备份适合备份那些很少变化的数据,当这些数据因误操作被损坏时,可以通过逻辑备份进行快速恢复。如果通过逻辑备份进行全库恢复,通常需要重建数据库,导入备份数据来完成,对于可用性要求很高的数据库,这种恢复时间太长,通常不被采用。由于逻辑备份具有平台无关性,所以更为常见的是逻辑备份被作为一个数据迁移及移动的主要手段。
实验前提
在数据库备份之前创建存储备份文件的文件夹。
步骤 1 切换到omm用户,以操作系统用户omm登录数据库主节点。
步骤 2 创建存储备份文件的文件夹。
gs_dump
注意事项
说明:导出操作时,请确保该目录存在并且当前的操作系统用户对其具有读写权限。
gs_dump备份示例1
执行gs_dump,导出postgres数据库全量信息,导出的MPPDB_backup.sql文件格式为纯文本格式。
步骤 1 以操作系统用户omm登录数据库主节点。
步骤 2 执行gs_dump,导出的MPPDB_backup.sql文件格式为纯文本格式。
执行后显示为:
步骤 3 切换到backup文件夹,查看MPPDB_backup.sql文件。
ll /home/omm/logical/backup/ total 4.0K -rw------- 1 omm dbgrp 2.7K Jul 29 14:00 MPPDB_backup.sql cat /home/omm/logical/backup/MPPDB_backup.sql -- -- PostgreSQL database dump -- SET statement_timeout = 0; SET xmloption = content; SET client_encoding = 'SQL_ASCII'; SET standard_conforming_strings = on; SET check_function_bodies = false; SET client_min_messages = warning; -- -- Name: postgres; Type: COMMENT; Schema: -; Owner: omm -- COMMENT ON DATABASE postgres IS 'default administrative connection database'; -- -- Name: lucy; Type: SCHEMA; Schema: -; Owner: lucy -- CREATE SCHEMA lucy; ALTER SCHEMA lucy OWNER TO lucy; SET search_path = lucy; SET default_tablespace = ''; SET default_with_oids = false; -- -- Name: mytable; Type: TABLE; Schema: lucy; Owner: lucy; Tablespace: -- CREATE TABLE mytable ( firstcol integer ) WITH (orientation=row, compression=no); ALTER TABLE lucy.mytable OWNER TO lucy; SET search_path = public; -- -- Name: customer_t1; Type: TABLE; Schema: public; Owner: omm; Tablespace: -- CREATE TABLE customer_t1 ( a integer, b integer, c integer, d integer ) WITH (orientation=row, compression=no); ALTER TABLE public.customer_t1 OWNER TO omm; …… REVOKE ALL ON SCHEMA public FROM PUBLIC; REVOKE ALL ON SCHEMA public FROM omm; GRANT ALL ON SCHEMA public TO omm; GRANT USAGE ON SCHEMA public TO PUBLIC; -- -- PostgreSQL database dump complete --gs_dump备份示例2
执行gs_dump,导出postgres数据库全量信息,导出的MPPDB_backup.tar文件格式为tar格式。
步骤 1 以操作系统用户omm登录数据库主节点。
步骤 2 执行gs_dump,导出的MPPDB_backup.tar文件格式为tar格式。
运行后的结果为:
步骤 3 查看生成的文件信息。
gs_dump备份示例3
执行gs_dump,导出postgres数据库全量信息,导出的MPPDB_backup.dmp文件格式为自定义归档格式。
步骤 1 以操作系统用户omm登录数据库主节点。
步骤 2 执行gs_dump,导出的MPPDB_backup.dmp文件格式为自定义归档格式。
运行后的结果为:
步骤 3 查看生成的文件信息。
gs_dump备份示例4
执行gs_dump,导出postgres数据库全量信息,导出的MPPDB_backup文件格式为目录格式。
步骤 1 以操作系统用户omm登录数据库主节点。
步骤 2 执行gs_dump,导出的MPPDB_backup文件格式为目录格式。
运行后的结果为:
步骤 3 查看生成的文件信息。
gs_dump备份示例5
执行gs_dump,导出postgres数据库的表(或视图、或序列、或外表)对象,例如表customer_t1。
步骤 1以操作系统用户omm登录数据库主节点。
步骤 2 执行gs_dump,导出的表customer_t1。
运行后的结果为:
步骤 3 查看生成的文件信息。
步骤 4 查看生成的sql文件。
cat /home/omm/logical/backup/bkp_shl2.sql -- -- PostgreSQL database dump -- SET statement_timeout = 0; SET xmloption = content; SET client_encoding = 'SQL_ASCII'; 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 --gs_dumpall
gs_dumpall是openGauss用于导出所有数据库相关信息工具,它可以导出openGauss数据库的所有数据,包括默认数据库postgres的数据、自定义数据库的数据、以及openGauss所有数据库公共的全局对象。
gs_dumpall在导出openGauss所有数据库时分为两部分:
gs_dumpall自身对所有数据库公共的全局对象进行导出,包括有关数据库用户和组,表空间以及属性(例如,适用于数据库整体的访问权限)信息。
gs_dumpall通过调用gs_dump来完成openGauss中各数据库的SQL脚本文件导出,该脚本文件包含将数据库恢复为其保存时的状态所需要的全部SQL语句。
以上两部分导出的结果为纯文本格式的SQL脚本文件,使用gsql运行该脚本文件可以恢复openGauss数据库。
参数说明:
表1-3 gs_dumpall参数说明
操作步骤:
步骤 1切换到omm用户,以操作系统用户omm登录数据库主节点。
步骤 2 使用gs_dumpall一次导出openGauss的所有数据库。
结果显示为:
步骤 3 查看生成的文件信息。
gs_restore
gs_restore是openGauss提供的针对gs_dump导出数据的导入工具。通过此工具可由gs_dump生成的导出文件进行导入。
gs_restore工具由操作系统用户omm执行。
主要功能包含:
如果连接参数中指定了数据库,则数据将被导入到指定的数据库中。其中,并行导入必须指定连接的密码。
如果未指定导入数据库,则创建包含重建数据库所必须的SQL语句脚本并写入到文件或者标准输出。等效于直接使用gs_dump导出为纯文本格式。
参数说明:
表1-4gs_restore参数说明
gs_restore导入示例1
执行gs_restore,将导出的MPPDB_backup.tar文件(tar格式)导入到db_tpcc01数据库。
步骤 1切换到omm用户,以操作系统用户omm登录数据库主节点。
步骤 2连接openGauss数据库。
步骤 3创建数据库。
当结果显示为如下信息,则表示创建成功。
步骤 4 退出数据库。
步骤 5 执行gs_restore,将导出的MPPDB_backup.tar文件(tar格式)导入到db_tpcc01数据库。
如果成功,显示如下:
步骤 6连接db_tpcc01数据库。
步骤 7查看数据库中恢复的customer_t1表。
db_tpcc01=# select * from customer_t1; c_customer_sk | c_customer_id | c_first_name | c_last_name ---------------+---------------+--------------+------------- 6885 | maps | Joes | 4321 | tpcds | Lily | 9527 | world | James | 3769 | hello | | (4 rows)步骤 8退出db_tpcc01数据库。