前言

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. 「Vue系列」之Vue2实现当前组件重新加载

    遇到问题的场景:需要把当前组件完全还原成初始化状态,不要页面全部刷新例如:重置按钮,只刷新当前加载组件其他办法:使用vue-router重新定向到当前页面,页面不刷新使用window-reload() ...

  2. 2023-04-05:做甜点需要购买配料,目前共有n种基料和m种配料可供选购。 制作甜点需要遵循以下几条规则: 必须选择1种基料;可以添加0种、1种或多种配料,每种类型的配料最多添加2份, 给定长度为

    2023-04-05:做甜点需要购买配料,目前共有n种基料和m种配料可供选购. 制作甜点需要遵循以下几条规则: 必须选择1种基料:可以添加0种.1种或多种配料,每种类型的配料最多添加2份, 给定长度为 ...

  3. 2021-03-05:go中,io密集型的应用,比如有很多文件io,磁盘io,网络io,调大GOMAXPROCS,会不会对性能有帮助?为什么?

    2021-03-05:go中,io密集型的应用,比如有很多文件io,磁盘io,网络io,调大GOMAXPROCS,会不会对性能有帮助?为什么? 福哥答案2021-03-05: 这是面试中被问到的.实力 ...

  4. 2021-11-04:计算右侧小于当前元素的个数。给你`一个整数数组 nums ,按要求返回一个新数组 counts 。数组 counts 有该性质: counts[i] 的值是 nums[i] 右

    2021-11-04:计算右侧小于当前元素的个数.给你`一个整数数组 nums ,按要求返回一个新数组 counts .数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧 ...

  5. docker安装kibana,报错Kibana server is not ready yet,未解决

    1.命令 docker run -d -e ELASTICSEARCH_URL=http://192.168.101.158:9200 -p 5601:5601 --name kibana kiban ...

  6. Jenkins(1)-安装教程

    我用的服务器是阿里云服务器, 服务器系统: CentOS7.9, 不同的操作系统需要下载不同的软件包, 对应的链接如下https://www.jenkins.io/zh/download/ 1) 软件 ...

  7. python学习之-------OS 文件夹和文件操作

    # OS模块 :查看一个文件夹下所有文件,这个文件夹有文件夹,不能用walk# -- coding: UTF-8 --import osimport sys#C:\Users\Administrato ...

  8. 【一步步开发AI运动小程序】十、姿态动作相似度比较

    随着人工智能技术的不断发展,阿里体育等IT大厂,推出的"乐动力"."天天跳绳"AI运动APP,让云上运动会.线上运动会.健身打卡.AI体育指导等概念空前火热.那 ...

  9. 论c++实现sql连接

    寻找关于c++ 对 sql连接的过程非常艰辛. 今天要做一个简单项目,要求在远程sql上实现对数据的实时模拟,每五分钟进行一次随机产生数据并写入. 在此之前我并没有用过代码实现sql连接的经历,在翻阅 ...

  10. CF1810G The Maximum Prefix

    经典套路. 题意 你将随机生成一个长度为 \(k\) 的数组 \(a\),其中 \(a_i\) 有 \(p_i\) 概率为 \(1\),否则为 \(-1\).定义其前缀和数组 \(s_i = \sum ...