[pgsql-jp: 41201] Re: NASへのデータベース作成について

FUKUSHIMA Katsuaki kfukushima @ sis.seino.co.jp
2012年 8月 29日 (水) 09:56:38 JST


福島です

(2012/08/28 18:26), Yu Oasa wrote:
> 素朴な疑問なんですが、UNCを理解できないだけならば、UNCに対する
> シンボリックリンクを mklink でローカルディスク上に作成した場合
> はどうなるんでしょうね。

派生スレッドにてレジストリを変更することで、データベースクラスタの指
定に UNC が指定できるということが指摘されましたので、そちらについて
は解決していますが、シンボリックリンクについても試してみました。
こちらについては制限付きで動作可能でした。

データベースクラスタのディレクトリ data そのもののシンボリックリンク
を作成した場合はうまく動作しませんでしたが、階層が1つ上のディレクト
リのシンボリックリンクを作成した場合は動作しました。

駄目なパターン
サービスを停止しておいて、以下でクラスタごとコピーしておきます。
C:\Program Files\PostgreSQL\9.1>xcopy /S /E data
\\isln-1\share\work\pgsql\data

ローカルのクラスタを削除します。
C:\Program Files\PostgreSQL\9.1>rd /s data

以下でシンボリックリンクを作成。
C:\Program Files\PostgreSQL\9.1>mklink /D data
\\isln-1\share\work\pgsql\data

サービスを開始しましたが起動しないため、postgres ユーザにて pg_ctl
で起動を試みました。
C:\Program Files\PostgreSQL\9.1>bin\pg_ctl start -D data
サーバは起動中です。

C:\Program Files\PostgreSQL\9.1>2012-08-29 00:38:44 GMT FATAL:  data
directory "
C:/Program Files/PostgreSQL/9.1/data" does not exist

上記のように、シンボリックリンクによるディレクトリ参照がうまくできな
いようです。

うまくいくパターン
以下で1つ上位のディレクトリのシンボリックリンクを作成。
C:\Program Files\PostgreSQL\9.1>mklink /D pgsql
\\isln-1\share\work\pgsql

レジストリエディタで
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\postgresql-9.1
以下の ImagePath を
C:/Program Files/PostgreSQL/9.1/bin/pg_ctl.exe runservice -N
"postgresql-9.1" -D "C:/Program Files/PostgreSQL/9.1/data" -w
から
C:/Program Files/PostgreSQL/9.1/bin/pg_ctl.exe runservice -N
"postgresql-9.1" -D "C:/Program Files/PostgreSQL/9.1/pgsql/data" -w
に変更し、サービスを開始することで実現できました。

福島克輝



pgsql-jp メーリングリストの案内