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数据库

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

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

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

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

    SQL Server数据库使用SQL Server代理实现数据库自动备份

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

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

    Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.

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

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

    CentOS7自动备份数据库到git

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

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

    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日
    浏览(11)
  • 【云原生】配置Kubernetes CronJob自动备份Clickhouse数据库(单机版)

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

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

    Neo4j数据库自动启停与定时备份

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

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

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

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

    连接pgsql数据库 sslmode sslrootcert sslkey sslcert 参数的作用

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

    2024年02月12日
    浏览(10)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包