Gitlabのバックアップとリストア

Gitlabのバックアップとリストアについてのメモ。結論だけを言ってしまえばどちらも便利なrake taskが準備されているので、それを使いましょう、です。

バックアップ

gitlabのルートから以下を実行。(自分の環境では /home/git/gitlab/)

$ bundle exec rake gitlab:backup:create RAILS_ENV=production

恐らくmysqlから「mysqldump: Got error: 1044: Access denied for user 'gitlab'@'localhost' to database 'gitlabhq_production' when using LOCK TABLES」なんて感じに怒られるでしょう。怒られました。

だもんで、LOCK TABLESさんにアクセスできるようにしてあげます。

# mysql

(本当にないか確認)
mysql> show GRANTS FOR  'gitlab'@'localhost';

(ないとわかったら素直に設定)
mysql> GRANT LOCK TABLES ON `gitlabhq_production`.* TO 'gitlab'@'localhost';

これでgilab:backup:createが動作するはずです。

なおバックアップの設定はconfig/gitlab.ymlに記述します。「backup:」セクションに以下を記述

  • path: バックアップファイルの出力先。デフォルトは(相対パスで)tmp/backups
  • keep_time: 世代管理で「残しておきたい秒数」を記述する、らしいです。デフォルトは0で無期限。

リストア

バックアップしておいたファイルを指定して以下を実行。

$ bundle exec rake RAILS_ENV=production gitlab:backup:restore BACKUP=★リストアするバックアップファイルを指定★