1.一次gitlab数据恢复记录
2.MyFlash——美团点评的数据数据开源MySQL闪回工具
3.运维基础(10)linux被删数据恢复方法
一次gitlab数据恢复记录
今天,源码服务器磁盘出现故障,恢复恢复我们不得不从备份文件中恢复数据。软件软件虽然部分源码在恢复过程中遇到了问题,源码源码但我们整理出了以下恢复步骤和错误情况,下载供参考。数据数据ajax原版源码
首先,恢复恢复从 tar 备份文件进行直接恢复的软件软件步骤包括:将备份文件拷贝至 gitlab 的备份目录,即默认路径 /var/opt/gitlab/backups。源码源码执行还原命令后,下载重启服务。数据数据在此次尝试中,恢复恢复大部分库成功恢复,软件软件但有一个特定库 test.bundle 出现错误。源码源码
随后,下载我们将备份文件中指定库文件直接拷贝,并重启服务。尽管登录后能够浏览分支并下载 Master 分支的忍者疾风传源码源码,但不能下载其他分支或执行克隆操作。这表明,直接拷贝恢复方式不可行。
接下来,我们采用了 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 进行迁移导入,福建到宁夏源码要求备份文件为源码目录的拷贝(同步)。
MyFlash——美团点评的开源MySQL闪回工具
闪回工具的现状及理想特性
当前市场上存在多种数据恢复工具,它们主要分为三种实现方式:
1. 使用mysqlbinlog工具配合sed、awk,将binlog解析成类SQL文本,再用sed、awk转换为真正的SQL。
2. 对数据库源码打补丁,增加Flashback选项,扩展mysqlbinlog功能。
3. 利用业界提供的解析binlog的库生成SQL,代表是binlog2sql。
这些工具在过滤选项上有限,如无法基于SQL类型过滤,需回滚delete语句时,还需结合awk、sed等工具筛选。苍山阅读app源码理想的闪回工具需具备以下特性:
- **无需binlog文本转换**,直接操作binlog。
- **提供丰富的过滤方式**,基于库、表、SQL类型、位置、时间等。
- **兼容多个MySQL版本**。
- **数据库重构不敏感**,方便升级。
- **自主控制binlog解析**,灵活操作。
闪回工具的binlog格式基础
binlog文件结构由`format description event`开头,`rotate event`结尾,中间由多个事件组成。每个事件由事件头部和数据组成。vscode查看包源码
常见事件包括:
- `format description event`:描述binlog格式。
- `table map event`:定义表结构。
- `update row event`:表示数据更新。
binlog事件回滚
回滚逻辑基于事件类型:对于insert和delete操作,只需交换type_code即可完成回滚;对于update操作,难点在于计算AI、BI的长度,需要处理字段长度编码和decimal类型。
解析binlog关键点
- **长度编码整数**:通过一个或多个字节组合表示长度,有效节省存储空间。
- **decimal类型**:整数和小数每9个数字占4个字节,不足9个时,由剩余字节填充。
闪回工具架构解析
MyFlash工具通过以下步骤实现闪回功能:
1. **解析binlog**:将binlog文件解析为多个事件,用户可指定开始与结束位置,判断时间条件。
2. **重组事件**:将事件组成最小执行单元,包含表元数据和数据事件,用于保证执行逻辑正确。
3. **事件反转与重组**:反转最小执行单元中的数据事件,逆序最小执行单元队列。
4. **生成新binlog**:将逆序的最小执行单元输出为新binlog文件,注意修改next_position字段。
性能对比与测试
在特定场景下,测试MyFlash工具的性能,结果显示其速度最快,说明MyFlash在闪回操作中表现出色。
以上内容展示了闪回工具的现状、理想特性、binlog格式解析、事件回滚逻辑、解析关键点、工具架构解析、以及性能测试结果。
运维基础()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性能调优三大系统。