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/

  • 相关阅读:
    LeetCode(111) Minimum Depth of Binary Tree
    LeetCode(108) Convert Sorted Array to Binary Search Tree
    LeetCode(106) Construct Binary Tree from Inorder and Postorder Traversal
    LeetCode(105) Construct Binary Tree from Preorder and Inorder Traversal
    LeetCode(99) Recover Binary Search Tree
    【Android】通过经纬度查询城市信息
    【Android】自定义View
    【OpenStack Cinder】Cinder安装时遇到的一些坑
    【积淀】半夜突然有点想法
    【Android】 HttpClient 发送REST请求
  • 原文地址:https://www.cnblogs.com/xibuhaohao/p/11340965.html
Copyright © 2011-2022 走看看