1.一次gitlab数据恢复记录
2.PostgreSQL · 源码分析 · 回放分析(一)
3.运维基础(10)linux被删数据恢复方法
一次gitlab数据恢复记录
今天,数据数据源码服务器磁盘出现故障,恢复恢复我们不得不从备份文件中恢复数据。源码源码虽然部分源码在恢复过程中遇到了问题,数据数据但我们整理出了以下恢复步骤和错误情况,恢复恢复供参考。源码源码品牌指数榜源码
首先,数据数据从 tar 备份文件进行直接恢复的恢复恢复步骤包括:将备份文件拷贝至 gitlab 的备份目录,即默认路径 /var/opt/gitlab/backups。源码源码执行还原命令后,数据数据重启服务。恢复恢复在此次尝试中,源码源码大部分库成功恢复,数据数据但有一个特定库 test.bundle 出现错误。恢复恢复
随后,源码源码我们将备份文件中指定库文件直接拷贝,并重启服务。尽管登录后能够浏览分支并下载 Master 分支的源码,但不能下载其他分支或执行克隆操作。这表明,51ctospring源码直接拷贝恢复方式不可行。
接下来,我们采用了 gitlab 仓库迁移方案。执行 gitlab 导入命令,通过 gitlab-rake gitlab:import:repos 将 /git-data/repositories-tmp 目录下的所有源码导入至源码仓库。导入完成后,清理临时目录。验证源码分支,发现已经恢复正常。
综上所述,直接拷贝源码目录无法恢复数据。gitlab 恢复有以下两种方案:一、通过 gitlab-rake gitlab:backup 创建并恢复数据,要求备份文件由 gitlab-rake gitlab:backup:create 生成;二、使用 .gitlab-rake gitlab:import:repos 进行迁移导入,要求备份文件为源码目录的拷贝(同步)。
PostgreSQL · 源码分析 · 回放分析(一)
在数据库运行中,可能遇到非预期问题,如断电、螺纹运动控制源码崩溃。这些情况可能导致数据异常或丢失,影响业务。为了在数据库重启时恢复到崩溃前状态,确保数据一致性和完整性,我们引入了WAL(Write-Ahead Logging)机制。WAL记录数据库事务执行过程,当数据库崩溃时,利用这些记录恢复至崩溃前状态。
WAL通过REDO和UNDO日志实现崩溃恢复。REDO允许对数据进行修改,UNDO则撤销修改。REDO/UNDO日志结合了这两种功能。除了WAL,还有Shadow Pagging、WBL等技术,但WAL是主要方法。
数据库内部,日志管理器记录事务操作,pb界面美化源码缓冲区管理器负责数据存储。当崩溃发生,恢复管理器读取事务状态,回放已提交数据,回滚中断事务,恢复数据库一致性。ARIES算法是日志记录和恢复处理的重要方法。
长时间运行后崩溃,可能需要数小时甚至数天进行恢复。检查点技术在此帮助,将脏数据刷入磁盘,记录检查点位置,确保恢复从相对较新状态开始,同时清理旧日志文件。WAL不仅用于崩溃恢复,还支持复制、主备同步、时间点还原等功能。
在记录日志时,仿美食杰源码WAL只在缓冲区中记录,直到事务提交时等待磁盘写入。LSN(日志序列号)用于管理,只在共享缓冲区中检查。XLog是事务日志,WAL是持久化日志。
崩溃恢复中,checkpointer持续做检查点,加快数据页面更新,提高重启恢复速度。在回放时,数据页面不断向前更新,直至达到特定LSN。
了解WAL格式和包含信息有助于理解日志内容。PG社区正在实现Zheap特性,改进日志格式。WAL文件存储在pg_wal目录下,大小为1GB,与时间线和LSN紧密关联。事务日志与WAL段文件相关联,根据特定LSN可识别文件名和位置。
使用pg_waldump工具可以查看日志内容,理解一次操作记录。日志类型包括Standby、Heap、Transaction等,对应不同资源管理器。PostgreSQL 包含种资源管理器类型,涉及堆元组、索引、序列号操作。
标准记录流程包括:读取数据页面到frame、记录WAL、进行事务提交。插入数据流程生成WAL,复杂修改如索引分裂需要记录多个WAL。
崩溃恢复流程从控制文件中获取检查点位置,严格串行回放至崩溃前状态。redo回放流程与记录代码高度一致。在部分写问题上,FullPageWrite(FPW)策略记录完整数据页面,防止损坏。WAL错误导致部分丢失不影响恢复,数据库会告知失败。磁盘静默错误和内存错误需通过冗余校验解决。
本文总结了数据库崩溃恢复原理,以及PostgreSQL日志记录和崩溃恢复实现。深入理解原理可提高数据库管理效率。下文将详细描述热备恢复和按时间点还原(PITR)方法。
运维基础()linux被删数据恢复方法
源代码托管网站sourceforge.net提供了一个名为extundelete的工具,用于Linux系统中被删除数据的恢复。extundelete具有多种参数和动作,帮助用户在不同场景下恢复丢失的数据。
在使用extundelete之前,首先需要安装必要的软件包。通过命令行操作,依次执行#cd /usr/local/src,#yum install gcc-c++,#yum install e2fsprogs-devel e2fsprogs,#wget zy-res.oss-cn-hangzhou.aliyuncs.com,#tar -jxvpf extundelete-0.2.4.tar.bz2,#cd extundelete-0.2.4,#./configure ; make ; make install。这一步确保了extundelete的安装和配置。
在数据恢复阶段,首先需要确认文件系统挂载情况。以sdb1和sdb2作为示例,分别在mnt1和mnt2目录下存放了文件1.file和2.file。通过#cd /mnt1,执行#rm -rvf 1.file删除文件,然后#cd /#umount /mnt1确保磁盘挂载安全解除,避免数据丢失。执行#extundelete /dev/sdb1 --inode 2命令恢复特定inode编号的文件,确保恢复过程正确无误。
对于目录恢复,使用#extundelete /dev/sdb1 --restore-directory tmp命令,其中tmp是被删除目录的路径。通过恢复目录结构,用户可以迅速恢复丢失的数据组织。
extundelete的强大之处在于,它无需依赖特定的文件格式进行恢复。其工作流程包括:首先通过文件系统的inode信息(根目录inode通常为2)获取文件系统的文件信息,包括已存在和已删除文件的详细信息,如文件名和inode;然后利用inode信息结合日志查询文件所在的block位置,包括直接块、间接块等信息;最后,通过dd命令备份这些信息,完成数据恢复。
为了确保数据恢复的安全性,建议使用umount命令解除磁盘挂载。未解除挂载直接运行恢复命令可能导致数据丢失风险。在恢复操作后,通过#ls /mnt1/1.file命令验证文件恢复成功。
欢迎关注微信公众号厦门微思网络,获取更多专业IT认证培训信息,包括思科、华为、红帽、ORACLE、VMware、CISP、PMP等课程。通过往期回顾,了解运维基础系列内容,包括Nginx、实用工具篇、备份篇、流量监控工具篇、Ansible、CI / CD、Ansible Tower、shell脚本以及Linux性能调优三大系统。