文章目录
- 前言
- 一、开始实战测试操作
- 总结:只做简单易懂的文章,就是复杂也要翻译成简单清晰的文章
前言
提示:这一章内容主要讲解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表
开始备份数据,输入用户名密码
/usr/pgsql-12/bin/pg_dumpall -h 10.2.200.225 -U postgres -p 5432 -v -f /var/lib/pgsql/12/backups/全局集簇备份.sql -W
再去查看文件
删除喜羊羊库:以删除
执行全局还原: /usr/pgsql-12/bin/psql -U postgres -d postgres -h 10.2.200.225 -p 5432 -f /var/lib/pgsql/12/backups/全局集簇备份.sql -W
查看数据:全局备份成功
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
检查文件
删除数据库里的数据:这个就不能删库了这个不是全局备份
数据库备份还原:/usr/pgsql-12/bin/pg_restore -U postgres -h 10.2.200.225 -p 5432 -d 喜羊羊 -v /var/lib/pgsql/12/backups/数据库备份.dump -W
检查数据:数据成功还原!
总结:只做简单易懂的文章,就是复杂也要翻译成简单清晰的文章