k8s中postgres基于PITR备份还原
发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,参考网站:postgres官网备份PITR文档Postgresql 连续归档和时间点恢复(PITR)1、在k8s创建postgres数据库[用于创建postgres的yaml文件下载()需要修改70-
千家信息网最后更新 2025年02月08日k8s中postgres基于PITR备份还原
参考网站:
postgres官网备份PITR文档
Postgresql 连续归档和时间点恢复(PITR)
1、在k8s创建postgres数据库
[用于创建postgres的yaml文件下载()
需要修改70-statefulsets-postgres.yaml文件中的数据持久化方式,即
storageClassName: 'nfs-client' #这里的nfs-client修改为自己k8s的持久化设备,这里使用的是已经搭建好的nfs服务
启动postgres数据库:
wget xxxxxxx.xxxxxx #下载postgres数据库启动需要的yaml文件kubectl create namespace postgres #创建一个名叫postgres的namespacekubens postgres #进入这个namespace,kubens工具的作用是切换namespace需要去gitghub搜索kubectx工具,二进制安装即可使用kubectl apply -f postgres/*.yaml #启动postgres数据库,所有动作在postgres这个namespace完成
在postgres文件的配置文件中要打开的内容:
vim postgresql.confwal_level='hot_standby' #wal_level至少设置为replicaarchive_mode='on'archive_command='test ! -f /backup/archivedir/%f && cp %p /backup/archivedir/%f'
查看postgres数据库是否启动完成:
lopes-MacBook-Pro:postgres-demo_wal2json lope$ kubectl get podsNAME READY STATUS RESTARTS AGEpostgres-0 1/1 Running 0 38m
postgres在k8s启动成功。
2、数据准备
进入postgres操作
kubens postgres #进入postgres所在的namespacekubectl exec -it postgres-0 sh #进入postgres命令
备份基础数据库文件
pg_basebackup -D /backup/backup -h postgres-0 -Fp -R -Pv -l postgrebackup-20191112 #此文件为恢复的基础文件
创建postgres日志备份目录
mkdir /backup/archivedir #以后postgres的日志会自动导入这个目录,也是PITR的关键
创建测试用表
psql #进入postgres数据库\c sso #选择sso数据库\d #查看该数据库下没有表create table test01(id int primary key,name varchar(20));insert into test01 values(1,'a'),(2,'b'),(3,'c');select current_timestamp; # 2019-11-12 06:04:50.71881+00select pg_switch_wal(); # 0/A000158
删除测试用表
delete from test01;select current_timestamp; # 2019-11-12 06:07:36.529161+00select pg_switch_wal(); # 0/C000000
3、数据恢复演示
修改/backup/backup/recovery.done文件(若是recovery.conf,则该为recovery.done)
vim recovery.donerestore_command='cp /backup/archivedir/%f %p'recovery_target_time='2019-11-12 06:04:50.71881+00' # 这里的时间修改为想要恢复的时间点recovery_target_timeline='latest'
基础数据文件恢复
mv /pgdata/postgres-0 /pgdata/postgres-0_bak #破坏原数据文件cp -r /backup/backup /pgdata/postgres-0 #将备份文件拷贝为数据库文件cd postgres-0
rm -rf pg_wal/0 && rm -rf pg_wal/archive_status/ #删除老日志文件,以便PITR通过日志恢复
重启postgres,使之自动进入恢复模式
kubectl delete pods postgres-0kubectl get pods
重启成功后,即可进入数据库检查是否已经恢复到预定的数据。
kubectl exec -it postgres-0 shpsql\c sso\dselect * from test01;
如果出现操作失误,导致不能进入postgres的pod,可以将该pod的pvc删除后,重启pod即可重新操作。
kubectl scale sts postgres --replicas=0 #先要关闭postgres才能删除pvclopes-MacBook-Pro:postgres-demo_wal2json lope$ kubectl get pvcNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGEbackup-postgres-0 Bound pvc-1be89954-98f9-4f9d-a15a-780d5432d38a 30Gi RWO nfs-client 122mpgdata-postgres-0 Bound pvc-6f25fd78-282c-4604-a2f6-e9a8c767e002 30Gi RWO nfs-client 71mlopes-MacBook-Pro:postgres-demo_wal2json lope$ kubectl delete pvc pgdata-postgres-0 #删除pgdata,backup不删除
数据
文件
数据库
备份
日志
基础
时间
成功
工具
目录
测试
为数
二进制
作用
关键
内容
动作
命令
库文件
所在
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
翀堃互联网科技怎么样
烟台安卓软件开发
vps服务器租用价格
网络安全的实质是保护网络的
等保测评需要对服务器也测评吗
is在数据库中是什么意思
女生学云计算还是网络安全
浅析网络安全监管
南通网络安全
服务器主板cpu发热
网络安全法的基本特性
数据库联系构建关系的方法
小说服务器
为什么幻塔服务器进不去
rpc 网络安全风险
h3c服务器登录管理地址
抖音视频古装特效软件开发怎么弄
数据库设计基础考试
软件开发 uml
历史数据库的数据结构包括
yggl数据库查询
密码学和网络安全第七版答案
遵义本地软件开发
ecshop数据库表目录
打开数据库时出错 eplan
朝三暮四翻译软件开发
联想服务器插网线无反应
小米手机当服务器
软件开发工具的发展阶段及特点
管理esxi服务器