LoginSignup
1
0

More than 3 years have passed since last update.

ローカルにホスティングしたAutoMuteUsをバージョンアップする

Last updated at Posted at 2021-04-10

背景

仲間内でAmongUsを遊ぶ機会があり、その時のためにAutoMuteUsを手元にホスティングしていました。2021年3月末ごろにAmongUsに大型アップデートが入り、AutoMuteUsも対応して新しいバージョンを使いたくなったため、古いバージョンで使っていたdocker内のDBから新しい方のdocker内のDBにデータを移す必要が生じました。

AutoMuteUsの各バージョンは、移行前が6.10.1、移行後が6.12.1です。

前準備

データ移行先の最新のAutoMuteUsをインストールしておきます。
https://github.com/denverquane/automuteus

各DBデータの取得

古いAutoMuteUsのdocker-compose.ymlのあるディレクトリに移動した後

$ docker-compose up # AutoMuteUs起動
$ docker ps # 各構成要素のコンテナ名確認

で各コンテナの情報を確認しておきます。

PostgreSQLからの取得

$ docekr exec -it <postgresのコンテナ名> sh
-----<以下コンテナ内>-----
$ pg_dump -h localhost -U <postgresのユーザー名> -c <目的のDB名:デフォルトであればユーザー名と同じ> --format=c > hogehoge.dump
$ pg_dump -h localhost -U <postgresのユーザー名> -c <postgresのユーザー名> -s --format=c > hogehoge_schema.dump
----<以下コンテナ外>----
# dumpしたデータをdocker外に持ち出す
$ docker cp <コンテナID>:/hogehoge.dump .
$ docker cp <コンテナID>:/hogehoge_schema.dump .

Redisからの取得

$ docekr exec -it <redisのコンテナ名> sh
-----<以下コンテナ内>-----
$ redis-cli save
----<以下コンテナ外>----
# dumpしたデータをdocker外に持ち出す
$ docker cp <コンテナID>:/data/dump.rdb .

必要なデータが手に入ったのでdocker-compose stopでAutoMuteUsを停止します。

新しいAutoMuteUsへの取得データの読み込み

新しくインストールしてきたAutoMuteUsのdocker-compose.ymlのあるディレクトリに移動した後、先ほどと同様にDBを格納しているコンテナの情報を確認しておきます。

$ docker-compose up # AutoMuteUs起動
$ docker ps # 各構成要素のコンテナ名確認

また、移行中の予期せぬDBへの書き込みをなくすためにDB以外のdockerを停止しておきます。

$ docker stop <automuteus自体のdokerのID>
$ docker stop <galuctusのdokerのID>

PostgreSQLへの読み込み

$ docker cp hogehoge.dump <postgresのコンテナ名>:/.
$ docker cp hogehoge_schema.dump <postgresのコンテナ名>:/.
$ docekr exec -it <postgresのコンテナ名> sh
-----<以下コンテナ内>-----
$ psql -h localhost -U <> -f hogehoge_schema.dump <>
$ psql -h localhost -U <> -f hogehoge.dump <>

Redisへの読み込み

$ docker cp dump.rdb <redisのコンテナ名>:/.
$ docekr exec -it <redisのコンテナ名> sh
-----<以下コンテナ内>-----
$ mv /data/dump.rdb /data/dump.rdb.bu # バックアップ
$ mv dump.rdb /data/dump.rdb

上記で移行は完了です。

HerokuにホスティングしたAutoMuteUsにデータを移行する

AutoMuteUsはheroku上にホスティングするためのリポジトリをk-tahiroさんという方が作成して公開してくださっています(heroku-docker-automuteus)。heroku上にホスティングしたAutoMuteUsへのデータ移行も行ったのですが、こちらではいくつか追加の作業が必要になりました。

AWS S3のセットアップ

HerokuのPostgresにdumpファイルからデータをリストアするには、httpでアクセスできるURLにデータを置いておく必要があります。今回は、Herokuの公式が勧めているAWSのS3を使います。
https://devcenter.heroku.com/articles/heroku-postgres-import-export
AWSへアカウントを登録し、ブラウザからS3に先ほど作成したPostgres、RedisのDBダンプファイルをアップロードします。
アップロードしたデータへのアクセスは、AWSの提供している署名付きURLの機能を使って行います。各データへの署名付きURLの作成方法はいくつかありますが、今回はAWS CLI2を使って行います。

インストール後にaws configureでアクセスキーとシークレットアクセスID、リージョンを適切に設定します。アクセスキーとシークレットアクセスIDはブラウザから触れるAWSマネジメントコンソールの右上の自分のアカウント名のボタン>マイセキュリティ資格情報から確認、もしくは作成できます。

$ heroku pg:backups:restore '<SIGNED URL>' DATABASE_URL

Postgresのスキーマとデータの順で、S3のダンプファイルからのデータの取り込みを行います。
DATABASE_URLはプレースホルダではなくそのままこの文字列を入力します。

Redisに関してはデータを移し忘れたのですが、特に問題なく運用できたので、必ずしも移行する必要はなさそうです。

他参考資料

1
0
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
1
0