🐡
既存環境に影響を与えずに pg_dump をインストールする
概要
既存環境に影響を与えずに pg_dump の特定バージョンをインストールした備忘です。
※PostgreSQL環境の話です
背景
DB の全テーブルを対象に、特定文字列のデータがあるかどうか調べたいということって良くありますよね。(私はあります)
その際のアプローチとして SQL でやるやり方もありますが、dump 取得して grep
する方が楽なので私はこっちをよく使います。
で、pg_dump
を使うわけですが DB が RDS 等を使っていた場合、接続元と pg_dump
のバージョンが異なっていてエラーになることもまぁ良くあります。
pg_dump: server version: 9.6.19; pg_dump version: 9.5.3
pg_dump: aborting because of server version mismatch
※バージョンは適当な数値にしています
基本的にサーババージョンは変更できないので、pg_dump
のバージョンを合わせにいくわけですが、既存環境は極力触りたくないという心理が働きます。
なので既存環境の pg_dump
はそのままに、サーババージョンと一致させた pg_dump
をインストールしたいというのが背景です。
せっかくなので、手順を残しておきます。
手順
1. PostgreSQLソースを取得
特定バージョンの pg_dump
はソースからインストールします。
ここでの例では、サーババージョンが 9.6.19
なのでそのバージョンを取得します。
サーバで直接取得した方が楽なので、上記から tar.gz
を指定してリンクをコピーしておく。
# お作法に則り /usr/local/src へ
cd /usr/local/src
wget https://ftp.postgresql.org/pub/source/v9.6.19/postgresql-9.6.19.tar.gz
# 解凍
tar xzf postgresql-9.6.19.tar.gz
cd postgresql-9.6.19
※サーバのアウトバウンド通信(https)が許可されていること
2. インストール
ソースインストールのいつものやつです。
# インストール先をつくっておく
mkdir /usr/local/postgresql-9.6.19/
# いつもの
# 上記インストール先を指定
./configure --prefix=/usr/local/postgresql-9.6.19/ --with-pgport=5432
make
make install
3. 接続確認
インストールされた pg_dump
を指定してダンプ取得できるか確認できたら完了です。
/usr/local/postgresql-9.6.18/bin/pg_dump --data-only --inserts -U <user> -h <DB_HOST> <DB_NAME> >db.dump
Discussion