gitlabの移行と移行後の500の問題

gitlabの移行

バックグラウンド

  • gitlabがAlibabaCloudマシンにデプロイされる前は、外部ネットワークが比較的安全でなかったため、内部ネットワークへの移行を検討しました。

周囲

  • gitlab-11.11.3dockerデプロイメント

実装する

  1. バックアップ
    docker exec -ti gitlab bash
    gitlab-rake gitlab:backup:create
    docker cp gitlab:/var/opt/gitlab/backups/1612427334_2021_02_04_11.11.3_gitlab_backup.tar .
  2. イントラネットマシンで同じバージョンのgitlabを起動します(gitlabのバックアップとリカバリには同じバージョンが必要です)
docker exec -ti gitlab bash
mv 1612427334_2021_02_04_11.11.3_gitlab_backup.tar /var/opt/gitlab/backups/
chmod 755 /var/opt/gitlab/backups/1612427334_2021_02_04_11.11.3_gitlab_backup.tar
chown root:root /var/opt/gitlab/backups/1612427334_2021_02_04_11.11.3_gitlab_backup.tar
gitlab-rake gitlab:backup:restore BACKUP=1612427334_2021_02_04_11.11.3

問題

1. ci / cdランナーページに入り、500を報告します

gitlab-rails console
Ci::Runner.all.update_all(token_encrypted: nil)

gitlab-rails dbconsole
UPDATE projects SET runners_token = null, runners_token_encrypted = null; 

2.新しいユーザーを作成し、ユーザーがパスワードの変更を強制された場合、500
ログの表示は似ています。最初に書かれた記事がないため、ログの表示は似ていますが、遭遇したログではありません。


The form contains the following error:

    PG::NotNullViolation: ERROR: null value in column "id" violates not-null constraint DETAIL: Failing row contains (null, 164, t). : INSERT INTO "project_ci_cd_settings" ("project_id") VALUES (164) RETURNING "id"

解決策:対応するテーブルにnull値があるかどうかを確認し、新しいgitlab比較テーブル構造を開始します

解決する:

gitlabhq_production=> CREATE SEQUENCE user_preference_id_seq INCREMENT BY 1 NO MINVALUE NO MAXVALUE START WITH 106 OWNED BY user_preferences.id;   重新创建sequence
gitlabhq_production=> ALTER TABLE user_preferences ALTER COLUMN id SET DEFAULT NEXTVAL('user_preference_id_seq'::regclass);                         恢复表结构修饰符

3.マージを作成するときにユーザーに割り当てる場合、
送信後に500gitlabログが記録さます。

==> /var/log/gitlab/postgresql/current <==
2021-03-18_05:52:05.23424 ERROR:  null value in column "id" violates not-null constraint
2021-03-18_05:52:05.23427 DETAIL:  Failing row contains (null, 61, 4046).
2021-03-18_05:52:05.23427 STATEMENT:  INSERT INTO "merge_request_assignees" ("user_id", "merge_request_id") VALUES (61, 4046) RETURNING "id"

解決する:

gitlabhq_production=> CREATE SEQUENCE merge_request_assignees_id_seq INCREMENT BY 1 NO MINVALUE NO MAXVALUE START WITH 106 OWNED BY merge_request_assignees.id;   重新创建sequence
gitlabhq_production=> ALTER TABLE merge_request_assignees ALTER COLUMN id SET DEFAULT NEXTVAL('merge_request_assignees_id_seq'::regclass);                         恢复表结构修饰符

注:gitlabを移行した後、データベースシーケンスが失われるという問題が発生します。シーケンスを再構築し、フィールド修飾子を復元します。新しいgitlabと比較すると、多くのseqが失われる可能性があるため、すべてを復元することをお勧めします。

参照:https//gitlab.com/gitlab-org/gitlab/-/issues/26020

おすすめ

転載: blog.51cto.com/674564591/2674660