美文网首页
从阿里云上备份pg部分表到内网还原

从阿里云上备份pg部分表到内网还原

作者: watson168 | 来源:发表于2017-11-16 14:28 被阅读15次

    背景:有些表中的数据需要进行同步到内网供数据分析人员使用,在备份表的过程中,发现pg_dump 没有加入密码的选项,必须要手动加入。查询官方文档后发现可以用加入密码文件的方式进行免密码备份。

    这里指定了密码文件的格式及权限配置

    备份还原流程

    • 备份所需的表
    • 同步数据到内网
    • 导入数据到内网pg库
    • 敏感数据处理
    1. 备份表

    ①创建所需要的密码文件

    [root@8u29-pg ~]# echo "192.168.6.111:5432:fintech_k8s:fintech:xxxx"  > ~/.pgpass ; chmod 0600 ~/.pgpass 
    

    ②将需要备份的表放入到/root/shell/bakpg/tables.txt 文件中
    ③写备份所需的python脚本

     cat pg_bak.py 
    #!/usr/bin/env python
    # - * - coding: utf-8 - * -
    '''
    backup pg  tables
    '''
    
    import os
    import time
    BACKUP_DIR = '/data/pg_9u4/sqldir'
    HOST = '192.168.6.111'
    POST = '5432'
    DB = 'fintech_k8s'
    USER = 'fintech'
    PG_DUMP = '/usr/bin/pg_dump'
    TABLE = '/root/shell/bakpg/tables.txt'
    LOG = '/root/shell/bakpg/log.txt'
    LOGTIME = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
    with open(TABLE, 'r') as f:
        for table_t in f:
            table_name = table_t.strip()
            bak_name = "%s/%s.sql" % (BACKUP_DIR, table_name)
            BAK_CMD = '%s -h %s -p %s -d %s -t %s -U %s -f %s ' % (PG_DUMP, HOST, POST, DB, table_name, USER, bak_name)
            result = os.system(BAK_CMD)
            if result == 0:
                with open(LOG, 'a') as f:
                    f.write(LOGTIME + " " + table_name + " table backup succeed! \n")
            else:
                with open(LOG, 'a') as f:
                    f.write(LOGTIME + " " + table_name + " table backup failed! \n")
    
    2. 利用rsync 同步到内网(该步略)
    3.在内网服务器上将备份的数据导入到pg库中,脚本与上方的备份脚本基本相同,主要是导入命令:
    /usr/bin/pg_dump -d fintech_k8s -Ufintech  -f  <  /data/pg_9u4/sqldir/文件名.sql
    
    4.敏感数据处理

    处理方法:将有敏感数据的字段update 为null

    相关文章

      网友评论

          本文标题:从阿里云上备份pg部分表到内网还原

          本文链接:https://www.haomeiwen.com/subject/lnrlvxtx.html