LoginSignup
0
3

More than 5 years have passed since last update.

gitbucketでH2からRDBMSに移行する

Last updated at Posted at 2018-05-18

経緯

なんかgitbucketはH2とかいうDBを使って色々と情報を格納しているらしいが,使い方をしらんので他のSQLに乗り換えることにした.

乗り換えた結果

はっきし言って,gitbucketが重くなったと思う.
参考まで → パフォーマンス比較 Cassandra、Mongodb、SQLite、H2、MySQL、Postgres - C/pHeR Memo - Java とか。Eclipse とか。

準備

  • rootでログインし直してsystem administrationからdb export.
  • gitbucketを落としておく
  • ポスグレを入れておく

MariaDBを試してみる

gitbucketを起動しようとするとエラーが出て,ブラウザからアクセスしても503エラーで接続できない.
このサイトによると,ビューのFROMでサブクエリが使えないらしい.
GitBucket + MariaDBの構築でハマった件 - 無理なご乗車はおやめ下さい。

ポスグレは確かできた気がするのでポスグレ採用.

PostgreSQLを試してみる

MySQLはプライベートで他のソフト(wordpressとかowncloudとか)に要求されて使ってるだけなんで,ソフトをそこまで信用しておらずユーザを分けて使っていた.
一方でPostgreSQLはデータ分析の仕事で自分専用のサーバを立てて使っているのでpostgresユーザでしかアクセスしたことがない.
自分で1行も書いてないソフトに,そういう使い方はちょっと心配なので設定を頑張ってみる.

ユーザを作ってログインできるようにする.

createuserのオプションはここを参照したPostgreSQL でパスワード認証を使う

sudo su - postgres  # postgresになってポスグレ関連コマンドを使う
createuser -D -E -R -S -P UESRNAME
createdb DBNAME

ユーザの認証方法とかアクセス権の設定.
DBとgitbucketを同じホストで動作させる前提で.
ADDRESSのとこは,TYPEがlocalなのに指定すると動かないので注意.

--- a/9.6/main/pg_hba.conf
+++ b/9.6/main/pg_hba.conf
@@ -85,6 +85,7 @@
 local   all             postgres                                peer

 # TYPE  DATABASE        USER            ADDRESS                 METHOD
+local   DBNAME          USERNAME                                md5

 # "local" is for Unix domain socket connections only
 local   all             all                                     peer
sudo service postgres restart
psql -U USERNAME DBNAME

パスワードのプロンプトが返ってきたら成功.

gitbucketの設定変更.

.gitbucket/database.conf
db {
  url = "jdbc:postgresql://localhost/gitbucket"
  user = "USERNAME"
  password = "PASSWORD"
}

データのリストア

まず,gitbucketを起動する.
それから,H2時代にエキスポートしたsqlファイルを準備.
ブラウザを起動して,初期設定のID:root/PW:rootでログインする.
system administartionからsqlファイルのインポート.xmlじゃなくてもインポートできた.

先達に従って,意味はよくわからんがpsql特有に移せない設定があると信じて以下を実行する.

SELECT setval('label_label_id_seq', (select max(label_id) + 1 from label));
SELECT setval('activity_activity_id_seq', (select max(activity_id) + 1 from activity));
SELECT setval('access_token_access_token_id_seq', (select max(access_token_id) + 1 from access_token));
SELECT setval('commit_comment_comment_id_seq', (select max(comment_id) + 1 from commit_comment));
SELECT setval('commit_status_commit_status_id_seq', (select max(commit_status_id) + 1 from commit_status));
SELECT setval('milestone_milestone_id_seq', (select max(milestone_id) + 1 from milestone));
SELECT setval('issue_comment_comment_id_seq', (select max(comment_id) + 1 from issue_comment));
SELECT setval('ssh_key_ssh_key_id_seq', (select max(ssh_key_id) + 1 from ssh_key));

gitbucketの起動して完了

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3