记一次gitlab-ce数据恢复过程
使用的gitlab是用docker启动的,数据目录的owner/group信息被意外全部更改成了root:root导致服务不可用。最终通过复原文件所有者的方式恢复了服务。
步骤如下:
1. 打包备份gitlab所有的数据目录(我们的是/data/gitlab/data;/data/gitlab/config;/data/gitlab/logs),并清空目录下的所有文件;
2. 删除gitlab-ce容器,重新从docker镜像启动一个新的gitlab-ce容器,让它生成新的文件,以备后续修正使用。为了让gitlab生成所有需要的文件,启动后,在新服务中新建了user/group/progect等;
3. 获取gitlab数据目录下所有的文件及其owner/group信息,存到owner.txt中,脚本如下:
#!/bin/bash
function filedic(){
for line in `ls -l $`
do
filename=`echo $line| awk -F " " '{print $9}'`
if test -n "${filename}"
then
groupname=`echo $line | awk -F " " '{print $4}'`
ownername=`echo $line | awk -F " " '{print $3}'`
if [ -d $"/"$filename ]
then
echo $"/"$filename $groupname $ownername
filedic $"/"$filename
else
echo $"/"$filename $groupname $ownername
fi fi
done } IFS=$'\n'
INIT_PATH="/data/gitlab";
filedic $INIT_PATH
4. 停掉新服务,将新产生的gitlab的数据文件打包备份,并清空gitlab的数据文件(即/data/gitlab/data;/data/gitlab/config;/data/gitlab/logs下的所有文件,现在这些目录下的文件都是新容器产生的,我们要把它们删除,然后恢复成旧的数据文件)
5. 将第1步中备份的旧数据文件恢复到原目录中,其中logs文件可以删除
6. 比对owner.txt中的文件所有者信息,修改上一步恢复的数据文件;脚本如下:
#!/bin/bash cat /data/gitlab/script/owner.txt|
while read line
do
echo $line
path=`echo $line| awk -F " " '{print $1}'`
groupname=`echo $line| awk -F " " '{print $2}'`
ownername=`echo $line| awk -F " " '{print $3}'`
if [ -d "$path" -o -f "$path" ]
then
echo $path $groupname $ownername
chown $ownername:$groupname $path
fi
done
其中还有一些postgresql的数据文件目录,需要统一全部修改,一般包括global/data及base目录。具体可以通过docker的启动日志查看,我是通过一遍一遍的启动才修改完全部文件的。。。。。。。。。。。
7. 经过多次启动,查看报错日志,修改数据文件所有者信息,最终服务启动成功。查看仓库---都在;测试提交---正常!!!
8. 提醒:不要自己作死。。。不要动gitlab的数据文件。。。多做备份
记一次gitlab-ce数据恢复过程的更多相关文章
- 记一次数据库调优过程(IIS发过来SQLSERVER 的FETCH API_CURSOR语句是神马?)
记一次数据库调优过程(IIS发过来SQLSERVER 的FETCH API_CURSOR语句是神马?) 前几天帮客户优化一个数据库,那个数据库的大小是6G 这麽小的数据库按道理不会有太大的性能问题的, ...
- gitlab ce 中删除空项目之后,没有删除掉,访问500
在VirtualBox中的gitlab ce,在管理页面的操作如下: 新建一个仓库名为test的仓库,并从gitlab中导入 导入失败,使用root用户登录,在 Admin Area -> Pr ...
- EVA 4400存储硬盘故障数据恢复方案和数据恢复过程
EVA系列存储是一款以虚拟化存储为实现目的的HP中高端存储设备,平时数据会不断的迁移,加上任务通常较为繁重,所以磁盘的负载相对是较重的,也是很容易出现故障的.EVA是依靠大量磁盘的冗余空间,以及故障后 ...
- HP DL380服务器RAID信息丢失数据恢复方法和数据恢复过程分享
[数据恢复故障描述] 客户服务器属于HP品牌DL380系列,存储是由6块73GB SAS硬盘组成的RAID5,操作系统是WINDOWS 2003 SERVER,主要作为企业部门内部的文件服务器来 ...
- EMC Isilon(OneFS)误删文件数据恢复过程<存储数据恢复>
[科普Isilon的存储结构] Isilon内部使用的是分布式文件系统OneFS.在Isilon存储集群里面每个节点均为单一OneFS文件系统,所以Isilon在支持横向扩展的同时并不会影响数据正常使 ...
- IBM x3850 RAID5数据恢复过程
[raid数据恢复故障描述] 需要进行数据恢复的是北京一家公司的IBM X3850服务器,服务器挂载了5块73G SAS硬盘组成raid5磁盘阵列,4号盘为热备盘(Hot-Spare),由于未知 ...
- CentOS 7 Install Gitlab CE
https://hostpresto.com/community/tutorials/how-to-install-and-setup-gitlab-on-centos-7/ http://linux ...
- docker下运行Gitlab CE+Jenkins+Nexus3+docker-registry-frontend
DevOps - Gitlab CE - Jenkins - Nexus Gitlab CE https://hub.docker.com/r/gitlab/gitlab-ce/ https://do ...
- 安装gitlab ce
切换到root用户,安装相关依赖 yum install curl policycoreutils openssh-server openssh-clients service sshd restar ...
- 记一次有惊无险的Linux数据恢复过程
问题阶段 起因: 昨天晚上思路不是很清晰(上了一天班回来有点蒙),还是强忍着疲惫想搞事情,结果悲剧了… … 本来想拿SD卡做一张linux烧录卡,烧录脚本是很久以前写的,有git记录,一直不成功,就回 ...
随机推荐
- python2入门(3)
六.python列表(List) python最常见的序列类型python列表List使用[]表示,元素之间以逗号分隔,元素类型不需要相同 内置操作: list = [1,2,3,'four'] li ...
- TiDB初步概念
阅读官方文档画以下路线图: 储存: rockDB用于单机数据固化:完全理解 raft用于分布式数据同步:完全理解 最终对外展示一整个完全有序的Key-Value序列:完全理解 重点:有序,就可以随机访 ...
- WEEX入坑指南(1)
weex create newtest 然后在某个阶段卡死, 解决方案: 在路径下创建新建文件夹,并命名为项目的名称.
- Axure10种非交互功能简介(引自人人都是产品经理)
一.notes:控件和页面注释 越来越多的PM开始用Axure来写PRD,但行内并不存在约定成俗的文档规范.作者目前为止见过的Axure版PRD中,大部分采用原型+旁边文字标注的方法来表达产品逻辑.其 ...
- 个人项目cpu占用图
- php7编译安装-php-fpm.service
[Unit]Description=php-fpm - Hypertext PreprocessorAfter=network.target remote-fs.target nss-lookup.t ...
- python学习2---交换两个元素
1.交换两个元素 当然也可以定义一个交换函数:
- Hadoop_CDH安装
——本文非个人原创,为大牛同事整理,发布于此以备忘 1 CDH5.8安装(2018年4月19日) 1.1 物理服务器注意事项 (1)把raid都去掉了,每个物理盘都用raid0创建一个虚拟 ...
- 测试那些事儿—软测必备的Linux知识(三)
ubantu 打开命令提示符的方法:点击左上角图标输入terminal 1.系统管理 1.1 shutdown,系统关机命令 -h:关机 -r:重启 shutdown -h now 立即 ...
- jmeter链接数据库
1.下载jar包“mysql-connector-java-8.0.12”包放入lib文件中 2.启动jemeter,添加线程组 3.在线程组下添加 JDBC Connection Configura ...