PostgreSQLでデータディレクトリを変更して起動する方法
PostgreSQLをローカルで使っていると、通常と別のデータディレクトリから読み込ませたり、データディレクトリを切り替えながら使用したいことがある。その方法のメモ。
環境:PostgreSQL 10.2 64bit
1. サービス登録の解除
インストールするとデフォルトでサービスに登録されているので、サーバーの停止と自動起動の解除を行う。
コントロールパネルを「サービス」で検索し、サービス(ローカル)の管理画面を開く。postgresqlを探し、状態を「停止」、スタートアップの種類を「手動」にする。
これでサーバーの起動、終了を基本的にコマンドラインから行うことになる。
2. データベースクラスタの作成
PostgreSQLはMongoDBのように空のディレクトリを指定して起動すると勝手に初期化してくれないので、データベースクラスタを作成する必要がある。
デフォルトのデータディレクトリをコピー(おすすめ)
ちょっと邪道だが、デフォルトのデータディレクトリを特に使っていない場合、デフォルトのデータディレクトリ(初期設定では「C:\Program Files\PostgreSQL\10\data」フォルダ)をそのままエクスプローラーでコピーするのが速い。コピーすればそのまま起動オプションに指定して起動できる。
initdbコマンドでデータベースクラスタの初期化
こっちが正攻法。テキスト検索設定がよくわからなかったがとりあえずこのコマンドでよさそう。この例では「D:\psql\newdb」フォルダに作るものとする。
initdb --encoding=UTF8 --no-locale --username=postgres --pwprompt -D D:\psql\newdb
encodingとlocale(no-localeの場合はロケールCに設定される)とusername=postgresは設定したほうがよさそう。pwpromptオプションを入れるとパスワード認証ありになるが、パスワード認証が不要なら特に必要はない。
3. データベースの起動
コマンドラインからデータベース・サーバーを起動する。
> pg_ctl start -D D:\psql\newdb
そのままコンソールでクライアントとしてログイン、ログアウトする場合は、
> psql -U postgres #ログイン postgres=# \q #ログアウト
サーバーの終了は以下の通り。
> pg_ctl stop -D D:\psql\newdb
PostgreSQLでもデータディレクトリを切り替えながら使うことができるらしい。