k8s中postgres基于PITR备份还原
发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,参考网站:postgres官网备份PITR文档Postgresql 连续归档和时间点恢复(PITR)1、在k8s创建postgres数据库[用于创建postgres的yaml文件下载()需要修改70-
千家信息网最后更新 2024年11月27日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安全错误
数据库的锁怎样保障安全
网络安全防范技术以及其原理
nvidia显卡连接服务器
dbms是什么数据库系统
医药流通企业软件开发定制
销售服务器怎么备案
dbf中如何追加数据库
网络技术专升本可以选哪些专业
湖北软件开发服务以客为尊
有小米手机的云服务器吗
秒账如何导入数据库
对网络安全未来的看法
网络安全八个字主题
数据库表设置自动增长
顺义区品牌软件开发要求
游戏设计和软件开发
新乡软件开发优缺点
linux 服务器连接数
合肥网络安全大赛试题及答案
pptv多屏互动服务器
广州软件开发设计培训机构
计算机软件开发部分代码
互联网金融科技公司是什么
河源数字软件开发批发价格
焦点网络安全科技有限公司
大学如何自学计算机网络安全技术
福建电信网络服务器虚拟主机
顶级网络安全技术人员求职
软件开发 找业务
2022燃烧的远征pvp服务器
u8 10.1初始化数据库