弁財天

ゴフマン「専門家を信じるのではなく、自分自身で考えて判断せよ」

pg_upgradeでpostgresql-serverのデータを10.7から11.2にアップグレードw

F29からF30にアップグレードすると
postgresql-server-10.7-1.fc29.x86_64 は
postgresql-server-11.2-3.fc30.x86_64 にアップグレードされる。

これはメジャーバージョンのアップグレードなので自動的に移行されない。pg_upgradeを使うことになる。

# systemctl stop tomcat
# systemctl stop postgresql
# mv data data.107
# mkdir data
# pg_upgrade --old-datadir /var/lib/pgsql/data107 --new-datadir /var/lib/pgsql/data

pg_upgrade: root では実行できません
失敗しました、終了しています
# su - postgres
$ pg_upgrade --old-datadir /var/lib/pgsql/data107 --new-datadir /var/lib/pgsql/data

旧クラスターのバイナリが存在します のディレクトリを指定する必要があります。
コマンドラインオプション -b または環境変数 PGBINOLD を使用してください。
失敗しました、終了しています
$

F30に移行した後なのにF29環境のpostgresql-server-10.7-1.fc29.x86_64のバイナリが必要になるw

もちろんバージョンアップしたあとなのだからそんなバイナリはどこにもない。

隣の移行前のサーバーからF29のpostgresql-server-10.7-1.fc29.x86_64のバイナリをコピーしてきて無理矢理動かすことになるw
/usr/bin/pg*を/usr/local/bin/pg10/下にコピー。ライブラリモジュールは不要みたいだw(なんで?

$ pg_upgrade --old-datadir /var/lib/pgsql/data107 --new-datadir /var/lib/pgsql/data --old-bindir=/usr/local/bin/pg10

新クラスターのバイナリが存在します のディレクトリを指定する必要があります。
コマンドラインオプション -B または環境変数 PGBINNEW を使用してください。
失敗しました、終了しています
$ pg_upgrade --old-datadir /var/lib/pgsql/data107 --new-datadir /var/lib/pgsql/data --old-bindir=/usr/local/bin/pg10 --new-bindir=/usr/bin

check for "/usr/local/bin/pg10" failed: そのようなファイルやディレクトリはありません

失敗しました、終了しています
$ ログアウト
# cd /bin
# mv pg10 /usr/local/bin/.
# su - postgres
$ pg_upgrade --old-datadir /var/lib/pgsql/data107 --new-datadir /var/lib/pgsql/data --old-bindir=/usr/local/bin/pg10 --new-bindir=/usr/bin

"/usr/local/bin/pg10/postgres"のチェックに失敗しました: そのようなファイルやディレクトリはありません
失敗しました、終了しています
# f29の/usr/bin/postgresを/usr/local/bin/pg10/postgresにコピるw
$ pg_upgrade --old-datadir /var/lib/pgsql/data107 --new-datadir /var/lib/pgsql/data --old-bindir=/usr/local/bin/pg10 --new-bindir=/usr/bin

バージョンファイルを開けません: /var/lib/pgsql/data102/PG_VERSION
失敗しました、終了しています
$ ls -l /var/lib/pgsql/data102/PG_VERSION
ls: '/var/lib/pgsql/data102/PG_VERSION' にアクセスできません: 許可がありません
$ ログアウト
# chown -R postgres /var/lib/pgsql/data107
# su - postgres
$ pg_upgrade --old-datadir /var/lib/pgsql/data107 --new-datadir /var/lib/pgsql/data --old-bindir=/usr/local/bin/pg10 --new-bindir=/usr/bin

バージョンファイルを開けません: /var/lib/pgsql/data/PG_VERSION
失敗しました、終了しています
 
$ export PGSETUP_INITDB_OPTIONS="--locale=ja_JP.UTF-8"
$ /usr/bin/postgresql-setup --initdb
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
$ pg_upgrade --old-datadir /var/lib/pgsql/data107 --new-datadir /var/lib/pgsql/data --old-bindir=/usr/local/bin/pg10 --new-bindir=/usr/bin
整合性チェックを実行しています。
-----------------------------
Checking cluster versions                                   ok
Checking database user is the install user                  ok
Checking database connection settings                       ok
Checking for prepared transactions                          ok
Checking for reg* data types in user tables                 ok
Checking for contrib/isn with bigint-passing mismatch       ok
Creating dump of global objects                             ok
Creating dump of database schemas
                                                            ok
Checking for presence of required libraries                 ok
Checking database user is the install user                  ok
Checking for prepared transactions                          ok

このポイントの後に pg_upgrade が失敗した場合、続行の前に再度 initdb を行って、
新しいクラスターする必要があります。

アップグレードを実行しています。
------------------
Analyzing all rows in the new cluster                       ok
Freezing all rows in the new cluster                        ok
Deleting files from new pg_xact                             ok
Copying old pg_xact to new server                           ok
Setting next transaction ID and epoch for new cluster       ok
Deleting files from new pg_multixact/offsets                ok
Copying old pg_multixact/offsets to new server              ok
Deleting files from new pg_multixact/members                ok
Copying old pg_multixact/members to new server              ok
Setting next multixact ID and offset for new cluster        ok
Resetting WAL archives                                      ok
Setting frozenxid and minmxid counters in new cluster       ok
Restoring global objects in the new cluster                 ok
Restoring database schemas in the new cluster
                                                            ok
ユーザーリレーションのファイルをコピーしています
                                                            ok
Setting next OID for new cluster                            ok
Sync data directory to disk                                 ok
Creating script to analyze new cluster                      ok
Creating script to delete old cluster                       ok

アップグレードが完了しました
----------------
オプティマイザーの統計は、pg_upgrade では転送されません。そのため
新サーバーを起動した後、./analyze_new_cluster.sh を動かすことを検討してください。


このスクリプトを実行すると、旧クラスターのデータファイル ./delete_old_cluster.shが削除されます:

$ ログアウト
# systemctl start postgresql.service
# systemctl status postgresql.service
● postgresql.service - PostgreSQL database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2019-05-25 14:09:50 JST; 4s ago
  Process: 5774 ExecStartPre=/usr/libexec/postgresql-check-db-dir postgresql (code=exited, status=0/SUCCESS)
 Main PID: 5776 (postmaster)
    Tasks: 8 (limit: 4915)
   Memory: 16.7M
   CGroup: /system.slice/postgresql.service
           ├─5776 /usr/bin/postmaster -D /var/lib/pgsql/data
           ├─5780 postgres: logger   
           ├─5783 postgres: checkpointer   
           ├─5784 postgres: background writer   
           ├─5785 postgres: walwriter   
           ├─5786 postgres: autovacuum launcher   
           ├─5787 postgres: stats collector   
           └─5788 postgres: logical replication launcher   

 5月 25 14:09:50 localhost.localdomain postmaster[5776]: 2019-05-25 14:09:50.305 JST [5776] LOG:  IPv4アドレス"127.0.0.1"、ポート5432で待ち受けています
 5月 25 14:09:50 localhost.localdomain postmaster[5776]: 2019-05-25 14:09:50.307 JST [5776] LOG:  アドレス"IPv6"に対する::1ソケットの作成に失敗しました: アドレスファミリはプロトコルによってサポートされてい >
 5月 25 14:09:50 localhost.localdomain postmaster[5776]: 2019-05-25 14:09:50.308 JST [5776] LOG:  Unixソケット"/var/run/postgresql/.s.PGSQL.5432"で待ち受けています
 5月 25 14:09:50 localhost.localdomain postmaster[5776]: 2019-05-25 14:09:50.308 JST [5776] LOG:  Unixソケット"/tmp/.s.PGSQL.5432"で待ち受けています
 5月 25 14:09:50 localhost.localdomain postmaster[5776]: 2019-05-25 14:09:50.318 JST [5776] LOG:  ログ出力をログ収集プロセスにリダイレクトしています
 5月 25 14:09:50 localhost.localdomain postmaster[5776]: 2019-05-25 14:09:50.318 JST [5776] ヒント:  ここからのログ出力はディレクトリ"log"に現れます。
# 

投稿されたコメント:

コメント
コメントは無効になっています。