Назад | Перейти на главную страницу

Как восстановить копию базы данных PostgreSQL на уровне файловой системы (не дамп) на другой компьютер

Я новичок в PostgreSQL. Мне нужно восстановить базу данных, которая работала на машине Windows XP.

У меня есть zip-папка postgres.

Я извлек установку postgres на другом ПК, начал использовать initDB и создал новую базу данных, мне удалось войти в систему, но я не вижу никаких старых таблиц.

Не могли бы вы опубликовать шаги, которые вы использовали для запуска сервера на другом компьютере с Windows XP, и как восстановить таблицы и данные в старой папке данных?

В идеале вы бы сделали дамп с помощью pg_dump, что упростило бы задачу. Плохие офисные люди, без печенья.

Поскольку у вас есть двоичные файлы из одного и того же выпуска, вы можете сэкономить некоторые хлопоты.

  • Разархивируйте каталог резервных копий в удобное место, где у вас есть полные права на чтение и запись в качестве обычной учетной записи. Я предполагаю, что это на вашем рабочем столе: C:\Users\Myusername\Desktop\postgresql - для этого примера.

Предполагая, что c:\users\myusername\desktop\postgresql папка содержит папки с именем bin, data, lib, и т.д:

  • Откройте cmd.exe оболочка

  • cd Desktop\postgresql

  • bin\pg_ctl.exe start -D C:\users\myusername\desktop\postgresql\data

  • bin\psql.exe -U mydbusername mydb

Если psql подключает OK, отключитесь от \q затем быстро сделайте дамп базы данных:

  • bin\pg_dump.exe -Fc -U mydbusername -f mydb.dbbackup mydb

... и восстановите это до современной версии PostgreSQL, используя pg_restore из текущей версии.

Если у вас есть проблемы с восстановлением до более новых выпусков, таких как 9.0 или 9.1, вам, возможно, придется использовать pg_dump из более новой версии для подключения к старой базе данных и создания дампа, а не использовать pg_dump из 8.2 для создания дампа. Вы можете скопировать pg_dump с новой машины на старую, если не хотите настраивать дамп по сети; просто скопируйте весь каталог bin из новой версии PostgreSQL куда-нибудь на старую машину и запустите pg_dump оттуда. Копирование только pg_dump.exe не будет работать, так как для этого требуется libpq и другие библиотеки.

Пожалуйста, сделай не постарайтесь продолжить работу 8.2, которая является устаревшей и неподдерживаемой версией. Перейти на 9.0 или 9.1. Это может потребовать некоторых изменений в вашем коде; увидеть примечания к выпуску для каждого основного выпуска .0 после вашего, например, 8.3.0, 8.4.0, 9.0.0 и 9.1.0 для информации об обновлении.

Теперь быстро исправьте процедуры резервного копирования, чтобы запланировать ежедневный pg_dump, чтобы с вами больше никогда не повторилось.

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

  • Установить PostgreSQL 8.2. Да, это ДОЛЖНО быть 8.2.x. Никакая другая версия не подойдет для этой цели, поскольку файлы необработанных данных PostgreSQL совместимы только в пределах той же основной версии. Поскольку это такая старая версия, она может не сосуществовать с уже установленными текущими версиями, поэтому вам, возможно, придется использовать запасную машину или виртуальную машину.

  • После того, как вы установили 8.2 и знаете, что он работает с пустой базой данных, созданной установщиком, выключите его из панели управления службами (start -> run -> services.msc)

  • Переименуйте каталог данных во что-то вроде data-empty. Я думаю это C:\Program Files\PostgreSQL\8.2\data для 8.2, но точно не могу вспомнить.

  • Разархивируйте свой старый каталог данных в место, откуда вы только что переместили каталог данных, созданный установщиком, чтобы он имел то же имя и расположение. Возможно, вам действительно придется распаковать его в другом месте, а затем переместить на место, если вы используете учетную запись администратора без прав администратора или UAC.

  • Получить свойства в распакованном каталоге данных. На вкладке безопасности предоставьте пользователю "postgres" полный контроль и примените его ко всем файлам и папкам внутри. Это важно; база данных не будет работать без правильных разрешений, а распакованная копия не будет иметь правильных разрешений.

  • Запустите службу PostgreSQL из services.msc

  • Убедитесь, что служба запустилась правильно. Если этого не произошло, поищите информацию о причинах в средстве просмотра событий. Также проверьте журналы в pg_log каталог datadir и убедитесь, что все выглядит разумно, там нет ошибок.

  • Попробуйте связаться с psql и посмотрите, сможете ли вы получить доступ к своим данным. Если можете, следуйте совету выше, чтобы сделать дамп. Не продолжайте использовать устаревшую версию базы данных.

На меня работал Крейг Рингер.

Но для тех из вас, у кого возникают трудности с установкой Postgresql 8.2 на Windows 10, как и у меня, я предлагаю создать для этого виртуальное окно Windows XP.

Сделать это с помощью инструмента Postgres.app было невероятно просто.

Просто зашел в настройки, изменил каталог данных и перезапустил сервер. Вот и все. Я очень удивлен. Думаю, в моем случае версии были идентичны.