<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>备份恢复 on 维克的博客</title><link>https://blogs.wuvikr.top/tags/%E5%A4%87%E4%BB%BD%E6%81%A2%E5%A4%8D/</link><description>Recent content in 备份恢复 on 维克的博客</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 12 Oct 2026 19:32:50 +0800</lastBuildDate><atom:link href="https://blogs.wuvikr.top/tags/%E5%A4%87%E4%BB%BD%E6%81%A2%E5%A4%8D/index.xml" rel="self" type="application/rss+xml"/><item><title>Gitlab 备份恢复和版本升级</title><link>https://blogs.wuvikr.top/posts/gitlab%E5%A4%87%E4%BB%BD%E6%81%A2%E5%A4%8D%E5%92%8C%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7/</link><pubDate>Mon, 12 Oct 2026 19:32:50 +0800</pubDate><guid>https://blogs.wuvikr.top/posts/gitlab%E5%A4%87%E4%BB%BD%E6%81%A2%E5%A4%8D%E5%92%8C%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7/</guid><description>&lt;h1 id="1-gitlab-数据备份">1. gitlab 数据备份&lt;/h1>
&lt;h2 id="11-数据备份">1.1 数据备份&lt;/h2>
&lt;p>GitLab 提供一条命令 &lt;code>gitlab-backup create&lt;/code>，运行命令后会产出一个压缩 tar 归档，包含数据库、Git 仓库与 LFS、CI/CD artifacts、Wiki、附件上传、Pages、注册表等。但它&lt;strong>不包含&lt;/strong>配置文件、密钥、Redis 队列和对象存储，这些要另行处理。&lt;/p>
&lt;p>官方提示至少必须单独备份 &lt;code>/etc/gitlab/gitlab-secrets.json&lt;/code>（内含数据库加密密钥，丢失后无法解密两步验证和 CI 安全变量）与 &lt;code>/etc/gitlab/gitlab.rb&lt;/code>。建议连同 &lt;code>/etc/gitlab/trusted-certs&lt;/code>一起备份，避免整机恢复时出现中间人警告。&lt;/p>
&lt;h2 id="12-执行备份">1.2 执行备份&lt;/h2>
&lt;p>Omnibus 包安装的环境下，可以直接调用官方封装命令：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>gitlab-backup create
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>归档默认生成在 &lt;code>/var/opt/gitlab/backups/&lt;/code>，文件名一般是这个样子： &lt;code>1730000000_2026_10_12_17.5_gitlab_backup.tar&lt;/code>。&lt;/p>
&lt;p>可以在 &lt;code>/etc/gitlab/gitlab.rb&lt;/code> 中调整文件保存路径和时间:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 备份保留7天&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>gitlab_rails&lt;span style="color:#f92672">[&lt;/span>&lt;span style="color:#e6db74">&amp;#39;backup_keep_time&amp;#39;&lt;/span>&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">604800&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 备份目录配置&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>gitlab_rails&lt;span style="color:#f92672">[&lt;/span>&lt;span style="color:#e6db74">&amp;#39;backup_path&amp;#39;&lt;/span>&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;/var/opt/gitlab/backups&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>修改后执行 &lt;code>gitlab-ctl reconfigure&lt;/code>。&lt;/p>
&lt;p>需要排除某类数据时用 &lt;code>SKIP&lt;/code>，例如跳过 CI 输出日志：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>gitlab-backup create SKIP&lt;span style="color:#f92672">=&lt;/span>builds,artifacts
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="13-生产备份策略">1.3 生产备份策略&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>策略&lt;/th>
&lt;th>做法&lt;/th>
&lt;th>为什么&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>定时执行&lt;/strong>&lt;/td>
&lt;td>用 cron 每天/每周触发 &lt;code>gitlab-backup create&lt;/code>&lt;/td>
&lt;td>备份频率决定最多可丢失多少数据（RPO）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>异地/对象存储&lt;/strong>&lt;/td>
&lt;td>把 tar 归档拷贝到另一台机器或对象存储（支持 S3 等 remote 配置）&lt;/td>
&lt;td>单机磁盘故障时本地归档同样会丢&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>配置密钥单独备&lt;/strong>&lt;/td>
&lt;td>定期打包 &lt;code>/etc/gitlab&lt;/code> 到加密存储&lt;/td>
&lt;td>密钥丢失=数据库无法解密，归档也无意义&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>定期恢复演练&lt;/strong>&lt;/td>
&lt;td>在测试机用备份实际恢复一次&lt;/td>
&lt;td>没验证能恢复的备份等于没有备份&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;div class="alert alert-tip" role="alert">
&lt;p class="alert-title">提示：&lt;/p></description></item></channel></rss>