プロジェクト

全般

プロフィール

20260707 サーバ移行06 gitbucket » 履歴 » バージョン 4

sylow castle, 2026/07/12 02:45

1 1 sylow castle
# 20260707 サーバ移行06 gitbucket
2
3
javaは21をインストール、tomcatをインストールするときにjava-1.8.0-openjdk-headless.x86_64なるものが依存関係で入ってくる。
4
java21-openjdk.x86_64のインストール時にjava-21-openjdk-headless.x86_64も入っているのだが…
5
いつものようにmysqldump
6
7
旧サーバーで実行:
8
```
9
mysqldump -u root -p gitbucket > gitbucket.sql
10
```
11
12
新サーバーに持っていく。
13
14
## サーバの文字コード違いでDBマイグレーションエラー
15
16 2 sylow castle
元々MySQL 5.7で動いていたサーバでデフォルト文字セットがutf8(今でいうutf8mb3)、
17
新サーバーのMySQL 8.0はデフォルト文字セットがutf8mb4という違いが原因でDBマイグレート中にエラーが発生、マイグレートに失敗した。
18 1 sylow castle
19
新サーバーで実行
20
```
21
mysqldump -u root -p gitbucket < gitbucket.sql
22
```
23
24
systemctl start tomcatするとエラー発生(/var/log/tomcat/localhost.2026-07-08.logに吐かれた)結果は以下の通り:
25
26
```
27
08-Jul-2026 06:42:52.252 重大 [main] org.apache.catalina.core.StandardContext.listenerStart クラス [gitbucket.core.servlet.InitializeListener] のリスナインスタンスにコンテキスト初期化イベントを送信中の例外です
28
        java.sql.SQLTransientConnectionException: (conn=10497) Referencing column 'USER_NAME' and referenced column 'USER_NAME' in foreign key constraint 'IDX_PROTECTED_BRANCH_RESTRICTION_FK0' are incompatible.
29
```
30
31
Geminiに聞くと文字コードの違いのエラーだそう。自分でALTER TABLE作って文字コード変えてやろうにもエラーが発生を確認。
32
Geminiは次のコマンドを提案:
33
34
```
35
# dump.sql の中の utf8 をすべて utf8mb4 に置換する
36
sed -i 's/utf8/utf8mb4/g' gitbucket.sql
37
```
38
39
これを実行してgitbucket.sqlを流し込んでやったらあっさり成功。
40 3 sylow castle
注:上記sedコマンドはデータの中にUTF8という言葉がないことを前提にやっています。もしあったら、スキーマだけじゃなくてデータも書き換わるので注意しましょう。
41 4 sylow castle
42
## 2026-07-12追記
43
44
dumpからの復旧完全には成功していなかった。詳細は以下に。
45
[202600712 サーバ移行07 gitbuckeのVIEWが移行できてなかった](https://www.sylow-castle.work/redmine/projects/public/wiki/202600712_%E3%82%B5%E3%83%BC%E3%83%90%E7%A7%BB%E8%A1%8C07_gitbucke%E3%81%AEVIEW%E3%81%8C%E7%A7%BB%E8%A1%8C%E3%81%A7%E3%81%8D%E3%81%A6%E3%81%AA%E3%81%8B%E3%81%A3%E3%81%9F)