PostgreSQL基础(十二):PostgreSQL备份和恢复介绍

PostgreSQL备份和恢复介绍

防止数据丢失的第一道防线就是备份。数据丢失有的是硬件损坏,还有人为的误删之类的,也有BUG的原因导致误删数据。

正常备份和恢复,如果公司有DBA,一般咱们不用参与,但是学的Java,啥都得会点。

在PostgreSQL中,有三种备份方式:

一、SQL备份(逻辑备份)

其实就是利用数据库自带的类似dump的命令,或者是你用图形化界面执行导入导出时,底层就是基于这个dump命令实现的。备份出来一份sql文件,谁需要就复制给谁。

二、文件系统备份(物理备份)

其实就是找到当前数据库,数据文件在磁盘存储的位置,将数据文件直接复制一份或多份,存储在不同的物理机上,即便物理机爆炸一个,还有其他物理机。

如果说要做数据的迁移,这种方式还不错的。

三、归档备份:(也属于物理备份)

先了解几个概念,在PostgreSQL有多个子进程来辅助一些操作

BgWriter进程:

如果快了,IO操作频繁,效率慢。

如果慢了,有查询操作需要内存中的数据时,需要BgWriter现把数据从内存写到磁盘中,再提供给查询操作作为返回结果。会导致查询操作效率变低。

事务提交了,数据没落到磁盘,这时,服务器宕机了怎么办?

WalWriter进程:

WAL能单独做备份么?单独不行!

但是WAL日志有个问题,这个日志会循环使用,WAL日志有大小的线程,只能保存指定时间的日志信息,如果超过了,会覆盖之前的日志。

PgArch进程:WAL日志会循环使用,数据会丢失。没关系,还有一个归档的进程,会在切换wal日志前,将WAL日志备份出来。PostgreSQL也提供了一个全量备份的操作。可以根据WAL日志,选择一个事件点,进行恢复。

查看WAL日志:

docx image

这些就是归档日志

查询当前库用的是哪个wal日志

归档默认不是开启的,需要手动开启归档操作,才能保证wal日志的完整性

修改postgresql.conf文件

docx image

docx image

注意:修改完上述配置文件后,记得重启postgreSQL进程,才会生效

归档操作执行时,需要保证/archive存在,并且postgres用户有权限进行w操作

构建/archive路径

在当前库中做大量写操作,接入到wal日志,重置切换wal日志,再查看归档情况。

发现将当前的正在使用的wal日志和最新的上一个wal日志归档过来了,但是之前的没归档,不要慌,后期备份时,会执行命令,这个命令会直接要求wal日志立即归档,然后会全量备份。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容