Postgresql где хранятся базы windows
293451 просмотра
12 ответа
Где хранятся файлы для базы данных PostgreSQL?
Ответы (12)
312 плюса
Чтобы увидеть, где находится каталог данных, используйте этот запрос.
Чтобы увидеть все параметры времени выполнения, используйте
Вы можете создавать табличные пространства для хранения объектов базы данных в других частях файловой системы. Чтобы увидеть табличные пространства, которые могут отсутствовать в этом каталоге данных, используйте этот запрос.
54 плюса
На Windows7 все базы данных называют числом в файле с именем pg_database под C:\Program Files (x86)\PostgreSQL\8.2\data\global . Затем вы должны найти имя папки по этому номеру в C:\Program Files (x86)\PostgreSQL\8.2\data\base . Это содержание базы данных.
27 плюса
Откройте pgAdmin и перейдите в Свойства для конкретной базы данных. Найдите OID и откройте каталог
Там должны быть ваши файлы БД.
23 плюса
Под моей установкой Linux это здесь: /var/lib/postgresql/8.x/
Вы можете изменить это с initdb -D «c:/mydb/»
Автор: Sadegh Размещён: 16.07.2009 11:59
21 плюса
Как указано в разделе « Расположение базы данных PostgreSQL по умолчанию в Linux », в Linux вы можете узнать, используя следующую команду:
14 плюса
Расположение определенных таблиц / индексов может быть отрегулировано с помощью TABLESPACE:
Автор: ymv Размещён: 16.07.2009 12:14
11 плюса
На Mac: /Library/PostgreSQL/9.0/data/base
Каталог не может быть введен, но вы можете посмотреть содержимое через: sudo du -hc data
Автор: evgeni Размещён: 01.03.2011 03:33
11 плюса
Postgres хранит данные в файлах в своем каталоге данных. Выполните следующие шаги, чтобы перейти к базе данных и ее файлам:
База данных, соответствующая файлу таблицы postgresql, является каталогом. Расположение всего каталога данных можно получить, запустив SHOW data_directory . в UNIX-подобной ОС (например, Mac) /Library/PostgreSQL/9.4/data Перейдите в базовую папку в каталоге данных, в котором есть все папки базы данных: /Library/PostgreSQL/9.4/data/base
Найдите имя папки базы данных, выполнив (Дает целое число. Это имя папки базы данных):
Найдите имя файла таблицы, выполнив (Дает целое число. Это имя файла):
Это бинарный файл. Детали файла, такие как размер и время создания, можно получить как обычно. Для получения дополнительной информации прочитайте эту тему
10 плюса
Все уже ответили, но только за последние обновления. Если вы хотите узнать, где находятся все файлы конфигурации, выполните эту команду в оболочке.
6 плюса
Могу поспорить, что вы задаете этот вопрос, потому что вы попробовали pg_ctl start и получили следующую ошибку:
pg_ctl: каталог базы данных не указан и переменная окружения PGDATA не установлена
Другими словами, вы ищете каталог, который нужно добавить -D в вашу pg_ctl start команду.
В этом случае каталог, который вы ищете, содержит эти файлы.
Вы можете найти его, найдя любой из файлов и каталогов выше, используя поиск, предоставляемый вашей ОС.
Например, в моем случае ( установка HomeBrew на Mac OS X ) эти файлы находятся в /usr/local/var/postgres . Для запуска сервера я набираю:
Автор: xagg Размещён: 17.08.2015 04:33
5 плюса
В Windows каталог PGDATA, который описывают документы PostgresSQL, находится где-то вроде C:\Program Files\PostgreSQL\8.1\data . Данные для конкретной базы данных находятся под (например) C:\Program Files\PostgreSQL\8.1\data\base\100929 , где, я думаю, 100929 — это номер базы данных.
Автор: Ben Hoyt Размещён: 14.09.2009 10:01
0 плюса
Пикмат ответ правильный. на windows расположение основной папки БД (по крайней мере на моей установке)
а не в программных файлах.
его 2 сценария, даст вам точный каталог / файл (ы) вам нужно:
мой находится в datname 16393 и relfilenode 41603
Перенос баз PostgreSQL на другой диск Windows
1. Останавливаем сервис postgresql.
Пуск — Выполнить, вводим services.msc и жмём Enter. Находим PostgreSQL Database Server, кликаем правой кнопкой мыши, и нажимаем Остановить.
2. Переносим базы.
Выбираем диск, на который необходимо перенести базы. Например диск E. На этом диске создаём папку PostgreSQL\data. В эту папку копируем содержимое папки, которая создалась по умолчанию при установке PostgreSQL — C:\Program Files (x86)\PostgreSQL\9.1.2-1.1C\data.
3. Меняем путь к базам в реестре Windows.
Пуск — Выполнить, вводим regedit и жмём Enter.
В редакторе реестра переходим к ключу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pgsql-9.1.2-1.1C и открываем для изменения строковой параметр ImagePath. В нем меняем путь к базам.
Старый путь обычно выглядит так — «C:\Program Files (x86)\PostgreSQL\9.1.2-1.1C\bin\pg_ctl.exe» runservice -w -N «pgsql-9.1.2-1.1C» -D «C:\Program Files (x86)\PostgreSQL\9.1.2-1.1C\data\»
Параметр -D указывает на директорию где хранятся наши базы, поэтому меняем ее на — «E:\PostgreSQL\data\»
То есть полная строка будет выглядеть примерно так — «C:\Program Files (x86)\PostgreSQL\9.1.2-1.1C\bin\pg_ctl.exe» runservice -w -N «pgsql-9.1.2-1.1C» -D «E:\PostgreSQL\data\»
4. Запускаем сервис postgresql.
Перед тем как запустить службу postgresql необходимо убедиться, что пользователь от имени которого стартует служба, должен иметь полные права на папку E:\PostgreSQL, иначе служба просто не запустится.
Пуск — Выполнить, вводим services.msc и жмём Enter. Находим PostgreSQL Database Server, кликаем правой кнопкой мыши, и нажимаем Запустить.
Если все сделали правильно, то на этом все.
Затвитить пост!
Postgresql где хранятся базы windows
Этот раздел описывает формат хранения на уровне файлов и каталогов.
Файлы конфигурации и файлы данных, используемые кластером базы данных, традиционно хранятся вместе в каталоге данных кластера, который обычно называют PGDATA (по имени переменной среды, которую можно использовать для его определения). Обычно PGDATA находится в /var/lib/pgsql/data . На одной и той же машине может находиться множество кластеров, управляемых различными экземплярами сервера.
В каталоге PGDATA содержится несколько подкаталогов и управляющих файлов, как показано в Таблице 65.1. В дополнение к этим обязательным элементам конфигурационные файлы кластера postgresql.conf , pg_hba.conf и pg_ident.conf традиционно хранятся в PGDATA , хотя их можно разместить и в другом месте.
Таблица 65.1. Содержание PGDATA
Элемент | Описание |
---|---|
PG_VERSION | Файл, содержащий номер основной версии PostgreSQL |
base | Подкаталог, содержащий подкаталоги для каждой базы данных |
global | Подкаталог, содержащий общие таблицы кластера, такие как pg_database |
pg_commit_ts | Подкаталог, содержащий данные о времени фиксации транзакций |
pg_clog | Подкаталог, содержащий данные о состоянии транзакции |
pg_dynshmem | Подкаталог, содержащий файлы, используемые подсистемой динамически разделяемой памяти |
pg_logical | Подкаталог, содержащий данные о состоянии для логического декодирования |
pg_multixact | Подкаталог, содержащий данные о состоянии мультитранзакций (используемые для разделяемой блокировки строк) |
pg_notify | Подкаталог, содержащий данные состояния прослушивания и нотификации (LISTEN/NOTIFY) |
pg_replslot | Подкаталог, содержащий данные слота репликации |
pg_serial | Подкаталог, содержащий информацию о выполненных сериализуемых транзакциях. |
pg_snapshots | Подкаталог, содержащий экспортированные снимки (snapshots) |
pg_stat | Подкаталог, содержащий постоянные файлы для подсистемы статистики. |
pg_stat_tmp | Подкаталог, содержащий временные файлы для подсистемы статистики |
pg_subtrans | Подкаталог, содержащий данные о состоянии подтранзакций |
pg_tblspc | Подкаталог, содержащий символические ссылки на табличные пространства |
pg_twophase | Подкаталог, содержащий файлы состояний для подготовленных транзакций |
pg_xlog | Подкаталог, содержащий файлы WAL (журнал предзаписи) |
postgresql.auto.conf | Файл, используемый для хранения параметров конфигурации, которые устанавливаются при помощи ALTER SYSTEM |
postmaster.opts | Файл, содержащий параметры командной строки, с которыми сервер был запущен в последний раз |
postmaster.pid | Файл блокировки, содержащий идентификатор (ID) текущего управляющего процесса (PID), путь к каталогу данных кластера, время запуска управляющего процесса, номер порта, путь к каталогу Unix-сокета (пустой для Windows), первый корректный адрес прослушивания (listen_address) (IP-адрес или * , либо пустое значение в случае отсутствия прослушивания по TCP), и ID сегмента разделяемой памяти (этот файл отсутствует после остановки сервера). |
Для каждой базы данных в кластере существует подкаталог внутри PGDATA /base , названный по OID базы данных в pg_database . Этот подкаталог по умолчанию является местом хранения файлов базы данных; в частности, там хранятся её системные каталоги.
Каждая таблица и индекс хранятся в отдельном файле. Для обычных отношений, эти файлы получают имя по номеру файлового узла таблицы или индекса, который содержится в pg_class . relfilenode . Но для временных отношений, имя файла имеет форму t BBB _ FFF , где BBB — идентификатор серверного процесса сервера, который создал данный файл, а FFF — номер файлового узла. В обоих случаях, помимо главного файла (также называемого основным слоем), у каждой таблицы и индекса есть карта свободного пространства (см. Раздел 65.3), в которой хранится информация о свободном пространстве в данном отношении. Имя файла карты свободного пространства образуется из номера файлового узла с суффиксом _fsm . Также таблицы имеют карту видимости, хранящуюся в слое с суффиксом _vm , для отслеживания страниц, не содержащих мёртвых записей. Карта видимости подробнее описана в Разделе 65.4. Нежурналируемые таблицы и индексы имеют третий слой, так называемый слой инициализации, имя которого содержит суффикс _init (см. Раздел 65.5).
Внимание
Заметьте, что хотя номер файла таблицы часто совпадает с её OID, так бывает не всегда; некоторые операции, например, TRUNCATE , REINDEX , CLUSTER и некоторые формы команды ALTER TABLE могут изменить номер файла, но при этом сохранят OID. Не следует рассчитывать, что номер файлового узла и OID таблицы совпадают. Кроме того, для некоторых системных каталогов, включая и pg_class , в pg_class . relfilenode содержится ноль. Фактический номер файлового узла для них хранится в низкоуровневой структуре данных, и его можно получить при помощи функции pg_relation_filenode() .
Когда объём таблицы или индекса превышает 1 GB, они делятся на сегменты размером в один гигабайт. Файл первого сегмента называется по номеру файлового узла (filenode); последующие сегменты получают имена filenode.1, filenode.2 и т. д. При такой организации хранения не возникает проблем на платформах, имеющих ограничения по размеру файлов. (На самом деле, 1 ГБ — лишь размер по умолчанию. Размер сегмента можно изменить при сборке PostgreSQL , используя параметр конфигурации —with-segsize .) В принципе, карты свободного пространства и карты видимости также могут занимать нескольких сегментов, хотя на практике это маловероятно.
У таблицы, столбцы которой могут содержать данные большого объёма, будет иметься собственная таблица TOAST, предназначенная для отдельного хранения значений, которые слишком велики для хранения в строках самой таблицы. Основная таблица связывается с её таблицей TOAST (если таковая имеется) через pg_class . reltoastrelid . За подробной информацией обратитесь к Разделу 65.2.
Содержание таблиц и индексов рассматривается ниже (см. Раздел 65.6).
Табличное пространство делает сценарий более сложным. Каждое пользовательское табличное пространство имеет символическую ссылку внутри каталога PGDATA /pg_tblspc , указывающую на физический каталог табличного пространства (т. е., положение, указанное в команде табличного пространства CREATE TABLESPACE ). Эта символическая ссылка получает имя по OID табличного пространства. Внутри физического каталога табличного пространства имеется подкаталог, имя которого зависит от версии сервера PostgreSQL , как например PG_9.0_201008051 . (Этот подкаталог используется для того, чтобы последующие версии базы данных могли свободно использовать одно и то же местоположение, заданное в CREATE TABLESPACE .) Внутри каталога конкретной версии находится подкаталог для каждой базы данных, которая имеет элементы в табличном пространстве, названный по OID базы данных. Таблицы и индексы хранятся внутри этого каталога, используя схему именования файловых узлов. Табличное пространство pg_default недоступно через pg_tblspc , но соответствует PGDATA /base . Подобным же образом, табличное пространство pg_global недоступно через pg_tblspc , но соответствует PGDATA /global .
Функция pg_relation_filepath() показывает полный путь (относительно PGDATA ) для любого отношения. Часто это избавляет от необходимости запоминать многие из приведённых выше правил. Но следует помнить, что эта функция выдаёт лишь имя первого сегмента основного слоя отношения, т. е. возможно, понадобится добавить номер сегмента и/или _fsm , _vm или _init , чтобы найти все файлы, связанные с отношением.
Временные файлы (для таких операций, как сортировка объёма данных большего, чем может уместиться в памяти) создаются внутри PGDATA /base/pgsql_tmp или внутри подкаталога pgsql_tmp каталога табличного пространства, если для них определено табличное пространство, отличное от pg_default . Имя временного файла имеет форму pgsql_tmp PPP . NNN , где PPP — PID серверного процесса, а NNN служит для разделения различных временных файлов этого серверного процесса.