Postgresql备份数据以及还原数据

文章目录

  • 前言
  • 一、开始实战测试操作
    • 总结:只做简单易懂的文章,就是复杂也要翻译成简单清晰的文章


前言

提示:这一章内容主要讲解Postgresql全局集簇备份以及数据库备份
全局集簇备份:可实现仅备份角色和全局表空间定义,导出数据只支持Sql格式
数据库备份:可实现备份数据库表空间,导出数据可以自定义任何格式


建议每天对角色和表空间定义等全局对象进行备份,但不建议每天使用pg_dumpall来备份全库数据,因为pg_dumpall仅支持导出为SQL文本格式,而使用这种庞大的SQL文本备份来进行全库级别的数据库恢复时及其耗时的,所以一般只建议使用pg_dumpall来备份全局对象而非全库数据,pg_dump用来备份全库数据。

一、开始实战测试操作

1.一般生产环境下是需要写个脚本然后定时运行的
下面这个contos脚本特性:
可以覆盖上一个月的文件信息,因为文件名会一致会起到一个覆盖的作用,不会造成备份数据过大。
主要功能,就是那wal连续归档做了个一天的临时记录,就是可以还原的这一天的信息,到了这一天晚上两点把wal备份路径里的wal文件删除,以免目录过于庞大,就是这一天过了晚上2点就不能通过wal日志还原了就只能通过数据库备份还原,没过晚上两点是可以通过wal日志还原的,这里其实就是做了个临时连续归档以及备份数据库的操作。
我这个脚本是通过postgresql自带的定时器执行的需要了解详情可以去看配置postgresql定时器那一章帖子


#!/bin/bash	
role_file_time='腾智当月'$(date '+%d')'日集簇角色数据.sql'
database_file_time='腾智当月'$(date '+%d')'日表空间数据.dump'
echo '当次标识:'$role_file_time
echo '当此标识:'$database_file_time
export PGPASSWORD=wx9300
echo '清除$(date'+%Y-%m-%d')的Wal日志记录...'
find /var/lib/pgsql/12/backups/walback/ -type f -delete
echo $(date'+%Y-%m-%d')'连续归档开始基础备份...'
rm -rf /var/lib/pgsql/12/backups/basicsback/base.tar.gz
/usr/pgsql-12/bin/pg_basebackup -F t -Pv -X f -z -Z 9 -p 9300 -U postgres -D /var/lib/pgsql/12/backups/basicsback
echo '开始备份全局集簇中角色...'
#注意后面 
#--roles-only :只备份所有全局角色
#--globals-only :备份所有全局表空间跟全局角色 
#表空间:postgresql里面有默认的表空间也可以自定义表空间,所有数据库什么的都存在表空间中
#不加备份所有 
/usr/pgsql-12/bin/pg_dumpall -U postgres -p 9300 -v -f /var/lib/pgsql/12/backups/global/roles/$role_file_time --roles-only 
echo '开始备份表空间数据...'
/usr/pgsql-12/bin/pg_dump -U postgres -p 9300 -F c -b -v -f /var/lib/pgsql/12/backups/databasesback/$database_file_time -d postgres 
#database还原:/usr/pgsql-12/bin/pg_restore -U postgres -p 9300 -d postgres -v /var/lib/pgsql/12/backups/databasesback/还原版本
#集簇Role还原:/usr/pgsql-12/bin/psql -U postgres -d postgres -p 9300 -f /var/lib/pgsql/12/backups/global/roles/还原版本

2.那下面也就进入我们这一章的主题全局备份跟局部备份,首先进入全局备份
新建库以及表在放几条数据
喜羊羊库
public模式
Test表

Postgresql备份数据以及还原数据_第1张图片

开始备份数据,输入用户名密码
/usr/pgsql-12/bin/pg_dumpall -h 10.2.200.225 -U postgres -p 5432  -v -f /var/lib/pgsql/12/backups/全局集簇备份.sql -W 

Postgresql备份数据以及还原数据_第2张图片
Postgresql备份数据以及还原数据_第3张图片

再去查看文件

Postgresql备份数据以及还原数据_第4张图片

删除喜羊羊库:以删除

Postgresql备份数据以及还原数据_第5张图片

执行全局还原: /usr/pgsql-12/bin/psql -U postgres -d postgres -h 10.2.200.225 -p 5432 -f /var/lib/pgsql/12/backups/全局集簇备份.sql -W

Postgresql备份数据以及还原数据_第6张图片
Postgresql备份数据以及还原数据_第7张图片

查看数据:全局备份成功

Postgresql备份数据以及还原数据_第8张图片


3.局域备份,针对于单个数据库
数据库备份命令:/usr/pgsql-12/bin/pg_dump -U postgres -h 10.2.200.225 -p 5432  -F c -b -v -f /var/lib/pgsql/12/backups/数据库备份.dump -d 喜羊羊 -W

Postgresql备份数据以及还原数据_第9张图片

Postgresql备份数据以及还原数据_第10张图片
Postgresql备份数据以及还原数据_第11张图片

检查文件

Postgresql备份数据以及还原数据_第12张图片

删除数据库里的数据:这个就不能删库了这个不是全局备份

Postgresql备份数据以及还原数据_第13张图片

数据库备份还原:/usr/pgsql-12/bin/pg_restore -U postgres -h 10.2.200.225 -p 5432 -d 喜羊羊 -v /var/lib/pgsql/12/backups/数据库备份.dump -W

Postgresql备份数据以及还原数据_第14张图片
Postgresql备份数据以及还原数据_第15张图片

检查数据:数据成功还原!

Postgresql备份数据以及还原数据_第16张图片

总结:只做简单易懂的文章,就是复杂也要翻译成简单清晰的文章

你可能感兴趣的:(postgres数据库研究,postgresql,数据库,database)