複数バージョンのPostgreSQLを入れる2

postgresql
この記事は約5分で読めます。

拙作なツールですが、複数バージョンのPostgreSQLをローカルマシンに入れて、テストや動作確認でバージョンを切り替えたりするツールを以前に作成したことがありましたが、色々と使い勝手も含めて改良したいなあと思っていたこともあり、今回新たに作り直してみました。

動作確認は自分のMac環境でしかできていませんが、それなりに動いて重宝しているので、以下に概要をまとめてみました。

pgenv2

GitHub - moritetu/pgenv2: pgenv2 is a tool to help you to manage multiple PostgreSQL versions.
pgenv2 is a tool to help you to manage multiple PostgreSQL versions. - moritetu/pgenv2

動作環境

  • Bash 4.2 or later(4.4以上を推奨)

インストール

リポジトリをクローンして、install.shでパスを通すだけです。設置場所は、任意です。

機能

今のところ以下ができます。ざっくりと言うと、xxenvと言われるソフトウェアと類似の機能があります。

  • PostgreSQLのインストール(ソースアーカイブをダウンロードしてビルド)
  • インストールした複数バージョンのPostgreSQLの切り替え
  • ローカルマシン上でのレプリケーション環境の構築

利用可能なバージョン一覧の表示

公式サイトのWebページからリリースされているバージョン一覧を取得して表示します。

インストール時に、ここで表示されるバージョンを指定します。

指定のバージョンのPostgreSQLをインストールする

pgenv versionsで利用可能なバージョン一覧を確認できたら、次はインストールします。以下では、10.1をインストールしています。

コマンドを実行すると、10.1のソースアーカイブをダウンロードして、展開、configuremakeと実行していきます。ビルドのログは、pgenv/logsにバージョンの名前で出力されます。

configureのオプションは、pgenv/configure_optionsにデフォルトの条件が書いてあります。pgenvのconfigureコマンドで編集ができます。$EDITORで指定されるエディタでファイルを編集します。

無事にインストールできたら、以下でバージョン確認ができます。

上記では、現在10.3が有効ですが、10.1に切り替えてみます。

切り替わったか確認します。

インストール場所を確認してみます。

レプリケーション環境の構築

PostgreSQLには、レプリケーション機能がありますが、サクッと手元で環境を構築し、動作確認したいことがあります。pgenv2には、そういった機能があります。

1対1の同期レプリケーションを組みたい場合、以下のようにできます。

上記例では、fooというディレクトリに、各種インスタンスディレクトリが作成されます。

プライマリは「primary」、同期スタンバイは「standby」としています。各ノードの設定は、基本的に外出しで、includeパラメータで読み込ませています。port番号は、デフォルトでは24312から順にインクリメントして使用しています。

以下で構築した環境の状態を確認してみます。primary -> standbyはレプリケーション関係を示しています。pg_stat_replicationビューの情報をもとにしています。

別ターミナルで、各種インスタンスのログを表示しておきます。

続いて、スタンバイを昇格させてみます。

ログも出力されていることを確認します。

レプリケーション状態を見てみます。

続けて、standbyに新しく非同期スタンバイを追加してみます。

非同期スタンバイを起動します。非同期スタンバイ追加時にも-Sオプションで同時に起動できます。

レプリケーション状態を確認してみます。

別の方法でも確認してみます。

インスタンスを停止します。

昇格させたstandbyと非同期レプリケーションstandby2のみを起動します。

状態を確認してみます。

と、こんな感じでレプリケーションの動作確認を手元ですぐに確認できます。

ちょっとした拡張機能の確認

コメント

タイトルとURLをコピーしました