PostgreSQLのテーブルスペースを移動するにはどうすればよいですか?


12

PostgreSQL 9.3のテーブルスペースをから/old/dirに物理的に移動する方法はあり/new/dirますか?mvディレクトリだけを表示して、テーブルスペースがにあることをPostgreSQLに伝えたいと思います/new/dir。以下のように見えるALTER TABLESPACEだけで名前を変更することができます。

新しいテーブルスペースを作成したり、データベースをそこに移動したりすることは避けたいです。これは、多くの時間とディスク領域を必要とする低速なコピープロセスになると思います。私はまた、シンボリックリンク避けたい/old/dir/new/dir


/ old / dirをveryold / dirに移動し、new / dirをold / dirにマウントし、データをver_old dirからold / dirにコピーしますか?
simplexio 2016

回答:


12

私はあなたのテーブルスペース名がであることを想定していますtblspc

  1. テーブルスペースのOidを取得する
test =#SELECT oid、spcname FROM pg_tablespace WHERE spcname = 'tblspc';
  oid | spcname
------- + ---------
 24580 | tblspc
(1列)
  1. postgresを停止する
$ pg_ctl -D $ PGDATA停止
  1. 古いディレクトリから新しいディレクトリにディレクトリを移動します
$ mv / old / dir / new / dir

または

$ cp -r / old / dir / new / dir
$ rm -rf / old / dir
  1. テーブルスペースのリンクを新しいディレクトリに変更する
$ cd $ PGDATA / pg_tblspc
$ rm 24580
$ ln -s / new / dir 24580
  1. postgresを起動する
$ pg_ctl -D $ PGDATA start

次に、テーブルスペースのディレクトリが変更されたことがわかります。

test =#SELECT pg_tablespace_location(24580);
 pg_tablespace_location
------------------------
 / new / dir
(1列)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.