О переносе базы PostgreSQL на другой диск

DmitriyPopov +13588 2713214
внимание! то, что написано ниже - точно работает в Windows Vista и более поздних версиях. Скорее всего это не будет работать в Windows XP и точно не будет работать в еще более ранних версиях Windows.

Встала тут передо мной классическая проблема - PostgreSQL выжрал кучу места на диске и захотел я его перенести на другой диск, большего объема.

Проблема стандартная - и в общем то решения описаны много где.

Но почему-то все решения в основном были из серии "сделать бекап базы, переустановить постгрес, сделать рестор", были и другие - но по трудовым и временным затратам они сравнимы.

Я не мог поверить что нет более простого и быстрого способа решить эту банальную проблему и стал думать над путями решения.
Основной путь был выбран такой: Порыться в конфигах и найти способ постфактум изменить путь к data-директории постгрес.
Порылся 5 минут, не нашел, и в этом время пришел мне в голову другой путь, который как и все супергениальное оказался мега простым и очевидным.

И путь этот называется - симлинки. В *nix системах такие задачи чаще всего через них и решаются - и вообще там использование симлинков более чем стандарт. Я давно уже не шарю полноценно в администрировании Windows-машин, но помнил что в версия Windows до 98 такого понятия не было точно. Пришлось включить поиск.

Для тех кто не понимает что такое симлинк, я очень урощенно объясню - симлинк, это ссылка на некий путь (файл/директорию), отличающийся от "ярлыка" тем - что с ним можно работать как напрямую с объектом на который он ссылается.

итак, сначала немного хабра, который рассказал о том, что симлинки в винде уже давно существуют и даже как ими пользоваться: http://habrahabr.ru/blogs/windows/50878/

А теперь конкретика.

Для того, что бы максимально просто перенести базы на другой диск нам необходимо:
1. Скачать и установить какую-либо программу которая умеет делать символические ссылки. Список программ можно получить по вышеуказанной ссылке. Я использовал плагин для Total Commander - NTFS Links.
2. Остановить сервис PostgreSQL (пуск -> в поиск вводим "Службы" (англ), жмем на найденный ярлык, находим в списке сервис PostgreSQL и нажимаем "стоп").
3. Переместить текущую папку data сервера PostgreSQL туда, где мы хотим что бы она была.
4. В старом месте с помощью созданной программы создаем симлинк на перемещенную папку.
5. Запускаем снова сервис PostgreSQL.

И все.
Ровно 5 очень простых шагов которые приводят за час (столько времени у меня заняло копирование >100GB базы) к нужному Вам результату, без всяких гигантских бекапов и переустановок сервера.
45

Бонусы Pokeroff

Holdem Manager 2 в подарок!
VIP
Групповые тренировки с ПРО
Курс МТТ от гения
27 комментариев
    Добавить комментарий
    Комментировать без регистрации
      

    На указанную почту придет ссылка для подтверждения

    Отменить

    Узнай первым
    о важных новостях

    Мы будем присылать уведомления
    горячих новостях и статьях!

    Так будут выглядеть оповещения, которые появятся на экране.

    Хочу знать!Буду оставаться в неведении

    Livechat