Меню Рубрики

Linux postgresql где хранятся базы

Расположение базы данных PostgreSQL по умолчанию в Linux

каков каталог по умолчанию, в котором PostgreSQL будет хранить все базы данных в Linux?

5 ответов

в «каталог, где postgresql будет хранить все базы данных «(и конфигурация) называется » каталог данных «и соответствует тому, что PostgreSQL называет (немного смущенно)»кластер базы данных», который не связан с распределенными вычислениями, это просто группа баз данных и связанных объектов, управляемых сервером PostgreSQL.

расположение каталога данных зависит от распределения. Если вы устанавливаете из источника, по умолчанию /usr/local/pgsql/data :

в терминах файловой системы база данных кластер будет представлять собой единый каталог под которой будут храниться все данные. Мы называем это каталогом данных или область данных. Это полностью зависит от вас где вы решите хранить свои данные. По умолчанию нет, хотя такие места, как / usr / local/pgsql / data или /var/lib/pgsql / data пользуются популярностью. (ref)

кроме того, связан экземпляр запущенного сервера PostgreSQL в один кластер; расположение его каталога данных может быть передано демону сервера («почт» или » postgres») в -D опция командной строки или PGDATA переменная среды (обычно в области работающего пользователя, обычно postgres ). Обычно вы можете увидеть работающий сервер с чем-то вроде этого:

обратите внимание, что можно, хотя и не очень часто, запускать два экземпляра одного и того же сервера PostgreSQL (тот же двоичные файлы, разные процессы), которые обслуживают разные «кластеры» (каталоги данных). Конечно, каждый экземпляр будет прослушивать свой собственный порт TCP/IP.

по крайней мере в Gentoo Linux и Ubuntu 14.04 по умолчанию.

вы можете найти postgresql.conf и посмотрите на param data_directory . Если он прокомментирован, то каталог базы данных совпадает с этим каталогом файла конфигурации.

по умолчанию в Debian 8.1 и PostgreSQL 9.4 после установки с помощью менеджера пакетов apt-get

Источник

В какой папке находятся созданные таблицы PostgreSQL?

Нужно очистить таблицу на сервере, но т.к. данные на ней еще нужны, то надо как-то перенести ее на компьютер.
Проблема в том, что перерыл возможные места, но кроме как файлов самой PostrgeSQL ничего не нашел. В гуглах пишут про папку data, в которой якобы должны находиться те самые таблицы, но и этой папки не было найдено.
Сервер на Ubuntu 16.04. Собственно где я был:

usr/lib/postgresql
var/lib/postgresql
etc/postgresql

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

поэтому проще будет найти файлы и все попереносить.

И так делать нельзя и ничего кроме бесполезного файлика с бинарным мусором вы в резуультате не получите.
Прочитать данные из raw файлика, а уж тем более подсунуть его в другую базу — очень сильно замучается даже опытный DBA, способный читать и понимать исходный код postgresql (это кстати минимальное требование к тому чтобы что-то достать из сырого файлика таблицы).

Потому что директория базы PostgreSQL — это один неделимый объект (плюс tablespace, которые отделять тоже нельзя от данных кластера). Для чтения данных из файлов таблицы (их много может быть) нужен системный каталог, нужен toast (если был создан), нужны clog и xlog чтобы понять, а что мы собственно в этом файлике видеть должны, а что просто ещё не вычистил вакуум.

Если вам нужны данные из конкретной таблички — сделайте логический снимок таблички уже упомянутым pg_dump.

Источник

как задать местоположение базы postgres на linux

Перенос журналов транзакций может быть осуществлён очень просто. Допустим, что мы подключили второй жесткий диск, отформатировали его в файловую систему ext3 и подключили в каталог /mnt/hdd2. Теперь вам необходимо выполнить всего несколько команд, и журналы транзакций будут перемещены:

# service postgresql stop
# mv /var/lib/pgsql/data/pg_xlog /mnt/hdd2
# ln -s /mnt/hdd2/pg_xlog /var/lib/pgsql/data/pg_xlog
# service postgresql start

Перенос баз данных необходимо осуществлять в крайнем случае. Например, когда нагрузка стала критической, и нет возможности провести модернизацию аппаратных ресурсов. Принцип такой же, как и в случае с журналами транзакций. Необходимо только знать, где хранятся файлы базы данных. Все базы данных размещены в каталоге /var/lib/pgsql/data/base, но каталог каждой базы называется не именем, а её идентификатором. Чтобы узнать идентификатор переносимой базы, переключитесь в учётную запись пользователя postgres и воспользуйтесь следующей командой:

$ psql -A -q -t -c «select oid from pg_database where datname=’DBNAME'»

Источник

Перемещение базы данных postgresql в Ubuntu

При установка на Ubuntu zabbix-server база данных по умолчанию пишется в папку /var/lib/postgresql . Со временем база растёт и поднимается вопрос переноса её на другой раздел диска. Перенесём базу данных в /opt/postgresql .

Требования

  • ОС Ubuntu 18.04 LTS. Или Ubuntu 16.04.
  • Работаем из-под root.
  • Сервер PostgreSQL
  • Сервер zabbix. Не обязательно.

Подготовка

Проверим где находится текущая БД postgresql.

psql (9.5.14)
Type «help» for help.

БД находится в папке /var/lib/postgresql/9.5/main .

Для переноса БД нам понадобится rsync:

Убедимся что существует директория /opt .

Остановка сервисов

service zabbix-server stop
systemctl stop postgresql

Проверка статуса postgresql.

Ищем строку «Stopped PostgreSQL RDBMS.»

Перенос файлов базы данных

После переноса переименуем старую папку, на всякий случай:

mv /var/lib/postgresql/9.5/main /var/lib/postgresql/9.5/main.bak

Настройка конфигурации postgresql

Правим файл postgresql.conf:

Изменяем значение data_directory:

Запуск сервисов

Проверяем где находится текущая БД postgresql.

psql (9.5.14)
Type «help» for help.

БД находится в папке /opt/postgresql/9.5/main .

Удаление ненужных файлов

Если вам понравилась статья, то ставьте 👍🏻 каналу. Пишите комментарии, задавайте вопросы, подписывайтесь.

Источник

Куда Postgres файлы кладёт. И как это место изменить

Начал изучать Python 2.7 + PostgreSQL 9.6.1. На питоне уже есть небольшой опыт работы, а с PostgreSQL опыта не имею. (Windows 8)

Имеется БД name_db , которую создаю следующим кодом:

  1. Где находится «name_db»? В папке с проектом её нет. Поисковик в Windows тоже не знает таких файлов. (. PostgreSQL\9.6\data — путь к БД при установке PostgreSQL)
  2. Как изменить путь сохранения файла БД в папку с проектом . /db/ ?

1 ответ 1

В PostgreSQL область хранения баз данных на диске принято называть кластер баз данных. Кластер баз данных представляет собой набор баз, управляемых одним экземпляром работающего сервера. Он должен быть проинициализирован перед первым запуском сервера.

С точки зрения файловой системы, кластер баз данных представляет собой один каталог, в котором будут храниться все данные. Где именно хранить данные, вы абсолютно свободно можете выбирать сами. Какого-либо стандартного пути не существует, но часто данные размещаются в /usr/local/pgsql/data .

Для инициализации кластера баз данных применяется команда initdb . Расположение кластера в файловой системе задаётся параметром -D , например:

Настройки кластера баз данных (вместе с другими параметрами сервера) описываются в файле postgresql.conf .

Теперь про расположение файлов. Например, на моём Debian’е при версии PostgreSQL 9.4 кластер баз данных инициализирован в /var/lib/postgresql/9.4/main , а файл настроек расположен /etc/postgresql/9.4/main/postgresql.conf .

Список созданных в кластере баз данных можно просмотреть, например, при помощи команды psql :

Источник

Linux postgresql где хранятся базы

Этот раздел описывает формат хранения на уровне файлов и каталогов.

Файлы конфигурации и файлы данных, используемые кластером базы данных, традиционно хранятся вместе в каталоге данных кластера, который обычно называют 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 служит для разделения различных временных файлов этого серверного процесса.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Scratch для mac os
  • Scrap mechanic для mac os
  • Scanmaster elm mac os
  • Savefrom net для mac os
  • Sasplanet для mac os