Как мне перенести базу данных PostgreSQL на новый жесткий диск?
Если у Вас PostgreSQL установлен на системном диске C, но вы хотите переместить базы данных на другой раздел или внешний жесткий диск, т.к на диске C мало места, это может быть сделано без переустановки PostgreSQL.
Первым делом, остановите службу PostgreSQL на время переноса.
Windows XP
Пуск > Панель Управления> Администрирование > Службы
Windows Vista/W7
Пуск > Поиск > Службы
Вам нужно, чтобы открылось такое окно:
Щелкните правой кнопкой мыши по службе PostgreSQL и выберите в меню «Стоп» для остановки службы.
Затем создайте на том диске куда вы хотите перенести базу папку Program Files в ней PostgreSQL и в ней data. Должен получиться путь I:/Program Files/PostgreSQL/data
Далее скопируйте или переместите все данные из первоначальной папки c:/program files/PostgreSQL/8.3/data в новую созданную Вами I:/Program Files/PostgreSQL/data. Это может занять много времени.
Редактирование реестра:
Теперь мы должны указать PostgreSQL новую папку расположения данных, а для этого нам нужно внести изменения в реестр
Windows XP
Перейдите Пуск > Выполнить и в текстовом поле наберите команду regedit, нажмите enter, должно открыться следующее окно:
Windows Vista/W7
Перейдите Пуск> Все программы>Стандартные > Выполнить и в текстовом поле наберите команду regedit, нажмите enter, должно открыться следующее окно:
В левой панели откройте папку : HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/pgsql-8.3, см. картинку ниже:
На картинке красной линией обведен ключ, который нужно изменить. Щелкните правой кнопкой мыши по имени ключа и выберите «Изменить», откроется окно со значением ключа:
«C:/Program Files/PostgreSQL/8.3/bin/pg_ctl.exe» runservice -w -N «pgsql-8.3» -D «C:/Program Files/PostgreSQL/8.3/data/»
Теперь Вам нужно изменить только часть, выделенную жирным шрифтом. Вы переместили базу и должны указать PostgreSQL новый путь, именно он и выделен. Нельзя допустить ошибку в пути, поэтому можно сделать так: открыть в проводнике нашу папку /data и кликнуть правой кнопкой мыши по любому файлу и выбрать Свойства, откроется такое окно:
В строке «Размещение» будет написан полный путь к папке, который нужно выделить и скопировать. И после этого вставить его вместо выделенной части ключа в реестре. Старый ключ выглядел так:
«C:/Program Files/PostgreSQL/8.3/bin/pg_ctl.exe» runservice -w -N «pgsql-8.3» -D «C:/Program Files/PostgreSQL/8.3/data/»
Должно получиться так:
«C:/Program Files/PostgreSQL/8.3/bin/pg_ctl.exe» runservice -w -N «pgsql-8.3» -D «I:/Program Files/PostgreSQL/8.3/data/»
Это все. Закройте все окна и перезагрузите компьютер.
Если перенесенная база данных работает нормально можно удалить исходную папку /data на диске C, если Вы не сделали этого раньше.