前言

Postgres提供pg_dumppg_dumpall用于数据库逻辑备份。

  • pg_dumpall:将一个PostgreSQL数据库集群全部转储到一个脚本文件中
  • pg_dump:可以选择一个数据库或部分表进行备份,生成的文件可以是一个SQL脚本文件,也可以是一个归档文件。SQL文件允许自行修改,修改后可以转到其它类型的数据库(postgres有不少特有的东西,实际上迁移可能会有问题)。归档文件只能和pg_restore配合使用。

逻辑备份

# 查看帮助
pg_dump --help # 备份dbtest库到指定文件
pg_dump -h 127.0.0.1 -p 5432 -U postgres dbtest -f /var/lib/postgresql/backup/dbtest.sql # 如果就在本地,也可以直接用dba账户备份
pg_dump dbtest -f /var/lib/postgresql/backup/dbtest.sql # 导出为自定义格式, postgres建议的备份方式
pg_dump -Fc -h 192.168.0.10 -Uzhangsan zhangsan -f zhangsan.dump

逻辑还原

# 使用dump文件还原到zhangsan2数据库,需要先创建
pg_restore -d zhangsan2 zhangsan.dump

备份脚本

postgresql使用docker安装。宿主机调用容器内部的备份脚本,然后从容器中拷贝出来。

  • 容器内的备份脚本:/root/backup_in_docker.sh
#!/bin/bash
# description: 配在容器里的备份脚本,需要放到容器内的/root路径 set -u function premkdir() {
# 提前创建目录
mkdir -p /root/backup
} function cleandir() {
# 清理备份目录
cd /root/backup
rm -f ./*
} function backup() {
# 执行备份
pg_dump -U postgres -Fc wikijs -f /root/backup/wikijs.dump
} function main() {
# 主函数
premkdir
cleandir
backup
} main
  • 宿主机的备份脚本:/home/apps/postgresql/backup_in_host.sh
#!/bin/bash
# description: 调用容器内的备份脚本 -> 将备份文件拷贝到宿主机 -> 归档 -> 删除历史文件 function log_info() {
# 日志函数
logfile="/home/apps/postgresql/backup.log"
logtime=$(date "+%Y-%m-%d %H:%M:%S")
echo "${logtime} | $@"
echo "${logtime} | $@" >> ${logfile}
} function exe_backupscript_docker() {
# 调用容器内的备份脚本
log_info "调用容器内备份脚本"
/usr/local/bin/docker exec -it postgresql bash /root/backup_in_docker.sh
# 等60秒
sleep 60
} function copy_to_host() {
# 将备份文件从docker容器内拷贝到宿主机
/usr/local/bin/docker cp postgresql:/root/backup /home/apps/postgresql
# cd /home/apps/postgresql
} function cleanfile() {
# 删除15天之前的备份文件
find /home/apps/postgresql/archived_backupfiles/* -ctime +15 -type f -exec rm -f {} \; # 删除backup目录
cd /home/apps/postgresql
if [[ -d "./backup" ]]; then
rm -rf ./backup
fi
} function arrange() {
# 整理备份文件
cd /home/apps/postgresql
if [[ ! -d "./backup" ]]; then
log_info "备份目录不存在"
exit 1
fi # 将压缩后的目录转移到归档目录
archive_dir="/home/apps/postgresql/archived_backupfiles"
if [[ ! -d ${archive_dir} ]]; then
mkdir -p /home/apps/postgresql/archived_backupfiles
fi
baktime=$(date "+%Y%m%d-%H%M%S")
bakname="wikijs_${baktime}.tar.gz"
tar zcf ${bakname} ./backup mv ${bakname} ${archive_dir}
} function main() {
exe_backupscript_docker
copy_to_host
arrange
cleanfile
} main
  • crontab配置
0 3 * * * /home/apps/postgresql/backup_in_host.sh

[postgresql]逻辑备份与还原的更多相关文章

  1. PostgreSQL 数据库备份与还原

    PostgreSQL 数据库备份与还原 目录 备份 还原 栗子 备份 PostgreSQL提供的一个工具pg_dump,逻辑导出数据,生成sql文件或其他格式文件,pg_dump是一个客户端工具,可以 ...

  2. mysql逻辑备份与还原工具mysqldump

    (一)mysqldump介绍 mysqldump是MySQL自带的逻辑备份工具,类似于Oracle的expdp/impdp,mysqldump备份十分灵活,可以在以下级别对数据库进行备份: 实例下的所 ...

  3. Oracle数据库零散知识08 -- 逻辑备份和还原(转)

    一.介绍逻辑备份是指使用工具export将数据对象的结构和数据导出到文件的过程.逻辑恢复是指当数据库对象被误操作而损坏后使用工具import利用备份的文件把数据对象导入到数据库的过程.物理备份即可在数 ...

  4. windows下postgresql数据库备份和还原

    1.通过cmd进入数据库的bin目录 cd C:\Program Files\PostgreSQL\9.6\bin 2.执行pg_dump备份命令,localhost 或者IP pg_dump -h ...

  5. postgresql逻辑备份工具pg_dump和pg_resotre学习

    (一)pg_dump备份 pg提供了pg_dump和pg_dumpall命令进行数据库的备份,pg_dumpall是将整个pg集群转储到一个脚本文件中,而pg_dump命令可以选择一个数据库或者部分表 ...

  6. PostgreSQL的备份与还原

    导出: cmd,然后一直cd,到PostgreSQL的bin下面,用其pg_dump程序: pg_dump -h localhost -U ivms864013 ivms864013 > G:\ ...

  7. mysql多线程备份与还原工具mydumper

    (一)mydumper介绍 之前我们已经学过如何使用mysqldump备份恢复数据库:<mysql逻辑备份与还原工具mysqldump>,就目前来说,mysqldump是使用最广泛的MyS ...

  8. POSTGRESQL 完美备份还原

    1.POSTGRESQL 完美备份还原 进入到Postgresql下的bin文件夹,会看到不少的exe文件,这就是PostgreSQL内置的工具了.里面会找到pg_dump.exe.我们实际使用的就是 ...

  9. PostgreSQL备份与还原

    物理备份:整个数据库的数据目录及文件做备份:备份整个数据库的文件系统. 物理恢复:恢复整个数据库的文静系统. 物理备份方法: 开启归档 select pg_start_backup('backup—— ...

  10. (4.12)mysql备份还原——mysql逻辑备份之mysqldump

    关键词:mysql逻辑备份介绍,mysqldump,mysqldump最佳实践 我的相关文章:https://www.cnblogs.com/gered/p/9721696.html 正文 1.mys ...

随机推荐

  1. 2022-04-05:golang中go.mod文件,做框架开发需要解析,请问如何解析?

    2022-04-05:golang中go.mod文件,做框架开发需要解析,请问如何解析? 答案2022-04-05: go.mod解析可参考这个.做框架开发主要是用到require和replace.具 ...

  2. Sql Server维护计划事务日志找不到目标数据库

    1.发现事务日志备份突然停止了 2.查看维护计划中的事务日志设置 3.发现备份任务中,事务日志需要指向的数据库不在 4.进入数据库属性 5.在选项中将恢复模式改为"完整"

  3. vue小坑之Vetur报错:相对路径报错

    话不多说先上图 俗话说:面向百度编程,这话是没错滴,找不到相同问题的博客至少你还可以找谷歌翻译 以上图片问题就是:你导入的组件的相对路径不对.(有可能是你手动敲进去的,然后vetur这边检测不到) 解 ...

  4. jmeter跨线程组引用变量的3种方法

    利用BeanShell后置处理程序将参数设置为全局变量,用于跨线程传参(注:1.把提取变量的线程组放到引用变量的线程组前2.在测试计划中勾选"独立运行每个线程组") 方法1(jme ...

  5. C++实现查询本机信息并且上报

    业务需求 共享文件夹.盘会导致系统安全性下降,故IT部门需要搜集公司中每台电脑的共享情况,并且进行上报 关键字 WMI查询.Get请求.C++网络库mongoose 前置需要 1.简单C++语法知识2 ...

  6. 源端为备库的场景下Duplicate失败问题

    环境: Oracle 11.2.0.3 + OEL 7.9 A -> B -> C 级联ADG环境:db11g -> db11gadg -> db11gcas 之前测试提到,从 ...

  7. 从 pheatmap 无缝迁移至 ComplexHeatmap

    pheatmap 是一个非常受欢迎的绘制热图的 R 包.ComplexHeatmap 包即是受之启发而来.你可以发现Heatmap()函数中很多参数都与pheatmap()相同.在 pheatmap  ...

  8. 一定要看的前端codeReview规范指南

    一.前言 针对目录结构.CSS规范.JavaScript规范.Vue规范 可参照官方给出的 风格指南 这里主要总结业务开发中常遇到的代码问题和实践,帮助大家后续各自做好codeReview,一些你遇到 ...

  9. 自研ORM 完美支持 Exists查询 非常灵活

    示例代码 Case 1 Code var data = db.Query<Product>() .Where(w => db.Query<Product>().Where ...

  10. 解决log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory). log4j:WARN Please initialize the log4j system properly.警告

    1. 问题分析 使用log4j时不起作用,因为找不到配置文件log4j.properties,存在的问题可能是没有配置log4j.properties文件,也可能是配置文件log4j.properti ...