Я новичок в 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 было невероятно просто.
Просто зашел в настройки, изменил каталог данных и перезапустил сервер. Вот и все. Я очень удивлен. Думаю, в моем случае версии были идентичны.