pgsql数据库自动备份

这篇具有很好参考价值的文章主要介绍了pgsql数据库自动备份。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文的写作原因:对实际客户需求的一次小总结,顺带做一次笔记

数据库备份方案起因

任何数据库都需要备份,备份数据是维护数据库必不可少的操作。

数据库备份常见的应用场景:

  1. 硬件故障造成数据库部分数据或全部数据丢失
  2. 人为操作失误造成某些数据被误操作
  3. 软件 BUG 造成部分数据或全部数据丢失
  4. ……

对于上述场景还有很多,公司里面让我做数据库备份就以上三个原因(只针对我们公司的业务来说)

数据库备份的实际操作

测试环境:
    centos 7
    docker 20.10.12
    postgis/postgis:13-master

老板要求数据库备份的这个方案最好能跟着数据库启动自动配置,不需要人工配置,且能够清除历史备份(这个算基本需求)

注意:下面所提到的脚本文件都放在同一个目录下

一、选择数据库备份时间

在业务闲时,设置定时任务crontab定时任务(每日凌晨),全量备份,这里查看过pgsql的官方文档最后决定使用pg_basebackup的命令来实现,其他方式看了一下不太适合我这个菜鸡。

二、编写数据库备份脚本

数据库备份及删除历史备份,脚本如下(backup.sh)

#!/bin/bash

#利用docker命令向容器打入命令
docker exec --user postgres postgis pg_basebackup  -F t -z -R -D /data/backup

#做个异常识别,不然长时间备份不成功会把以前的备份删掉
if [ $? -ne 0 ]; then
    echo "failed to backup"
    exit 1
else
    echo "succeed to backup"
fi

#移动备份文件(从docker映射路径移到其他地方)
mv /data/db/postgis/data/backup /data/postgresql/backup/data/$(date +%Y%m%d%H%M%S)

#sevendays_time=$(date -d -7days '+%Y%m%d')
#删除超过七天的文件
cd /data/postgresql/backup/data
rm -rf $(date -d -7days '+%Y%m%d')*

三、将定时任务配置到服务器的定时任务上

将backup.sh的操作任务配置到crontab上,脚本如下(confBackup.sh)

#!/bin/bash

myShell=backup.sh
filePath=$(cd "$(dirname "$0")";pwd)
echo $filePath
echo $myShell

crontab -l > cron
number=`grep -n "$myShell" cron | cut -d ":" -f 1`
aa=$number
echo $aa

if [ -z $aa ];
then
echo "该任务不存在,将添加"
echo '* 0 * * * '$filePath'/'$myShell'' >> cron
crontab cron
rm -f cron
else
echo "该任务已经存在,将会先删除再添加"
sed -i '/'$myShell'/d' cron
echo '* 0 * * * '$filePath'/'$myShell'' >> cron
crontab cron
rm -f cron
fi

四、docker启动数据库脚本

其余docker的yml配置文件省略,编写pgsql的启动命令,脚本如下(start.sh)

#!/bin/bash

docker-compose -f postgis.yml up -d

./confBackup.sh

结束

这个自动备份脚本花了我半天时间研究,其中一个最坑的就是我在脚本上加了-it,这个-it命令是为了开启容器终端,你必须指定参数,但是我是在脚本执行,所以导致我的脚本只能手动运行(backup.sh),不能在定时任务执行,坑的命令:docker exec -it --user postgres postgis pg_basebackup -F t -z -R -D /data/backup文章来源地址https://www.toymoban.com/news/detail-479130.html

参考资料:
定时任务:https://www.runoob.com/w3cnote/linux-crontab-tasks.html
数据库备份:http://www.postgres.cn/docs/9.4/app-pgbasebackup.html
封面图片来自:深圳卫健委

到了这里,关于pgsql数据库自动备份的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows下自动备份MySQL数据库

    原文链接:Windows下自动备份MySQL数据库 | Elvin 为什么做数据库自动备份? 公司之前一个很久没用的项目服务器突然挂了,原因居然是数据库不见了,莫名其妙;看了日志、什么都查了,数据库消失的干干净净🤔️❓这可真是要命,还好我之前有导出过sql文件做本地数据库,

    2024年02月03日
    浏览(34)
  • 精准备份:如何自动化单个MySQL数据库的备份过程

    自动化备份对于维护数据库的完整性和安全性至关重要。本指南将向您展示如何使用Shell脚本来自动化MySQL数据库的备份过程。 首先,这是我们将使用的备份脚本: 1. 保存脚本 将上面的脚本保存到服务器上,比如命名为 db_backup.sh : 粘贴脚本内容到编辑器中,然后保存并退出

    2024年04月11日
    浏览(33)
  • SQL Server数据库使用SQL Server代理实现数据库自动备份

    在现实中,为了保证数据的安全和完整,防止人为错误和硬件故障等造成的数据丢失和损坏,就需要用到数据库的备份,不同的数据库方法有所差别,我这边主讲SQL Server数据库的备份和使用SQL Server代理作业实现数据库的定时备份。 目录 一、开启SQL Server代理 1、找到SQL Serv

    2024年02月09日
    浏览(57)
  • Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.

    根据自己需要,我这个是Debian的5.7版本的镜像。 这个地方一定要注意: 有些版本的docker镜像里面移除了MySQL自带的工具。包括Mysqlbinlog,Mysqlcheck等。所以即使你开启了binlog,也是没有办法还原数据的,这里要注意一下镜像的选择。 mkdir三个文件夹,方便持久化。 /home/mysql/c

    2024年02月05日
    浏览(56)
  • CentOS7自动备份数据库到git

    虽然数据库没什么数据,但是有就是珍贵的啦,为了服务器什么的无了,所以还是要自动备份一下比较好。 Open备忘第一页 步骤 在Gitee(github)上创建一个 私有 仓库 Gitee(github)配置好服务器的ssh 在服务器一个好位置克隆仓库下来刚刚创建的私有仓库 在服务器写脚本 : 为

    2024年01月25日
    浏览(36)
  • Windows下手动、自动备份Mysql数据库(mysqldump)

    (本文实例环境及版本 MySql8.0.13) 1.1 命令行备份 cmd 先进入mysql所在的bin目录下,如:cd D:softwaremysqlmysql-8.0.13-winx64bin mysqldump -u root -p 数据库 [表名1 表名2…] 文件备份路径 如把testdb数据库备份到 D:ydTest.sql 输入密码后回车 mysqldump -u root -p testdb d:ydTest.sql 如果你希望备份是

    2023年04月19日
    浏览(32)
  • 【云原生】配置Kubernetes CronJob自动备份Clickhouse数据库(单机版)

    【云原生】配置Kubernetes CronJob自动备份MySQL数据库 Clickhouse 测试、开发环境:每天0点40分执行全库备份操作,备份文件通过StorageClass SFS存储类存放云产品 sfs卷中 在db命名空间创建pvc类型的资源: 在db命名空间创建cronjob类型的资源:

    2024年02月07日
    浏览(37)
  • Neo4j数据库自动启停与定时备份

    本文介绍neo4j数据库定时自动备份的方案和一些问题的解决方式。自动备份基本流程为“关闭-备份-启动”;首先介绍三个准备工作:安装service实现start和stop的操作、备份的基本逻辑、.bat文件操作;然后提供一个完整的备份脚本内容示例,并结合win10任务计划程序实现自动备

    2024年01月22日
    浏览(78)
  • pgsql数据库加密解密

    1.安装外部模块 pgcrypto 2.查看pgcrypto版本 3.明文加密 aes:加密算法,支持aes、aes-cbc等 hex:编码格式,支持hex、base64等 account:秘钥,任意字符串 4.密文解密

    2024年02月12日
    浏览(34)
  • 连接pgsql数据库 sslmode sslrootcert sslkey sslcert 参数的作用

    sslmode 参数用于指定数据库连接时使用的 SSL 加密模式。SSL(Secure Sockets Layer)是一种加密协议,用于保护数据在客户端和服务器之间的传输过程,以增加数据传输的安全性。 sslmode 参数可以设置不同的值,以控制数据库连接时 SSL 的使用方式。 以下是一些常见的 sslmode 值及其

    2024年02月12日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包