zoukankan      html  css  js  c++  java
  • GreenPlum 数据备份与恢复

    GreenPlum数据备份与恢复
    gp_dump是GP并行备份的备份工具,在运行gp_dump的时候master与所有的segment节点都开始备份(standby节点和segment节点中的mirror实例不参加备份),数据文件都是放在各个的节点服务器上,消耗的时间和数据量最大的、消耗时间最长的节点有关。
    常用的gp_dump参数有:
    -h                     GPmaster主机名
    -p                     GPmaster端口
    -U                     用户名
    -t/--table             后接表名,只备份匹配的表
    -n/--schema            备份的schema名字
    --gp-d                 备份的数据目录
    --gp-r                 备份report目录
    --gp-k                 备份文件使用的时间戳
    12345678
    更多可通过命令gp_dump --help显示。
    与gp_dump对应的数据恢复操作,使用的命令是gp_restore.
    常用的gp_restore参数有:
    -h                     GPmaster主机名
    -p                     GPmaster端口
    -U                     用户名
    -d/--dbname            数据库名
    --gp-d                 要恢复的数据所在目录
    --gp-r                 report文件所在目录
    --gp-k                 恢复文件使用的时间戳
    --status              状态文件所在位置
    12345678
    更多可通过命令gp_restore --help显示。
    常用的备份与恢复方式有表,数据库,schema的备份与恢复。
    表备份与恢复
    表备份
    1.创建备份路径
    mkdir -p /opt/gpbackup/
    chown gpadmin:gpadmin /opt/gpbackup/
    12
    2.在gpadmin用户下执行
    gp_dump test_db --table=test_table --gp-d=/opt/gpbackup/ --gp-r=/opt/gpbackup/
    1
    需要阅读backup report,并记录备份的时间戳(timestamp key),以在数据恢复时使用。
    数据库名为test_db,表名为test_table。
    3.手动备份pg_hba.conf文件,执行如下:
    cd $MASTER_DATA_DIRECTORY
    cp pg_hba.conf /opt/gpbackup/
    12
    表恢复
    注:在恢复的时候,GP的segment必须与备份的时候一致
    1.表恢复之前,要确保要导入数据的集群中存在数据库test_db,且不能存在表test_table,否则会报错。
    2.表恢复,执行命令:
    gp_restore -d test_db --gp-d=/opt/gpbackup/ --gp-r=/opt/gpbackup/ --gp-k=时间戳
    1
    3.手动恢复备份的pg_hba.conf文件
    数据库备份与恢复
    与表备份与恢复相似,只不过备份时少了参数–table。
    数据库恢复前要确保新建一个名为test_db(与备份的数据库名相同)的数据库。
    schema备份与恢复
    步骤与表备份与恢复相同,以下只列出备份与恢复命令
    备份:
    gp_dump test_db -n test_schema --gp-d=/opt/gpbackup/ --gp-r=/opt/gpbackup/
    1
    test_schema为test_db中的一个模式
    恢复:
    恢复前要确保倒数数据的集群没有名为test_schema的schema,若有的话先删除。
    恢复命令:
    gp_restore -d test_db --gp-d=/opt/gpbackup/ --status=/opt/gpbackup/ --gp-r=/opt/gpbackup/ --gp-k=时间戳
    1
    注意要加上status参数。
    参考:http://blog.itpub.net/29989552/viewspace-2127566/
    ------------------------------------------------------------------------------------------------------------------------------------------------
    以下内容转载自:http://mamicode.com/info-detail-2306588.html
    备份
    并行备份(gp_dump)
    GP 同时备份 Master 和所有活动的 Segment 实例,备份消耗的时间与系统中实例的数量没有关系。在 Master 主机上备份所有 DDL 文件和 GP 相关的数据字典表,每个 Segment 备份各自的数据。所有备份文件组成一个完整的备份集合,通过唯一 14 位数字的时间戳来识别。
    gp_dump 的使用可参考上文。
    gp_dump 命令将在数据目录生成如下的备份文件:
    在 Master 主机上
    gp_catalog_1_<dbid>_<timestamp>     -- 数据字典表
    gp_cdatabase_1_<dbid>_<timestamp>   -- 创建数据库 SQL 语句
    gp_dump_1_<dbid>_<timestamp>        -- 创建 schema SQL 语句
    gp_dump_1_<dbid>_<timestamp>_post_data  -- 创建 Table SQL 语句
    1234
    在 Segment 主机上
    gp_dump_0_ <dbid>_<timestamp>           -- 用户数据文件
    gp_dump_status_0_ <dbid>_<timestamp>    -- 日志文件
    12
    并行备份(gpcrondump)
    gpcrondump命令是对gp_dump命令的封装。
    在 Master 和 Segment 的数据目录创建备份文件:
    Segment 数据的备份使用 gzip 压缩格式,默认将数据备份自 <data_directory>/db_dumps/下。
    <data_directory>/db_dumps/YYYYMMDD
    1
    使用 CRON 调度备份操作,定义一个调用 gpcrondump 的 crontab 条目。
    例如,在午夜1点备份 testdw 数据库
    0 1 0 * * * gpadmin source $GPHOME/greenplum_path.sh;
    gpcrondump –x testdw –c –g –G –a –q >> gp_testdwdump.log;
    12
    备份数据库mydatabase
    gpcrondump -x mydatabase -c -g -G
    1
    非并行备份(pg_dump)
    GP 依然支持常规的 PostgreSQL 备份命令 pg_dump 和 pg_dumpall,备份将在 Master 主机上创建一个包含所有 Segment 数据的大的备份文件。因此,不适合于全部数据备份,适用于小部分数据的迁移或备份。
    pg_dump testdw > testdw.sql;                        -- 导出 SQL 脚本文件
    pg_dump –Ft –gp-syntax testdw > testdw.tar;         -- 导出包含分布键信息的 tar 文件
    pg_dump –Fc testdw > testdw.dump;   -- 导出到定制格式的归档文件
    pg_dump –t tb_cp_02 testdw > tb_cp_02_testdw.sql;   -- 导出单个表
    pg_dump –t ‘"MixedTableName"‘ testdw > tab_testdw.sql;  -- 导出混合大小写名称的表
    pg_dumpall > all.dump;              -- 集群备份
    123456
    恢复
    并行恢复(gp_restore)
    参考上文。
    并行恢复(gpdbrestore)
    gpdbrestore 命令是对 gp_restore 命令的包装,提供更灵活的选项,使用 gpcrondump 备份生成的备份文件来进行恢复。
    在 Master 主机上执行 gpdbrestore 命令(-R 指定备份文件所在的主机名和路径)
    gpdbrestore –R archive_host:/gpdb/backups/archive/20131231;
    1
    非并行恢复(pg_restore)
    使用由 pg_dump 或 pg_dumpall 创建的备份文件来恢复,使用非并行恢复可以实现异构系统恢复。
    使用 pg_restore 或 psql 进行恢复
    pg_restore –d testdw testdw.dump;
    psql -d testdw –f tb_cp_02_testdw.sql;
    12
    在决定使用恢复程序时,需确定以下几个问题:
    1.备份文件在哪里?
    如果备份文件位于 gp_dump 生成的原始位置,可以简单的通过 gp_restore 命令恢复;如果备份文件已经移除 GP 集群,使用 gpdbrestore 来恢复。
    2.是否需要恢复整个系统,还是只恢复数据?
    如果 GP 仍在运行并仅需要恢复数据,使用 gp_restore 或 gpdbrestore 命令来恢复;如果丢失了整个集群或者需要从备份来重建整个集群,使用 gpinitsystem 命令。
    3.是否恢复的系统与备份时的系统具有相同数量的 Instance?
    如果相同,使用 gp_restore 或 gpdbrestore 命令来恢复; 如果是在不同集群间迁移,必须使用非并行恢复。
    非并行恢复异构系统
    通过master节点进行备份,确保segment的备份文件被拷贝到master节点目录下。
    确保具备了全部的备份文件,包括 Master 和每一个 Segment 的文件,所有的文件具有相同的时间戳标识符。
    1. 创建需要恢复的数据库
    createdb testdw;
    2. 装载 Master 备份文件以恢复数据库对象
    psql -d testdw -f /data/backups/gp_dump_1_1_20131231001327;
    3. 装载每个 Segment 的备份文件以恢复数据
    psql –d testdw -f /data/backups/gp_dump_0_2_20131231001327;
    psql –d testdw -f /data/backups/gp_dump_0_3_20131231001327;
    4. 恢复 Table 相关的对象,比如索引、触发器、主键约束等
    psql –d testdw -f /data/backups/ gp_dump_1_1_20131231001327_post_data;

    原文:https://blog.csdn.net/hmxz2nn/article/details/83032164

  • 相关阅读:
    teamviewer被识别为商用的解决办法
    PLY调试笔记——待解决的问题
    python中的反射
    类的继承顺序
    面向对象---继承
    类成名和命名空间
    面向对象编程
    模块的初始
    装饰器
    列表推导式,生成器
  • 原文地址:https://www.cnblogs.com/xibuhaohao/p/11115395.html
Copyright © 2011-2022 走看看