k8s中postgres基于PITR备份还原
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,参考网站:postgres官网备份PITR文档Postgresql 连续归档和时间点恢复(PITR)1、在k8s创建postgres数据库[用于创建postgres的yaml文件下载()需要修改70-
千家信息网最后更新 2025年12月03日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 38mpostgres在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/C0000003、数据恢复演示
修改/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-0rm -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安全错误
数据库的锁怎样保障安全
全球数据库面试
诛仙手游服务器等级表
腾讯云服务器登录密码
usb接口网络安全监测设备
无法创灰数据库请检查
对日软件开发流程
格力校招软件开发怎么样
家政数据库
软件开发合同纠纷案件
河北嵌入式软件开发哪家好
银行软件开发部产品经理
生活中常见的网络安全的问题
阿里零信任网络安全公司
win7数据库自启动
磊科打印机共享服务器管理地址
软件开发项目找投资人
注册信息怎么写入数据库中
特斯拉数据库
手机修改网络安全设置
江阴dell服务器维修站
市人大网络安全意识培训
莆田市兴旺达网络技术有限公司
海关网络安全调研报告
云南听话网络技术有限公司
数据库在线批量更改
软件开发项目进展情况
网络技术职业生涯人物访谈
朵拉云服务器ip无法修改
网络安全攻防实验系统厂商
公安信息网络安全遵循