k8s中postgres基于PITR备份还原
发表于:2024-09-30 作者:千家信息网编辑
千家信息网最后更新 2024年09月30日,参考网站:postgres官网备份PITR文档Postgresql 连续归档和时间点恢复(PITR)1、在k8s创建postgres数据库[用于创建postgres的yaml文件下载()需要修改70-
千家信息网最后更新 2024年09月30日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安全错误
数据库的锁怎样保障安全
四川计算机网络技术学校
四级数据库考试一共多少道题
武汉网络安全基地规划图
木瓜互联网科技布沙发垫
新一代网络安全产品
到哪里找服务器防护
变电站 网络安全十不准
oracke数据库版本怎么查询
网络安全建设运营
怎么看电脑服务器的密码
网络安全完整性的防范措施
高速两侧的服务器互通吗
华为云创建云服务器收费吗
徐州售货机软件开发
宁波银行合作软件开发
华三r4900g3服务器功率
从数据库查询时间转换
汽车软件开发工资待遇丹东
sql数据库网页
数据库数据恢复需要什么技术
山东软件开发者一般在哪里找
计算机网络技术对数学
江阴先进网络技术代理价格
青海储存服务器云主机
成立一个软件开发团队
全球服务器的手游
数据库模糊查找字符串
武汉商学院网络安全知识竞赛
阳江专业软件开发代理价格
网络技术应用(选修3)