Як перемістити табличний простір PostgreSQL?


12

Чи є спосіб фізично перемістити простір таблиць PostgreSQL 9.3 з /old/dirв /new/dir? Я хотів би просто додати mvкаталог і сказати PostgreSQL, що тепер знаходиться табличний простір /new/dir. Схоже, ALTER TABLESPACEлише ви можете перейменовувати.

Я хотів би уникати створення нового простору таблиць і переміщення до нього бази даних. Я припускаю, що це був би повільний процес копіювання, який вимагає багато часу та місця на диску. Я також хочу , щоб уникнути символічного посилання /old/dirна /new/dir.


перейти / старий / dir в дужеold / dir, встановити new / dir на old / dir, скопіювати дані з ver_old dir в old / dir?
симплексіо

Відповіді:


12

Я припускаю, що назва вашого простору таблиць tblspc.

  1. Отримайте вихід зі свого простору таблиць
test = # SELECT oid, spcname FROM pg_tablespace WHERE spcname = 'tblspc';
  oid | spcname
------- + ---------
 24580 | tblspc
(1 ряд)
  1. Зупиніть постгреси
$ pg_ctl -D $ PGDATA зупинка
  1. Переміщення каталогу зі старого до нового
$ mv / старий / dir / new / dir

або

$ cp -r / старий / dir / new / dir
$ rm -rf / старий / реж
  1. Змініть посилання таблиці на новий каталог
$ cd $ PGDATA / pg_tblspc
24580 доларів США
$ ln -s / new / dir 24580
  1. Почати постгреси
$ pg_ctl -D $ PGDATA старт

Потім ви можете побачити, що каталог таблиць змінився.

test = # SELECT pg_tablespace_location (24580);
 pg_tablespace_location
------------------------
 / новий / реж
(1 ряд)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.