开发者社区> 问答> 正文

请问大家 你们的pg数据库如何实现异地备份的?采用哪种方式备份的

已解决

请问大家 你们的pg数据库如何实现异地备份的?采用哪种方式备份的

本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。 https://developer.aliyun.com/article/706511 点击链接欢迎加入感兴趣的技术领域群。

展开
收起
茶什i 2019-09-16 11:38:41 1157 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    postgres本身支持数据库备份操作,基于安装路径下bin目录下的两个脚本文件pg_dump pg_dumpall 

    一个支持单库备份,一个支持整个数据库备份

    这里实现的是不同机子间的备份,例如我在101.62上面是线上数据库,我需要定时备份到101.68这台机子上。

    以下是命令:

    -- 备份 pg_dump 数据库名 -h 要备份的数据库ip -p 你的端口 -U postgres > 备份结果文件名.dmp pg_dumpall -h 要备份的数据库ip -p 你的端口 -U postgres > 备份结果文件名.dmp

    example:

    pg_dump database -h 192.168.101.62 -p 5432 -U postgres > fileName pg_dumpall -h 192.168.101.62 -p 5432 -U postgres > fileName

    -- 还原

    psql -h 要还原的数据库ip -p 端口 -U postgres -d 指定数据库名 < 备份文件地址 psql -h 要还原的数据库ip  -p 端口 -U postgres < 备份文件地址

    example:

    psql -h 192.168.101.68 -p 5432 -U postgres -d new_db < fileName psql -h 192.168.101.68 -p 5432 -U postgres < fileName

    注意:用到的脚本都在postgres的安装bin下,所以该方案要求接受备份文件的机子也需要安装postgres

    这样显然,我这里需要的是定时备份,那么只需要利用linux的crontab 定时器就可以了

    crontab相关命令:

        crontab –e 添加定时任务     crontab -l 表示列出所有的定时任务     crontab -r 表示删除用户的定时任务

      0 23 * * *  /temp/pgsql_backup.sh >> /temp/pgdata_export.log  2>&1   //例如每晚23点执行

    这个命令指的是每晚23点执行脚本进行备份,日志写入/temp/pgdata_export.log中

    crontab如果没有安装,centos执行yum安装即可:

          yum -y install vixie-cron       yum -y install crontabs

    pgsql_backup.sh脚本为:

    #!/bin/bash export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/apache2/bin:/root/bin:/usr/local/pgsql/bin export LANG=zh_CN.UTF-8 export export PGPASSWORD=postgres   dest_folder=/temp/ dest_file=pgdata_$(date +%Y%m%d).dmp tar_file=pg_$(date +%Y%m%d).tar.gz   echo [$(date +'%F %H:%M:%S')]  准备导出postgresql数据库 导出文件地址为$dest_folder$dest_file echo [$(date +'%F %H:%M:%S')]  ..................正在导出............................

    pg_dumpall -h 你需要备份的ip -p 你需要备份的端口 -U postgres > $dest_folder$dest_file   echo [$(date +'%F %H:%M:%S')]  导出成功,准备压缩已导出文件 压缩文件地址为$dest_folder$tar_file echo [$(date +'%F %H:%M:%S')]  ..................正在压缩............................   cd $dest_folder tar -czf $tar_file $dest_file   echo [$(date +'%F %H:%M:%S')]  压缩完毕,准备删除数据库导出文件 rm -f  $dest_folder$dest_file echo [$(date +'%F %H:%M:%S')] 数据库导出文件已删除 ———————————————— 版权声明:本文为CSDN博主「fwfg12113」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/fwfg12113/article/details/84643765

    2019-09-16 12:01:37
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载
云时代的数据库技术趋势 立即下载
超大型金融机构国产数据库全面迁移成功实践 立即下载