openGauss学习笔记-148 openGauss 数据库运维-备份与恢复-逻辑备份与恢复之gs_dumpall

本文主要是介绍openGauss学习笔记-148 openGauss 数据库运维-备份与恢复-逻辑备份与恢复之gs_dumpall,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • openGauss学习笔记-148 openGauss 数据库运维-备份与恢复-逻辑备份与恢复之gs_dumpall
      • 148.1 背景信息
      • 148.2 注意事项
      • 148.3 语法
      • 148.4 参数说明
        • 148.4.1 通用参数
        • 148.4.2 转储参数
      • 148.5 说明
      • 148.6 示例

openGauss学习笔记-148 openGauss 数据库运维-备份与恢复-逻辑备份与恢复之gs_dumpall

148.1 背景信息

gs_dumpall是openGauss用于导出所有数据库相关信息工具,它可以导出openGauss数据库的所有数据,包括默认数据库postgres的数据、自定义数据库的数据以及openGauss所有数据库公共的全局对象。

gs_dumpall工具由操作系统用户omm执行。

gs_dumpall工具在进行数据导出时,其他用户可以访问openGauss数据库(读或写)。

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

gs_dumpall时生成列不会被转储。

gs_dumpall在导出openGauss所有数据库时分为两部分:

  • gs_dumpall自身对所有数据库公共的全局对象进行导出,包括有关数据库用户和组、表空间以及属性(例如,适用于数据库整体的访问权限)信息。
  • gs_dumpall通过调用gs_dump来完成openGauss中各数据库的SQL脚本文件导出,该脚本文件包含将数据库恢复为其保存时的状态所需要的全部SQL语句。

以上两部分导出的结果为纯文本格式的SQL脚本文件,使用gsql运行该脚本文件可以恢复openGauss数据库。

148.2 注意事项

  • 禁止修改导出的文件和内容,否则可能无法恢复成功。
  • 为了保证数据一致性和完整性,gs_dumpall会对需要转储的表设置共享锁。如果某张表在别的事务中设置了共享锁,gs_dumpall会等待此表的锁释放后锁定此表。如果无法在指定时间内锁定某张表,转储会失败。用户可以通过指定–lock-wait-timeout选项,自定义等待锁超时时间。
  • 由于gs_dumpall读取所有数据库中的表,因此必须以openGauss管理员身份进行连接,才能导出完整文件。在使用gsql执行脚本文件导入时,同样需要管理员权限,以便添加用户和组以及创建数据库。

148.3 语法

gs_dumpall [OPTION]...

148.4 参数说明

148.4.1 通用参数
  • -f, –filename=FILENAME

    将输出发送至指定文件。如果这里省略,则使用标准输出。

  • -v, –verbose

    指定verbose模式。该选项将导致gs_dumpall向转储文件输出详细的对象注解和启动/停止次数,向标准错误流输出处理信息。

  • -V, –version

    打印gs_dumpall版本,然后退出。

  • –lock-wait-timeout=TIMEOUT

    请勿在转储刚开始时一直等待以获取共享表锁。如果无法在指定时间内锁定某个表,就选择失败。可以以任何符合SET statement_timeout的格式指定超时时间。

  • -?, –help

    显示gs_dumpall命令行参数帮助,然后退出。

148.4.2 转储参数
  • -a, –data-only

    只转储数据,不转储模式(数据定义)。

  • -c, –clean

    在重新创建数据库之前,执行SQL语句清理(删除)这些数据库。针对角色和表空间的转储命令已添加。

  • -g, –globals-only

    只转储全局对象(角色和表空间),无数据库。

  • -o, –oids

    转储每个表的对象标识符(OIDs),作为表的一部分数据。该选项用于应用以某种方式参照了OID列的情况。如果不是以上这种情况,请勿使用该选项。

  • -O, –no-owner

    不输出设置对象的归属这样的命令,以匹配原始数据库。默认情况下,gs_dumpall会发出ALTER OWNER或SET SESSION AUTHORIZATION语句设置所创建的模式元素的所属。如果脚本正在运行,该语句不会执行成功,除非是由系统管理员触发(或是拥有脚本中所有对象的同一个用户)。通过指定-O,编写一个任何用户都能存储的脚本,且该脚本会授予该用户拥有所有对象的权限。

  • -r, –roles-only

    只转储角色,不转储数据库或表空间。

  • -s, –schema-only

    只转储对象定义(模式),而非数据。

  • -S, –sysadmin=NAME

    该参数为扩展预留接口,不建议使用。。

  • -t, –tablespaces-only

    只转储表空间,不转储数据库或角色。

  • -x, –no-privileges

    防止转储访问权限(授权/撤销命令)。

  • –column-inserts|–attribute-inserts

    以INSERT命令带列名(INSERT INTO表(列、…)值…)方式导出数据。这会导致恢复缓慢。但是由于该选项会针对每行生成一个独立分开的命令,所以在重新加载某行时出现的错误只会导致那行丢失,而非整个表内容。

  • –disable-dollar-quoting

    该选项将禁止在函数体前使用美元符号$,并强制使用SQL标准字符串语法对其进行引用。

  • –disable-triggers

    该参数为扩展预留接口,不建议使用。

  • –inserts

    发出INSERT命令(而非COPY命令)转储数据。这会导致恢复缓慢。注意:如果重排列顺序,可能会导致恢复整个失败。–column-inserts选项更加安全,虽然可能更慢些。

  • –no-security-labels

    该参数为扩展预留接口,不建议使用。

  • –no-tablespaces

    请勿输出创建表空间的命令,也请勿针对对象选择表空间。使用该选项,无论默认表空间是哪个,在恢复过程中所有对象都会被创建。

  • –no-publications

    不转储发布。

  • –no-security-labels

    该参数为扩展预留接口,不建议使用。

  • –no-subscriptions

    不转储订阅。

  • –include-alter-table

    导出表中已删除的列信息。

  • –quote-all-identifiers

    强制对所有标识符加引号。为了向后续版本迁移,且其中可能涉及引入额外关键词,在转储相应数据库时该选项会有帮助。

  • –dont-overwrite-file

    不重写当前文件。

  • –use-set-session-authorization

    输出符合SQL标准的SET SESSION AUTHORIZATION命令而不是ALTER OWNER命令来确定对象所有权。这样令转储更加符合标准,但是如果转储文件中的对象的历史有些问题,那么可能不能正确恢复。并且,使用SET SESSION AUTHORIZATION的转储需要数据库系统管理员的权限才能转储成功,而ALTER OWNER需要的权限则低得多。

  • –with-encryption=AES128

    指定转储数据需用AES128进行加密。

  • –with-key=KEY

    AES128密钥规则如下:

    • 密钥长度为8~16个字符。
    • 至少包含大写字母(A-Z),小写字母(a-z),数字(0-9),非字母数字字符(限定为~!@#$%^&*()-_=+|[{}];:,<.>/?)四类字符中的三类字符。
  • –include-Extensions

    如果include-Extensions参数被设置,将备份所有的CREATE Extension语句。

  • –include-templatedb

    转储过程中包含模板库。

  • –binary-upgrade

    该参数为扩展预留接口,不建议使用。

  • –binary-upgrade-usermap=“USER1=USER2”

    该参数为扩展预留接口,不建议使用。

  • –non-lock-table

    该参数仅供软件间接口调用。

  • –tablespaces-postfix

    该参数为扩展预留接口,不建议使用。

  • –parallel-jobs

    指定备份进程并发数,取值范围为1~1000。

  • –pipeline

    使用管道传输密码,禁止在终端使用。

img 说明:

  • -g/–globals-only和-r/–roles-only不能同时使用。
  • -g/–globals-only和-t/–tablespaces-only不能同时使用。
  • -r/–roles-only和-t/–tablespaces-only不能同时使用。
  • -s/–schema-only和-a/–data-only不能同时使用。
  • -r/–roles-only和-a/–data-only不能同时使用。
  • -t/–tablespaces-only和-a/–data-only不能同时使用。
  • -g/–globals-only和-a/–data-only不能同时使用。
  • –tablespaces-postfix和–binary-upgrade必须一起使用。
  • –binary-upgrade-usermap和–binary-upgrade必须一起使用。
  • –parallel-jobs和-f/–file必须一起使用。

连接参数:

  • -h, –host=HOSTNAME

    指定主机的名称。如果取值是以斜线开头,它将用作Unix域套接字的目录。默认值取自PGHOST环境变量;如果没有设置,将启动某个Unix域套接字建立连接。

    该参数只针对openGauss外,对openGauss内本机只能用127.0.0.1。

    环境变量:PGHOST

  • -l, –database=DATABASENAME

    指定所连接的转储全局对象的数据库名称,并去寻找还有其他哪些数据库需要被转储。如果没有指定,会使用postgres数据库,如果postgres数据库不存在,会使用template1。

  • -p, –port=PORT

    指定服务器所侦听的TCP端口或本地Unix域套接字后缀,以确保连接。默认值设置为PGPORT环境变量。

    在开启线程池情况下,建议使用 pooler port,即侦听端口+1。

    环境变量:PGPORT

  • -U, –username=NAME

    所连接的用户名。

    环境变量:PGUSER

  • -w, –no-password

    不出现输入密码提示。如果服务器要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。 该选项在批量工作和不存在用户输入密码的脚本中很有帮助。

  • -W, –password=PASSWORD

    指定用户连接的密码。如果主机的认证策略是trust,则不会对系统管理员进行密码验证,即无需输入-W选项;如果没有-W选项,并且不是系统管理员,“Dump Restore工具”会提示用户输入密码。

  • –role=ROLENAME

    指定创建转储使用的角色名。选择该选项,会使gs_dumpall连接数据库后,发起一个SET ROLE角色名命令。当所授权用户(由-U指定)没有gs_dumpall要求的权限时,该选项会起到作用,即切换到具备相应权限的角色。某些安装操作规定不允许直接以系统管理员身份登录,而使用该选项能够在不违反该规定的情况下完成转储。

  • –rolepassword=ROLEPASSWORD

    指定具体角色用户的角色密码。

148.5 说明

由于gs_dumpall内部调用gs_dump,所以一些诊断信息参见gs_dump。

一旦恢复,最好在每个数据库上运行ANALYZE,优化程序提供有用的统计数据。

gs_dumpall恢复前需要所有必要的表空间目录为空;否则,对于处在非默认位置的数据库,数据库创建会失败。

148.6 示例

使用gs_dumpall一次导出openGauss的所有数据库。

img 说明:

gs_dumpall仅支持纯文本格式导出。所以只能使用gsql恢复gs_dumpall导出的转储内容。

gs_dumpall -f backup/bkp2.sql -p 37300
gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:09]: The total objects number is 2371.
gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:35]: [100.00%] 2371 objects have been dumped.
gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:46]: dump database dbname='postgres' successfully
gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:46]: total time: 55567  ms
gs_dumpall[port='37300'][2018-06-27 09:55:46]: dumpall operation successful
gs_dumpall[port='37300'][2018-06-27 09:55:46]: total time: 56088  ms

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

图片

这篇关于openGauss学习笔记-148 openGauss 数据库运维-备份与恢复-逻辑备份与恢复之gs_dumpall的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/473318

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss