openGauss数据库备份与恢复

作者:李强

Email:liqiang3@sugon.com

版本:1.0 2020-08-10 初稿

1. 物理备份与恢复:gs_basebackup

【参考】https://opengauss.org/zh/docs/1.0.0/docs/Administratorguide/gs_basebackup.html

gs_basebackup仅支持数据库全量热备份,不支持增量和压缩备份。数据库需要处于开启状态,gs_basebackup会连接数据,读取各文件路径信息,然后开始文件二进制拷贝工作。

对于使用绝对路径创建的表空间,不能在同一台机器上进行备份,否则会出现路径冲突报错。若pg_xlog目录为软链接,备份时将不会建立软链接,会直接将数据备份到目的路径的pg_xlog目录下。若打开增量检测点功能且打开双写, gs_basebackup也会备份双写文件。

1.1 命令帮助

  • -D directory,必选项,指定备份文件输出的目录;
  • -c,–checkpoint=fast|spread,设置检查点模式为fast或者spread(默认);
  • -l,–label=LABEL,为备份设置标签;
  • -P,–progress,启用进展报告;

1.2 执行备份

1.2.1 创建备份目录

BACKUP_DIR=/opt/huawei/backup/`date '+%Y%m%d_%H%M%S'`

mkdir -p $BACKUP_DIR

1.2.2 检查数据库状态,确认IP和端口号

gs_om -t status –detail

1.2.3 执行备份

gs_basebackup -D $BACKUP_DIR -p 26000 -P -l $BACKUP_DIR

1.3 执行恢复

1.3.1 检查数据库状态

gs_om -t status --detail

1.3.2 关闭数据库

gs_om -t stop

1.3.3 原数据库目录改名

mv /opt/huawei/install/data/db1  /opt/huawei/install/data/db1.old

1.3.4 用备份文件覆盖原数据库目录

cp -r /opt/huawei/backup/20200810_141813 /opt/huawei/install/data/db1

1.3.5 修改软链接,指向新的表空间路径

cd /opt/huawei/install/data/db1/pg_tblspc

ll

ln -snf /opt/huawei/install/data/db1/pg_location/sugon_ts 16389

1.3.6 重启启动数据库

gs_om -t start

1.3.7 其他

编辑postgresql.conf文件,可修改数据库的端口号;

2. 逻辑备份:gs_dump

【参考】:https://opengauss.org/zh/docs/1.0.0/docs/Administratorguide/gs_dump.html

gs_dump是openGauss用于导出数据库相关信息的工具,用户可以自定义导出一个数据库或是其中的对象(模式、表、视图等)。gs_dump工具在进行数据导出时,其他用户可以访问openGauss数据库(读或写)。

gs_dump工具支持导出完整一致的数据。例如,T1时刻启动gs_dump导出A数据库,那么导出数据结果将会是T1时刻A数据库的数据状态,T1时刻之后对A数据库的修改不会被导出。

2.1 导出文件格式

gs_dump可以创建四种不同的导出文件格式,通过[-F或者–format=]选项指定。

格式名称

-F的参数值

说明

建议

对应导入工具

纯文本格式

p

纯文本脚本文件包含SQL语句和命令。命令可以由gsql命令行终端程序执行,用于重新创建数据库对象并加载表数据。

小型数据库,一般推荐纯文本格式。

使用gsql工具恢复数据库对象前,可根据需要使用文本编辑器编辑纯文本导出文件。

自定义归档格式

c

一种二进制文件。支持从导出文件中恢复所有或所选数据库对象。

中型或大型数据库,推荐自定义归档格式。

使用gs_restore可以选择要从自定义归档导出文件中导入相应的数据库对象。

目录归档格式

d

该格式会创建一个目录,该目录包含两类文件,一类是目录文件,另一类是每个表和blob对象对应的数据文件。

-

tar归档格式

t

tar归档文件支持从导出文件中恢复所有或所选数据库对象。tar归档格式不支持压缩且对于单独表大小应小于8GB。

-

为了保证数据一致性和完整性,gs_dump会对需要转储的表设置共享锁。如果表在别的事务中设置了共享锁,gs_dump会等待锁释放后锁定表。如果无法在指定时间内锁定某个表,转储会失败。用户可以通过指定–lock-wait-timeout选项,自定义等待锁超时时间。

2.2 gs_dump命令

  • -f, --file=FILENAME,导出文件名;
  • -F, --format=c|d|t|p,导出文件的格式,默认为p,机SQL文本;
  • -n, --schema=SCHEMA,只导出某些schema下的对象;
  • -N, --exclude-schema=SCHEMA,不要导出某些schema下的对象;
  • -t, --table=TABLE,指定要导出的表,可以使用通配符;
  • -T, --exclude-table=TABLE,不要导出的表,也可以使用通配符;

下面以sugon_db下的customer_t1表为例,说明gs_dump备份与恢复。

2.3 -F p,导出与恢复

(1) 导出

gs_dump -f gsdump_f.sql -p 26000 sugon_db -t customer_t1

(2) 恢复

--删除原表

sugon_db=# drop table customer_t1 cascade;

--利用gsql导入数据

gsql -d sugon_db -p 26000 -f gsdump_f.sql

--检查数据

\d

select count(*) from customer_t1;

3. 逻辑备份与恢复:gs_dumpall/gsql

gs_dumpall是openGauss用于导出所有数据库相关信息工具,其内部是在调用gs_dump命令。

gs_dumpall导出的结果为纯文本格式的SQL脚本文件,即gs_dump -F p格式,使用gsql运行该脚本文件可以恢复openGauss数据库。

3.1 gs_dumpall命令

  • -f, –filename=FILENAME,将输出发送至指定文件;
  • -c, –clean,在重新创建数据库之前,执行SQL语句清理(删除)这些数据库;
  • -a, –data-only,只转储数据,不转储模式(数据定义);
  • -s, –schema-only,只转储对象定义(模式),而非数据。

3.2 备份与恢复

(1)备份

gs_dumpall -f gsdumpall.sql -p 26000

(2)恢复

--删除原数据库

postgres=# drop database sugon_db;

--利用gsql恢复数据库

gsql -p 26000 -f gsdumpall.sql postgres

--检查数据库

\l

4. 逻辑恢复:gs_restore

gs_restore是openGauss提供的针对gs_dump导出数据的导入工具。通过此工具可由gs_dump生成的导出文件进行导入。

gs_restore可以将dump文件导入到数据库(-d),也可以生成dump文件对应的sql建库脚本(-f),-f和-d不能一起使用。

gs_restore默认是以追加的方式进行数据导入。为避免多次导入造成数据异常,在进行导入时,建议使用”-c” 参数,在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象。

4.1 gs_restore命令

  • -d, –dbname=NAME,连接数据库dbname并直接导入到该数据库中;
  • -f, –file=FILENAME,指定生成脚本的输出文件;
  • -a, -data-only,只导入数据,不导入模式(数据定义);
  • -c, –clean,在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象。
  • -C, –create,导入到数据库之前先创建数据库;
  • -n, –schema=NAME,只导入已列举的模式中的对象;
  • -t, –table=NAME,只导入已列举的表定义、数据或定义和数据;

4.2 -F c,导出与恢复

(1) 导出

gs_dump -f gsdump_c.dmp -p 26000 sugon_db -t customer_t1 -F c

(2) 恢复

--删除原表

sugon_db=# drop table customer_t1 cascade;

--利用gs_restore导入数据

gs_restore -d sugon_db -p 26000 -t customer_t1 gsdump_c.dmp

--检查数据

\d

select count(*) from customer_t1;

4.3 -F d,导出与恢复

(1)导出

gs_dump -f gsdump_d -p 26000 sugon_db -t customer_t1 -F d

(2) 恢复

--删除原表

sugon_db=# drop table customer_t1 cascade;

--利用gs_restore导入数据

gs_restore -d sugon_db -p 26000 -t customer_t1 gsdump_d

--检查数据

\d

select count(*) from customer_t1;

4.4 -F t,导出与恢复

(1) 导出

gs_dump -f gsdump_t.tar -p 26000 sugon_db -t customer_t1 -F t

(2) 恢复

--删除原表

sugon_db=# drop table customer_t1 cascade;

--利用gs_restore导入数据

gs_restore -d sugon_db -p 26000 -t customer_t1 gsdump_t.tar

--检查数据

\d

select count(*) from customer_t1;

5. 数据库主机备份与恢复:gs_backup

gs_backup工具可以备份和恢复openGauss数据库软件相关的二进制文件和参数文件,当数据库主机出现故障时,用于恢复openGauss软件环境。

5.1 gs_backup命令

  • -t,backup | restore,指定操作类型,备份还是恢复;
  • -h,指定存储备份文件的主机名;
  • -backup-dir=BACKUPDIR,备份文件保存路径;
  • -all,备份二进制和参数文件;
  • -parameter,备份参数文件;
  • -binary,备份二进制文件;
  • -l,指定日志文件路径;

5.2 gs_backup软件备份

gs_backup -t backup --backup-dir=gs_backup_`date '+%Y%m%d'` --all

5.3 gs_backup软件恢复

(1) 破坏部分数据库程序

rm `which gsql`

rm /opt/huawei/install/data/db1/{pg_hba.conf,postgresql.conf}

(2)恢复程序

gs_backup -t restore --backup-dir=gs_backup_20200811 --all

(3) 全部破坏

当/opt/huawei/install/app下的文件完全丢失时,可将gs_backup备份的程序解包后,恢复到原位置。

openGauss数据库备份与恢复相关推荐

  1. Oracle数据库备份与恢复的三种方法

    Oracle数据库备份与恢复的三种方法 Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP).热备份和冷备份.导出备件是一种逻辑备份,冷备份和热备份是物理备份. 一. 导出/ ...

  2. linux数据库都备份什么,Linux运维学习之数据库备份与恢复

    今天给大家带来的是关于数据库备份与恢复的教程,当我们手贱或者不知道什么原因导致数据库的崩溃,甚至删除数据库时怎么办,总不能跑路吧?所以我们做好日常的备份和相关的灾后重建很有必要. 那么备份都有什么方式 ...

  3. mysql 5.7 数据库备份_MySQL5.7.20数据库备份与恢复

    MySQL数据库备份与恢复 · ####造成数据丢失的原因#### 程序错误 人为操作错误 运算错误 磁盘故障 灾难(如火灾.地震)和盗窃 · ####物理与逻辑的角度#### 1.物理备份: 冷备份 ...

  4. 深入剖析ORACLE数据库备份与恢复的原理

    一.ORACLE数据库备份与恢复方法 1,用户管理的ORACLE数据库备份与恢复 用户管理的ORACLE数据库备份与恢复是指使用SQL 语句命令结合OS命令备份和恢复DB的方法(也被称为OS 备份与恢 ...

  5. 【连载】如何掌握openGauss数据库核心技术?秘诀五:拿捏数据库安全(4)

    点击蓝字 · 关注我们 前文回顾: 1.如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(1) 2.如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(2) 3.如何掌握 ...

  6. 【连载】如何掌握openGauss数据库核心技术?秘诀五:拿捏数据库安全(3)

    点击蓝字 · 关注我们 前文回顾: 1.如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(1) 2.如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(2) 3.如何掌握 ...

  7. 【连载】如何掌握openGauss数据库核心技术?秘诀五:拿捏数据库安全(2)

    点击蓝字 · 关注我们 前文回顾: 1.如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(1) 2.如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(2) 3.如何掌握 ...

  8. 【连载】如何掌握openGauss数据库核心技术?秘诀五:拿捏数据库安全(1)

    点击蓝字 关注我们 前文回顾: 1.如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(1) 2.如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(2) 3.如何掌握op ...

  9. 【连载】如何掌握openGauss数据库核心技术?秘诀四:拿捏事务机制(4)

    前文回顾: 1.如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(1) 2.如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(2) 3.如何掌握openGauss数据库 ...

  10. 【连载】如何掌握openGauss数据库核心技术?秘诀四:拿捏事务机制(3)

    前文回顾: 1.如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(1) 2.如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(2) 3.如何掌握openGauss数据库 ...

最新文章

  1. apache实现URL地址隐藏跳转
  2. 去除tableview中每个cell的分段线
  3. 关于IE8.0 Internet Explorer 已经为了帮助保护您的计算机而关闭此网页 解决方法
  4. 第三章 可扩展标记语言XML
  5. Tomact和MySql搭建android简单服务器
  6. mongoose Topology was destroyed 处理
  7. oracle RAC切换归档
  8. python中config命令_【Python】 配置解析ConfigParser 命令行参数解析optparser
  9. Python技术、爬虫、数据分析问题汇总【自用】
  10. iBeiKe十周年照片~
  11. jq怎么更换json对象的key_toString如何转json
  12. 抖音直播视频下载保存到本地地瓜网络技术
  13. C语言指针的正确打开方式!
  14. 谷歌账号Gmail邮箱修改密码提示需要手机设备验证码如何处理
  15. 政务微信门户建设思考
  16. PHP导出word【 直接生成word文件 】
  17. 面向单片机编程(三)- 数码管显示
  18. Excel中计算曲线的面积
  19. hadoop机架感知原理
  20. 机房收费系统——验收报告

热门文章

  1. mysql +cobar_Cobar源码解析(一)
  2. android体脂代码,该减肥了吗?教你用手机App测量体脂率
  3. OSI七层协议模型与记忆口诀
  4. 使用adb安装apk报错:INSTALL_FAILED_INVALID_URI
  5. oracle导出pck文件,Oracle sqlloader自动化导入迁移工具—可批量生成千万控制文件与批处理文件|一键执行(推荐)...
  6. python OpenCV给视频去除水印
  7. Xilinx_JESD204B
  8. 微信小程序+PHP实现登录注册(手把手教程)
  9. LOL聊天服务器一直是断开状态怎么办,lol聊天服务器为什么老连不上 lol聊天服务器连不上解决技巧...
  10. FANUC 工业机器人编程与联网