この記事はtraP Advent Calendar 2021 41日目の記事です。
こんにちは、20Bのhijiki51です。普段はSysAdで活動しています。最近DBをConoHaのマネージドDBからセルフホストのものに移行したのでそれについて書こうと思います。
背景
もともと、traPの各サービスのDBはConoHaのDB(mariadb)を用いていました。そのバージョンは以下の通りです。
- mariadb: 10.0.19
リリース日はなんと2015年、traPとほぼ同じ年齢です
しかしながら、各OSSなどのサービスは新しいDBバージョンを前提として開発が進んでいる物が多いです。そのため、以下のような問題が発生していました。
- 767byte問題
- 767byte以上のカラムにはINDEXが貼れないという問題
innodb_large_prefix
で回避可能だが、ConoHaの制約上設定不能
- WSL2でmariadbのコンテナが正常に起動しない問題
- Restarting(139)になる
- ある程度新しいバージョンにすると解決(原因不明)
そのため、conohaのDBから自前DBサーバーを立ててそこに移行することにしました。
構成
スペックは以下の通りです
- MariaDB: 10.6.4
- ConoHaVPS: CPU3コア メモリ2GB ストレージ100GB
- Ubuntu 20.04
サーバー構成は次の図のようになっています。
DB
DBには本番環境用(prod)と開発環境用(dev)が存在します。
prod、devともにprivate network内からのみアクセスできるようになっています。
adminer
adminerは内部向けにプラグインを開発し、利用しています。
具体的には、traPアカウントでログインできるようにし、各ユーザーごとにアクセス権限を制限できるようにしています。
監視
mysqlやインスタンスのメトリクスなどを収集しています。Grafanaで監視できるようになっています。
感想と今後について
DB開発環境も含め約30個ぐらいのDBや認証情報を書き換えるのが大変でした。
ただ、今回の移行に伴いDBサーバーが落ちると全サービス止まってしまうのでそこの冗長化をどうしようかな~と考えています。
↓つい最近起きたやばいやつ
connection数の上限の設定はしましょう!!
明日は@temmaさんの記事です、二本立てなので、楽しみです!!!!!