[postgresql]逻辑备份与还原
前言
Postgres提供pg_dump和pg_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]逻辑备份与还原的更多相关文章
- PostgreSQL 数据库备份与还原
PostgreSQL 数据库备份与还原 目录 备份 还原 栗子 备份 PostgreSQL提供的一个工具pg_dump,逻辑导出数据,生成sql文件或其他格式文件,pg_dump是一个客户端工具,可以 ...
- mysql逻辑备份与还原工具mysqldump
(一)mysqldump介绍 mysqldump是MySQL自带的逻辑备份工具,类似于Oracle的expdp/impdp,mysqldump备份十分灵活,可以在以下级别对数据库进行备份: 实例下的所 ...
- Oracle数据库零散知识08 -- 逻辑备份和还原(转)
一.介绍逻辑备份是指使用工具export将数据对象的结构和数据导出到文件的过程.逻辑恢复是指当数据库对象被误操作而损坏后使用工具import利用备份的文件把数据对象导入到数据库的过程.物理备份即可在数 ...
- windows下postgresql数据库备份和还原
1.通过cmd进入数据库的bin目录 cd C:\Program Files\PostgreSQL\9.6\bin 2.执行pg_dump备份命令,localhost 或者IP pg_dump -h ...
- postgresql逻辑备份工具pg_dump和pg_resotre学习
(一)pg_dump备份 pg提供了pg_dump和pg_dumpall命令进行数据库的备份,pg_dumpall是将整个pg集群转储到一个脚本文件中,而pg_dump命令可以选择一个数据库或者部分表 ...
- PostgreSQL的备份与还原
导出: cmd,然后一直cd,到PostgreSQL的bin下面,用其pg_dump程序: pg_dump -h localhost -U ivms864013 ivms864013 > G:\ ...
- mysql多线程备份与还原工具mydumper
(一)mydumper介绍 之前我们已经学过如何使用mysqldump备份恢复数据库:<mysql逻辑备份与还原工具mysqldump>,就目前来说,mysqldump是使用最广泛的MyS ...
- POSTGRESQL 完美备份还原
1.POSTGRESQL 完美备份还原 进入到Postgresql下的bin文件夹,会看到不少的exe文件,这就是PostgreSQL内置的工具了.里面会找到pg_dump.exe.我们实际使用的就是 ...
- PostgreSQL备份与还原
物理备份:整个数据库的数据目录及文件做备份:备份整个数据库的文件系统. 物理恢复:恢复整个数据库的文静系统. 物理备份方法: 开启归档 select pg_start_backup('backup—— ...
- (4.12)mysql备份还原——mysql逻辑备份之mysqldump
关键词:mysql逻辑备份介绍,mysqldump,mysqldump最佳实践 我的相关文章:https://www.cnblogs.com/gered/p/9721696.html 正文 1.mys ...
随机推荐
- 【C++】初始化列表构造函数VS普通构造函数
普通构造函数VS初始化列表构造函数 初始化列表构造函数最优先匹配问题 对于一个类而言,只要其中包含有初始化列表的构造函数,编译器在编译使用{}语法的构造时会最倾向于调用初始化列表构造函数,哪怕做类型转 ...
- rt下降40%?程序并行优化六步法
1 背景 性能优化是我们日常工作中很重要的一部分,主要有以下原因: 降低服务器和带宽等硬件成本:用更少的资源处理更多的请求 提高现实世界的运行效率:人机处理效率存在数量级的偏差,同样机器世界的效率提升 ...
- 对promise的简单理解
随着ES6的推行它的许多新特性受到了广大开发者的好评,比如promise,为什么使用这个promise呢,他具体能帮我们做些啥? 其实从字面意思上来理解promise就是承诺,比如:你命令你的手下本月 ...
- 区间数k大数查询
题目 问题描述 给定一个序列,每次询问序列中第 l 个数到第 r 个数中第 K 大的数是哪个. 输入格式 第一行包含一个数 n,表示序列长度. 第二行包含 n 个正整数,表示给定的序列. 第三个包含一 ...
- 柏林噪声&幻想大陆地图生成
序言 之前介绍过perlin噪声的实现,现在应用实践一下--程序化生成幻想大陆 这里使用的是perlin噪声倍频技术(也称分形噪声),详情传送门:柏林噪声算法 代码示例使用的是shadertoy的语法 ...
- Kruskal 重构树
Kruskal 重构树 是一棵二叉树,一张 \(N\) 个点的无向连通图的 Kruskal 重构树有 \(2N-1\) 个节点. 叶子节点为原图中节点,非叶子节点有点权,表示想在原图上从一边的子树内的 ...
- MQ系列12:如何保证消息顺序性
MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 MQ系列4:NameServer 原理解析 MQ系列5:RocketMQ消息的发送模式 MQ系 ...
- java利用jni调用dll方法
准备工作: 需要用到的插件jni4net:这个需要去官网下载:https://sourceforge.net/projects/jni4net/files/ (1) jni4net 是一个开源 ...
- 【Leetcode】 #9 回文数
判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数.示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 - ...
- 韩顺平Spring体系化笔记(内含ioc,aop,动态代理等底层原理)
Spring Spring 核心学习内容 IOC.AOP. JdbcTemplate.声明式事务 1.Spring 几个重要概念 Spring 可以整合其他的框架(Spring 是管理框架的框架) S ...