目次
SQLiteでお手軽運用していたGiteaのデータベースをMySQLに移行しました。
はじめに
当初GitHubアカウントを持っていなかった事や、とんでもないコミット数を誇るlinux-stableのレポジトリを抱えている事もあってGiteaを自前Gitサーバーとして利用しています。
しかし、元々開くのに1分ぐらいかかっていたlinux-stable-dsm232がここ最近まったく開けなくなってしまい、ついにSQLite運用の限界が見えてしまったため、高速化してくれる事を願ってMySQL(MariaDB)に移行する事を決意しました。
手順
- MySQLでユーザとデータベースを作成
- Giteaのdump機能でMySQL向けSQLファイルを出力する
- MySQLでインポート
- Giteaのデータベース設定を変更
つまり、動作しているGiteaが必要です。
SQLiteのdbから直接変換することも試みましたが、構造が違うので変換がうまく行きませんでした。
MySQLでユーザとデータベースを作成
MySQLは予め設定しておいてください
mysql -u root -p
にて
|
|
Giteaのdump機能でMySQL向けSQLファイルを出力する
|
|
-d
オプションで出力先に合わせて変換してくれます。
/tmp
はgiteaユーザが書き込める場所ならどこでも大丈夫ですが、dumpをgiteaの動作ユーザで実行する必要があります。
MySQLでインポート
|
|
Giteaのデータベース設定を変更
[database]
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ;
; ; Database to use. Either "mysql", "postgres", "mssql" or "sqlite3".
; ;
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ;
; ; MySQL Configuration
; ;
DB_TYPE = mysql
; can use socket e.g. /var/run/mysqld/mysqld.sock
HOST = 127.0.0.1:3306
NAME = giteadb
USER = gitea
PASSWD = `gitea`
CHARSET = utf8mb4
|
|
で正常に動作すればOKです。
おわりに
最初開いた感じはイマイチ変わってない気がするのですが、デーモンで動いているためキャッシュが効くことを信じています…
しばらくはGitea側でキャッシュされているっぽくてすぐ比較できないんですよね。