zoukankan      html  css  js  c++  java
  • docker gitlab backup

    说明:下面命令中带有<your container name>字,是 gitlab 容器的名称,请按实际情况进行代替

    在创建备份之前,你不需要停止任何东西

    docker exec -t <your container name> gitlab-rake gitlab:backup:create
    

    gitlab_backup.sh content:

    #! /bin/bash
    case "$1" in 
        start)
            docker exec -t <your container name> gitlab-rake gitlab:backup:create
            ;;
    esac
    

    嘗試腳本是否可以正常運行

    gitlab_backup.sh start
    

    將腳本放入到 /root下,並使用 sudo crontab -e 添加一下內容

    0 2 * * * /root/gitlab_backup.sh start
    

    重啟cron服務

    sudo service cron reload
    sudo service cron restart
    

    进入gitlab容器:

    #来自Gitlab docker外的Ubuntu主机
    sudo docker exec -it <your container name> /bin/bash
    

    查看gitlab 本地的备份路径

    gitlab_rails['backup_path'] 在 Gitlab 配置文件 gitlab.rb 是 注释的, 它的默认备份路径是在 /var/opt/gitlab/backups.

    # 来自Gitlab Docker
    root@bcc3d4829e2c:/# cat /etc/gitlab/gitlab.rb | grep backup_path
    # gitlab_rails['manage_backup_path'] = true
    # gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
    

    创建一份备份

    检测备份

    # 来自Gitlab Docker
    root@bcc3d4829e2c:/etc/gitlab# ls -lart /var/opt/gitlab/backups
    total 2777464
    drwxr-xr-x 20 root root       4096 May 24 02:10 ..
    drwx------  2 git  root       4096 May 24 02:15 .
    -rw-r--r--  1 root root 2844108800 May 24 02:18 1563732042_2019_07_21_11.1.4_gitlab_backup.tar
    

    备份配置文件和 密钥文件

    在上面创建备份时,没有备份 配置文件和密钥文件,这是因为上面一步是使用 使用密钥文件加密Gitlab 数据,如果你将他们保存相同的地方,你将会破坏加密过程。

    所以请备份 /etc/gitlab/gitlab.rb/etc/gitlab/gitlab-secrets.json 并且将他们保存在一个其它Gitlab 备份数据的安全的地方

    还原 Gitlab

    你只能通过Gitlab 备份还原 一样的Gitlab版本和类型。并且你需要一个运行中的Gitlab实例。

    停止一些 Gitlab 服务

    # 来自Gitlab Docker
    
    gitlab-ctl reconfigure
    gitlab-ctl start
    gitlab-ctl stop unicorn
    gitlab-ctl stop sidekiq
    gitlab-ctl status
    ls -lart /var/opt/gitlab/backups
    

    开始还原

    备份文件一定可以在 定义在 Gitlab 配置文件/etc/gitlab/gitlab.rbgitlab_rails['backup_path']的路径下找到

    在 docker 外主机终端执行

    #来自Gitlab docker外的Ubuntu主机
    docker exec -it <your container name> gitlab-rake gitlab:backup:restore --trace
    

    还原过程中会出现2次 Do you want to continue (yes/no)? 的询问操作,都输入yes之后,按Enter 回车键确认操作。

    我们当然添加 BACKUP 参数来指定备份文件如果有多个备份文件在备份目录下,BACKUP参数的值是 备份文件的时间戳,比如: docker exec -it <your container name> gitlab-rake gitlab:backup:restore BACKUP=1563732042_2019_07_21_11.1.4 --trace

    重启Gitlab并安全检查

    使用gitlabctl restart命令重启Gitlab服务

    # 来自Gitlab Docker
    gitlab-ctl restart
    

    使用gitlab-rake gitlab:check SANITIZE=true命令来发起Gitlab安全检查

    # 来自Gitlab Docker
    gitlab-rake gitlab:check SANITIZE=true
    

    使用docker ps来验证 Gitlab 容器健康

    #来自Gitlab docker外的Ubuntu主机
    sudo docker ps
    

    重置root用戶密碼:
    gitlab ce 官方文檔How to reset your root password

    進入 docker 容器命令行內,執行

    # Form Docker container /bin/bash
    # 執行下面的命令啓動一個 Ruby on Rails console,等待 console加載完成
    root@44b33d22e70f:/# gitlab-rails console production
    -------------------------------------------------------------------------------------
     GitLab:       11.1.4 (63daf37)
     GitLab Shell: 7.1.4
     postgresql:   9.6.8
    -------------------------------------------------------------------------------------
    Loading production environment (Rails 4.2.10)
    irb(main):001:0> user = User.where(id: 1).first #這裏通過用戶id查詢用戶,也可以通過email或用戶名查詢
    => #<User id:1 @root>
    irb(main):002:0> user.password="12345678" #設置密碼
    => "12345678"
    irb(main):003:0> user.password_confirmation="12345678" #確認密碼
    => "12345678"
    irb(main):004:0> user.save! # 保存修改
    Enqueued ActionMailer::DeliveryJob (Job ID: 38850b0d-7690-47b7-b5c9-9cf975bae8fd) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", gid://gitlab/User/1
    => true
    irb(main):005:0> quit #退出 Ruby on Rails console
    

    參考

    1. docker部署的GitLab代码自动备份
    2. Backup and restore Omnibus GitLab configuration
    3. Backup and restore Gitlab in docker 需要参考这个来写自己的尝试笔记
    4. gitlab修改root密码
  • 相关阅读:
    Android Studio 更新gradle插件
    CentOS7 安装 mplayer
    Centos7 安装Git-cola
    Centos Java 从1.7升级为1.8
    PHPStorm 10 激活
    openssh无法登录:server responded "algorithm negotiation failed”
    中文Ubuntu主目录下的文档文件夹改回英文
    设计模式六大原则
    设计模式之【桥接模式--Bridge】
    设计模式之【外观模式-Facade】
  • 原文地址:https://www.cnblogs.com/fsong/p/11337043.html
Copyright © 2011-2022 走看看