gitlab安装以及数据迁移

一、gitlab安装

直接从官网上下载

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm,没有安装wget 需要先安装wget

rpm -ivh gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm  
#使用rpma安装安装包时,会出现
#error: Failed dependencies:
#意思是 失败的依赖 
# 解决方法:
#在安装包后面加两个参数,如
#rpm -ivh 包名 --nodeps --force

配置gitlib的IP和端口

# IP和端口修改配置文件:

vi /etc/gitlab/gitlab.rb

重置并启动GitLab

配置:gitlab-ctl reconfigure

启动:GitLab:gitlab-ctl restart

二、修改gitlab存储位置

  • # 先停止 gitlab

gitlab-ctl stop

  • gitlab的默认存储目录是   /var/opt/gitlab/git-data/
  • 创建新存储目录  mkdir -p /data/gitlab-data
  • 修改配置文件( git_data_dirs 对应的配置)

  • 将旧的gitlab数据迁移到新目录:

rsync -av /var/opt/gitlab/git-data/repositories /data/gitlab-data/

  • 重新加载配置:gitlab-ctl repositories
  • 启动gitlab:gitlab-ctl start

三、gitlab服务器/数据迁移

本章介绍gitlab服务器迁移,需要把数据一起迁移到新服务器

新服务器注意需要搭建的版本和旧服务同一版本,版本不通可能会有兼容性问题

gitlab版本号查看:

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

 1、新服务安装gitlab

需要安装的版本和旧服务器保持一致

安装依赖

sudo yum install curl policycoreutils openssh-server openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld

安装gitlab

curl -LJO https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-***.rpm
rpm -i gitlab-ce-***.rpm
gitlab-ce-***.rpm 是本次安装的版本号,根据实际情况修改
 
gitlab下载官方地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/  
 
 

2、旧服务器数据备份

# 本次操作在旧服务器

gitlab-rake gitlab:backup:create
# 默认将会在 /var/opt/gitlab/backups/ 目录下生成备份文件
# 如果没有生成,"gitlab-ctl show-config | grep backup_path"查看生成备份文件路径
 
# 备份原服务器上的配置文件:
 /etc/gitlab/gitlab.rb
 /etc/gitlab/gitlab-secrets.json
 

# 需要把生成的备份数据和上面两份配置文件拷贝到新服务器

3、新服务器恢复数据、替换配置文件

# 本次操作在新服务器:

# 先恢复两份配置文件:

mv ./gitlab.rb /etc/gitlab/
mv ./gitlab-secrets.json /etc/gitlab/

# 配置文件生效:
sudo gitlab-ctl reconfigure

# 恢复数据文件
# 恢复数据到备份目录,默认是/var/opt/gitlab/backups

# 如果有修改过默认路径,可以查看  "gitlab-ctl show-config | grep backup_path"
mv ./1637517122_2024_12_21_10.5.4_gitlab_backup.tar /var/opt/gitlab/backups/


# 如果文件没有其他用户读权限:
gitlab-rake gitlab:backup:restore BACKUP=1637417712_2021_11_20_10.5.4
gitlab-ctl reconfigure

 4、注意,恢复备份文件可能会报错:

Restoring PostgreSQL database gitlabhq_production ... ERROR:  must be owner of extension pg_trgm
ERROR:  must be owner of extension btree_gist
ERROR:  must be owner of extension btree_gist
ERROR:  must be owner of extension pg_trgm

解决办法:

1、修改postgresql相关配置

# 修改以下配置文件,修改端口监听地址,默认监控localhost,* 代表all
$ vim /var/opt/gitlab/postgresql/data/postgresql.conf
 
listen_addresses = '*'
# 以下配置文件新增以下两行
$ vim /var/opt/gitlab/postgresql/data/pg_hba.conf
 
local   all         all                               trust
host    all         all                               127.0.0.1/32 trust

2、重启gitlab服务

gitlab-ctl restart

3、修改数据


$ su - gitlab-psql
 
$ /opt/gitlab/embedded/bin/psql -h 127.0.0.1 gitlabhq_production
 
gitlabhq_production=# ALTER USER gitlab WITH SUPERUSER;
 
ALTER ROLE
 
gitlabhq_production=# \q
 
$ exit

4、重新执行数据恢复命令后正常

四、使用 rails 控制台修改root密码

如果知道用户名、用户 ID 或电子邮件地址,可以使用 Rails 控制台重置他们的密码:

1、打开 Rails 控制台。

sudo gitlab-rails console

2、通过用户名找到用户:

user = User.find_by_username 'exampleuser' 

3、通过用户 ID 找到用户(root 用户 ID 一般是1):

 user = User.find(123)

4、通过电子邮件地址找到用户:

user = User.find_by(email: 'user@example.com')

5、通过设置 user.password 和 user.password_confirmation 的值来重置密码。例如,要设置一个新的随机密码:

new_password = ::User.random_password
user.password = new_password
user.password_confirmation = new_password

6、保存更改

user.save!

7、推出控制台

exit

# 例如修改root密码:

进入控制台:

gitlab-rails console

在控制台执行:

user = User.find_by_username('root')
user.password = 'new_password'
user.password_confirmation = 'new_password'
user.save!

 推出控制台:

exit

<think>好的,用户想了解如何使用rsync进行GitLab数据迁移,特别是最佳实践和配置方法。首先,我需要回忆一下rsync的基本用法和它在数据迁移中的优势,比如增量同步和断点续传。然后,结合GitLab的数据结构,确定需要迁移的关键目录和配置文件,比如/home/git/git-data、/etc/gitlab和/var/opt/gitlab这些路径。 接下来,用户提到之前的问题是关于在不停机的情况下迁移数据到云端,而引用中提到了rsync可能因为公网传输和数据量大需要较长时间。所以,这里需要考虑到GitLab数据迁移可能也需要在不停机的情况下进行,或者至少尽量减少停机时间。可能需要分步骤进行,先做全量同步,然后在维护窗口做最后的增量同步,以减少停机时间。 另外,用户可能关心迁移过程中的配置调整,比如目标服务器的GitLab配置是否需要修改,如何保持权限一致,以及迁移后的验证步骤。需要确保迁移后的数据权限正确,否则GitLab可能无法正常运行。同时,要提醒用户在迁移完成后重新配置GitLab并重启服务,以及如何验证数据完整性。 还要考虑使用rsync的哪些参数更适合这种场景,比如-avz来保持文件属性和压缩传输,--progress显示进度,--delete删除目标端多余文件。如果数据量大,可能需要使用--bwlimit限制带宽,避免影响线上服务。此外,排除某些临时文件或缓存目录,比如./cache,可以节省时间和带宽。 用户可能还会遇到问题,比如迁移后的权限问题,或者如何在迁移过程中最小化服务中断。需要给出具体步骤,比如首次全量同步,之后多次增量同步,最后在维护窗口进行最后一次同步并切换服务。同时,建议备份配置,避免配置错误导致的问题。 最后,生成相关问题时要围绕用户的需求扩展,比如迁移后的验证、处理权限问题、增量同步频率、断点续传、带宽限制以及替代工具等,帮助用户全面了解相关知识点。</think>### GitLab数据迁移rsync最佳实践 一、关键迁移路径说明 1. 核心数据目录:`/home/git/git-data`(仓库存储) 2. 配置文件目录:`/etc/gitlab`(包含所有配置和密钥) 3. 应用数据目录:`/var/opt/gitlab`(数据库、Redis等) 4. 备份目录:`/var/opt/gitlab/backups`(可选迁移) 二、分步迁移方案 1. **首次全量同步**(服务可运行) ```bash rsync -avz --progress --delete \ /home/git/git-data/ \ user@new-server:/home/git/git-data/ ``` *参数说明*:`-a`保持文件属性,`-v`显示进度,`-z`压缩传输,`--delete`保持目录同步 2. **增量同步阶段**(建议每小时执行) ```bash rsync -avz --progress --bwlimit=50m \ --exclude='repositories/@hashed/*' \ /home/git/git-data/ \ user@new-server:/home/git/git-data/ ``` *优化项*:`--bwlimit`限制带宽,`--exclude`排除哈希目录减少重复传输[^1] 3. **最终同步窗口**(需停机维护) ```bash systemctl stop gitlab-runsvdir rsync -avz --delete \ /etc/gitlab/ \ user@new-server:/etc/gitlab/ ``` 三、配置验证要点 1. 目标服务器安装相同版本GitLab 2. 检查文件权限: ```bash sudo chown -R git:git /home/git/git-data ``` 3. 重建配置: ```bash sudo gitlab-ctl reconfigure sudo gitlab-ctl restart ``` 四、迁移验证方法 ```bash # 仓库完整性检查 sudo gitlab-rake gitlab:check # 数据一致性验证 find /home/git/git-data -type f -exec md5sum {} + | sort > source.md5 ssh new-server "find /home/git/git-data -type f -exec md5sum {} + | sort" | diff -u source.md5 - ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值