Last active
May 28, 2020 05:38
-
-
Save tateisu/026dfb95a029484aed07d149743a6a63 to your computer and use it in GitHub Desktop.
docker環境でのpostgreSQL 9.6 => 11 へのアップグレード
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# docker環境でのpostgreSQL 9.6 => 11 へのアップグレード | |
# https://github.com/tianon/docker-postgres-upgrade を利用する | |
# リポジトリに (OLD)-to-(NEW) のフォルダがあるか事前に確認しておく | |
# (今回の場合は 9.6-to-11 ) | |
################################# | |
# 作業フォルダの作成 | |
mkdir postgres-upgrade-2 && cd postgres-upgrade-2 | |
mkdir -p postgresql/9.6/data postgresql/11/data | |
sudo chown -R 70:70 postgresql | |
# バックアップからデータをコピー | |
sudo rsync -av /hdd2/backup-mastodon1/mastodon/postgres/* postgresql/9.6/data | |
# アップグレードの実行 | |
docker run --rm -v $PWD/postgresql:/var/lib/postgresql tianon/postgres-upgrade:9.6-to-11 --link | |
##################################################### | |
# postgreSQL 11 のコンテナを作成して vacuum full verbose analyze する | |
mkdir postgres11 && cd postgres11 | |
cat > docker-compose.yml | |
version: '3' | |
services: | |
postgres11: | |
restart: always | |
image: postgres:11.1-alpine | |
volumes: | |
- ../postgresql/11/data:/var/lib/postgresql/data | |
env_file: .env | |
^D | |
$ cat > .env | |
POSTGRES_PASSWORD=************* (以前のDBと同じパスワードを指定する) | |
^D | |
$ docker-compose up | |
(ログを見て正常起動されたか確認する) | |
^C | |
$ docker-compose up -d | |
(バックグラウンドで起動される) | |
# pg_upgradeはanalyzeしないので、手動で開始する | |
$ docker exec -it postgres11_postgres11_1 psql -U postgres postgres | |
vacuum full verbose analyze; | |
\q | |
# コンテナを止める | |
$ docker-compose down | |
##################################################### | |
後は「postgres11に移行済みのデータフォルダ」を本番環境にコピーして使う | |
くれぐれもバックアップをお忘れなく |
この方法だとpostgresql.conf, pg_hba.conf, pg_ident.conf の内容は引き継がれません。この三つのファイルはdiffを取るなり、PgTuneで行った設定やPgHero用のpg_stat拡張を入れる設定を再度行う等の必要があります。
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
そうそう、pg_upgradeは拡張モジュールのバイナリ互換性までは見てくれないので、素のpostgresを使ってる前提じゃないとダメです。
拡張モジュールを使ってる方はdumpしてrestoreする方法しかない。