Deepgreen & Greenplum DBA小白普及课之三(备份问题解答)

不积跬步无以至千里,要想成为一名合格的数据库管理员,首先应该具备扎实的基础知识及问题处理能力。本文参考Pivotal官方FAQ,对在管理Deepgreen & Greenplum时经常会遇到的问题提出解决思路/答案,本篇主要讲备份方面的问题。希望对大家有所帮助,如果有朋友有更多的问题分享,请留言,我将一并整理。

1.简单描述一下Deepgreen & Greenplum的备份架构?

当我们执行全库备份操作时,后台进行了如下操作:

  • 检查备份命令语法
  • 检查备份目录是否存在,如果不存在便创建目录
  • 检查备份文件存放目录大小是否能够放下备份文件
  • 如果上面三条都满足,紧接着开始备份数据库
  • 在pg_class上唤起排它锁,阻止DDL操作和另外的备份动作
  • 一旦DDL语句备份完成,在所有用户表上唤起共享锁
  • pg_class上的排它锁释放
  • 备份请求被下发到集群中的所有Segment节点
  • 备份请求开始并行备份各个Segment的数据
  • 备份完成后,请求和用户表上的锁都被释放
  • 备份完成

2.简单描述一下Deepgreen & Greenplum增量备份的架构?

当我们执行增量备份操作时,后台进行了如下操作:

  • 每次执行数据库备份时,gpcrondump工具为AO/CO表创建状态文件
  • 这些状态文件用来记录数据库中AO/CO表的元组/行的数量
  • 这些状态文件也记录了这些表的操作元数据(truncate,alter,etc)
  • 状态文件不存储heap表的相关信息,因为每次增量备份都备份所有heap表数据
  • 当我们执行增量备份时,gpcrondump以上次生成的状态文件为准,去对比每一个表的变化
  • 如果某张表自上次备份后状态有变化,就去备份这部分变化数据
  • 以上步骤只对AO和CO表备份试用
  • AO-Append-optimized,CO-Column-oriented

3.数据库提供哪些备份和恢复工具?

主要分为以下四种,具体试用方法请参考官方文档:

  • gpcrondump/gpdbrestore
  • gp_dump/gp_restore
  • pg_dump/pg_restore
  • copy..to../copy..from..

4.上面提到的这几种工具在什么情境下使用?

  • gpcrondump/gpdbrestore - 用于并行备份或恢复,可与Linux定时任务配合使用
  • gp_dump/gp_restore - 用于并行备份或恢复
  • pg_dump/pg_restore - 用于非并行备份或恢复,少量数据备份
  • copy..to../copy..from.. - 用于非并行备份或恢复,多用于导出/导入平面数据文件,例如csv

5.如何备份获得一个表的DDL语句?

可以使用pg_dump导出,例如:

pg_dump  -t njonna.accounts -s -f ddl_accounts.sql

Where:

-f  ddl_accounts.sql is output file.
-t njonna.accounts is table name with schema njonna.
-s dump only schema no data

6.gpcrondump和gp_dump有什么不同?

  • gpcrondump在gp_dump基础上包装而成,可以直接调用,也可以在crontab定时任务中调用。

7. 如何备份所有数据库的schema?

使用pg_dumpall工具可以把所有数据库的信息导出来,其中也包含资源队列和角色,导出所有数据库的schema可以用下面例句:

pg_dumpall --gp-syntax --schema-only > db_dump.sql

8.如何复制一个数据库?

下面命令可以创建一个数据库的全复制:

CREATE DATABASE new_dbname TEMPLATE old_dbname;

9.如何在Linux定时任务中配置一个定期备份?

gpcrondump工具是gp_dump的封装,可以与crontab定时任务配合使用。下面语句展示了一项每天凌晨0点1分执行一次备份的例子,执行前注意初始化数据库的环境变量:

source /home/gpadmin/.bashrc
01 0 * * * gpadmin gpcrondump -x test -c -g -G -a -q >> gp_test.log

10.gp_dump和pg_dump的不同是什么?

  • pg_dump/pg_dumpall可以从Deepgreen或者Greenplum数据库迁移数据到其他类型的数据库,如postgresql。他们在Master上非并行的执行并生成一个导出文件,不会涉及到Segment备份动作。他们生成的数据文件不能被gp_restore使用。
  • gp_dump和gpcrondump不备份全局对象(资源队列、角色等)。这些对象必须使用pg_dumpall来备份。

同系列相关文章:

Deepgreen & Greenplum DBA小白普及课之一(一般问题解答)

Deepgreen & Greenplum DBA小白普及课之二(管理问题解答)

Deepgreen & Greenplum DBA小白普及课之四(性能问题解答)

转载自:https://www.sypopo.com/post/86r2MgpVQX/

Deepgreen & Greenplum DBA小白普及课之三的更多相关文章

  1. Deepgreen/Greenplum 删除节点步骤

    Deepgreen/Greenplum删除节点步骤 Greenplum和Deepgreen官方都没有给出删除节点的方法和建议,但实际上,我们可以对节点进行删除.由于不确定性,删除节点极有可能导致其他的 ...

  2. 答:SQLServer DBA 三十问之三:有哪些操作会使用到TempDB;如果TempDB异常变大,可能的原因是什么,该如何处理

    3. 有哪些操作会使用到TempDB:如果TempDB异常变大,可能的原因是什么,该如何处理: tempdb的用途:1)存储专用和全局临时变量,不考虑数据库上下文: 2)与Order by 子句,游标 ...

  3. 浅谈MITM攻击之信息窃取(解密315晚会报道的免费WIFI窃取个人信息)

    前言   所谓的MITM攻击(即中间人攻击),简而言之就是第三者通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方毫无感知.这个很早就成为黑客常用的手段,一会聊的315晚会窃取个人信息只是 ...

  4. 在Mac上搭建React Native开发环境

    概述 前面我们介绍过在window环境下开发React Native项目,今天说说怎么在mac上搭建一个RN的开发环境. 配置mac开发环境 基本环境安装 1.先安装Homebrew:用于安装Node ...

  5. Linux包系列的知识(附:Ubuntu16.04升级到18.04的案例)

    Linux基础:https://www.cnblogs.com/dunitian/p/4822808.html#linux 之前看到朋友还动不动 apt-get update upgrade,就很纳闷 ...

  6. python学习:绝对路径和相对路径

    python学习:绝对路径和相对路径 大牛们应该对路径都很了解了,这篇文章主要给像我这样的入门小白普及常识用的,啊哈 下面的路径介绍针对windows,其他平台的暂时不是很了解. 在编写的py文件中打 ...

  7. [原创] PHP 使用Redis实现锁

    目录 锁实现的注意点 加锁 connect 与 pconnect 解锁 Redis 中使用 Lua 脚本的注意点 Redis集群分布式锁 RedLock 算法 锁实现的注意点 互斥: 任意时刻, 只能 ...

  8. [转] 在Mac上搭建React Native开发环境

    原文链接: http://blog.csdn.net/xiangzhihong8/article/details/53914336 概述 前面我们介绍过在window环境下开发React Native ...

  9. Python中的绝对路径和相对路径

    大牛们应该对路径都很了解了,这篇文章主要给像我这样的入门小白普及常识用的,啊哈 下面的路径介绍针对windows,其他平台的暂时不是很了解. 在编写的py文件中打开文件的时候经常见到下面其中路径的表达 ...

随机推荐

  1. AVR单片机教程——拨动开关

    在按键的上方有4个拨动开关.开关与按键,在原理和使用方法上都是很类似的,但有不同的用途——按键按下后松开就会弹起,而开关可以保存其状态. <switch.h> 定义了与开关相关的函数.sw ...

  2. 微信H5页面前端开发,大多数人都会遇到的几个兼容性坑

    最近给公司微信公众号,写了微信h5业务页面,总结分享一下前端开发过程中的几个兼容性坑,项目直接拿的公司页面,所以下文涉及图片都模糊处理了. 1.ios端兼容input光标高度 问题详情描述:input ...

  3. [洛谷P5431]【模板】乘法逆元2

    题目大意:给定$n(n\leqslant5\times10^6)$个正整数$a_i$,和$k$.求:$$\sum_{i=1}^n\dfrac{k^i}{a_i}\pmod p$$题解:$$令P=\pr ...

  4. 最简单 无返回值 无参数 sql server存储过程

    CREATE proc Upadte_stateas update Table_1 set [state]=2 where id in (select id from Table_1 where st ...

  5. js 页面技巧

    需要获取页面上固定的某个按钮的属性值.我们需要在页面加载完的第一刻将值存储到定义的变量,防止用户更改页面样式读不出当前元素.如果页面刷新会重置当前属性 <body> <input v ...

  6. 关于 Nginx的相关学习

    转自:https://www.cnblogs.com/wcwnina/category/1193394.html Nginx能做什么 ——反向代理 ——负载均衡 ——HTTP服务器(动静分离) ——正 ...

  7. IOS - 总结下swift使用GCD 多线程(二)GCD和DispatchQueue

    1.前言  iOS中处理多核并发的技术有两种分别是:`Grand Central Dispatch`(以下简称`GCD`)和`NSOperationQueue`框架.iOS开发的老司机们在程序开发中处 ...

  8. JavaScript的变量和常量

    1.什么是常量? 常量表示一些固定不变的数据 现实生活中人的性别其实就可以看做是常量, 生下来是男孩一辈子都是男孩, 生下来是女孩一辈子都是女孩 2.JavaScript中常量的分类 2.1整型常量 ...

  9. Node.js学习之(第三章:简易小demo)

    前言 我们前面已经学习完了Node中一些核心模块还有如何正确配置响应头的Content-Type,今天我们来实现一个简单的demo,巩固下之前学习的内容. 需求 我们平时访问百度或者其他大的门户网站的 ...

  10. vue_插槽的理解和使用

    对于插槽的概念和使用,这是vue的一个难点,这需要我们静下心来,慢慢研究.以下是我这两天通过官网和其他资料的学习和使用总结出来的笔记,如有错误或者有不同见解的,欢迎留言,一起学习. 什么是插槽? 插槽 ...