zoukankan      html  css  js  c++  java
  • Deepgreen & Greenplum DBA小白普及课之三

    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/

  • 相关阅读:
    video 标签在微信浏览器的问题解决方法
    微信朋友圈分享之自定义网页按钮分享
    巧用weui.topTips验证数据
    巧用weui.gallery(),点击图片后预览图片
    巧用ajax请求服务器加载数据列表时提示loading
    页面间固定参数,通过cookie传值
    手机端页面下拉加载数据的笨办法--点击按钮添加数据
    LeetCode 41 First Missing Positive(找到数组中第一个丢失的正数)
    LeetCode 40 Combination Sum II(数组中求和等于target的所有组合)
    LeetCode 39 Combination Sum(满足求和等于target的所有组合)
  • 原文地址:https://www.cnblogs.com/xibuhaohao/p/11340965.html
Copyright © 2011-2022 走看看