Настройки PostgreSQL для работы с 1С:Предприятием. Настройка postgresql сервера


Пошаговая настройка СУБД PostgreSQL на Windows Server 2012 R2

Postgresql - это полностью бесплатная СУБД, обладающая высокой масштабируемостью и открытым исходным кодом. Благодаря этому она довольно распространена в использовании, ее использует например Яндекс для части своих проектов.  Аренда виртуальных серверов от oblako.kz.

PostgreSQL можно также скачать с официального сайта.

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

2. После этого запустится приветственное окно установки, жмем Next

3. На этом этапе можно выбрать каталог для установки PostgreSQL

4. На этом этапе выбираем компоненты для установки - сам сервер PostgreSQL, графическая утилита администрирования pgAdmin, инструменты командной строки и утилита stack builder для установки дополнительных компонентов. Выберем все и нажмем Next

5. Выберем каталог, где будут храниться наши базы

6. Зададим пароль Администратора СУБД (postgres)

7. Можно переопределить порт по которому будет происходить соединение с БД. По умолчанию это порт 5432. Оставим.

8. Выберем локализацию (региональные настройки) для наших баз или оставим по умолчанию

9. На этой странице нам выведут суммарную информацию о нашем выборе

10. А на этой странице сообщают, что система готова к установке

11. Система устанавливается

12. После окончания установки система предложит запустить Stack Builder - откажемся от установки сняв соответствующую галочку, и нажимаем Finish

На этом установка завершена. Проверить корректность установки можно также удостоверившись что запущена соответствующая служба. Для этого надо запустить оснастку “Службы” . Для этого нажмите комбинацию Win+R и в открывшееся окно написать services.msc

Далее необходимо найти там службу с именем начинающимся с postgresql и удостовериться что она запущена (статус службы “выполняется”)

Также вместе с сервером СУБД устанавливается клиент командной строки PostgreSQL и утилита pgAdmin, которые можно также использовать для проверки корректности установки.

Например запустим консольный клиент psql из меню “Пуск” и попробуем соединиться c сервером PostgreSQL

Psql спросит вас к какому серверу, к какой базе и каким пользователей Вы хотите подключиться. Можно просто нажать Enter чтобы принять значения по умолчанию в квадратных скобках и в конце спросит пароль администратора , который Мы задавали на шаге 6.

В случае успешного подключения вы должны попасть в командную строку PostgreSQL которая выглядит как показано на рисунке

Поделиться в соцсетях:

Спасибо за Вашу оценку! К сожалению, проголосовать не получилось. Попробуйте позже

oblako.kz

установка, настройка, обслуживание. Настройка PostgreSQL. Оптимизация работы PostgreSQL.

PostgreSQL (произносится как "Пост-Грес-Кью-Эл") - свободная современная СУБД с широкими возможностями. Её используют такие компании, как Alibaba, Instagram, Skype, Yahoo и многие другие. Это говорит о надёжности системы, и при этом она является простой в установке, использовании и обслуживании. Поверхностно ознакомиться с ней можно по статье в Википедии: https://ru.wikipedia.org/wiki/PostgreSQL

PostgreSQL является кроссплатформенной СУБД с открытым исходным кодом, поэтому её можно установить практически на любой сервер. Все конфигурации серверов и все операционные системы, предоставляемые vscale , позволяют использование PostgreSQL.

Рассмотрим установку и настройку на примере Ubuntu 16.04 64bit.

Технические требования

• Пользователь с sudo-правами• Ubuntu 16.04

Шаг 1. Выбор источника для установки

PostgreSQL является очень популярным сервером баз данных, поэтому присутствует в официальных репозиториях Ubuntu. Однако в PPA разработчиков PostgreSQL можно найти самую свежую версию. Например, на момент написания данной инструкции в репозитории Ubuntu имеется PostgreSQL 9.5, а из PPA можно установить 9.6. Если у вас нет потребности в самых последних возможностях данной СУБД, то текущий шаг можно пропустить. Иначе добавьте репозиторий PostgreSQL в системный список источников:

Sudo sh -c "echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list"

и добавьте для него ключ

Wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

Это позволит при обновлении пакетов получать наиболее свежие версии.

Шаг 2. Установка PostgreSQL

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

Sudo apt-get update

Эта команда произведёт обновление индекса, что позволит устанавливать свежие и актуальные пакеты.

Установка PostgreSQL из официальных репозиториев и из PPA производится одинаково. Загрузим и установим пакеты PostgreSQL и contrib (contrib предоставляет некоторый дополнительный функционал и утилиты):

Шаг 3. Подключение к серверу баз данных

Во время установки программы в системе автоматически была создана учётная запись администратора баз данных - postgres. На данном этапе доступ к системе баз данных можно получить только через неё. Вы можете либо переключиться в сессию учётной записи postgres и запустить там оболочку программы:

Sudo su - postgrespsql

либо запустить оболочку от имени postgres без переключения сессии:

Sudo -u postgres psql

Попав тем или иным способом в командную строку psql, вам необходимо знать, как из неё выйти. Это можно сделать с помощью ввода команды выхода:

(сокращение от quit).

Шаг 4. Создание новой роли

Если вы производили установку по инструкции, то к этому моменту в вашей СУБД есть только одна роль - postgres. Рекомендуется не использовать данную роль для работы со своими базами данных, а создавать для каждой базы новую роль (или несколько при необходимости). Для создания новой роли предусмотрены два стандартных способа:

  1. интерактивный режим, в котором достаточно ответить на несколько простых вопросов;
  2. команда для создания роли через командную строку СУБД.

Мы не будем подробно останавливаться на интерактивном режиме, так как создать роль, которая полностью удовлетворяет требованиям в большинстве случаев, мы можем всего одной простой командой (перед этим нужно находиться в режиме командной строки как было описано на Шаге 3). Не забудьте заменить username на желаемое имя пользователя, а password - на пароль для этого пользователя:

Имя указывается без кавычек, а пароль - в одинарных кавычках.

Шаг 5. Создание базы данных

Находясь в режиме командной строки psql, создать базу данных мы можем командой create database и указав название базы данных. Например, чтобы воздать БД с именем vscale_db, выполните команду:

Create database vscale_db;

Шаг 6. Назначение прав

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

где vscale_db - название базы данных, выбранное на шаге 5, а username - имя пользователя, заданное на шаге 4.

Вся минимально требующаяся предварительная настройка завершена. Вы можете выйти из psql, введя "\q".

Шаг 7. Аутентификация и начало работы с базой данных

К текущему моменту у вас есть всё необходимое для начала работы с базой данных. Чтобы подключиться к ней, запустите psql с параметрами: хост "-h localhost" (так как подключаемся к локальной базе данных), название БД "vscale_db" и имя пользователя "username":

Psql -h localhost vscale_db username

После этого вы сможете взаимодействов

bazava.ru

Установка сервера БД PostgreSQL 9.3 и настройка доступа из локальной сети на ОС Ubuntu Server 13.10

PostgreSQL — наиболее продвинутая свободная объектно-реляционная система управления базами данных.

В этой статье рассмотрим установку сервера БД PostgreSQL 9.3 и настройку доступа из локальной сети на установленной ОС Ubuntu Server 13.10.

Перед тем, как выполнить все действия, описанные в этой статье, необходимо, чтобы была настроена сеть и желательно установлен Midnight Commander.

Первичные настройки после инсталляции можно посмотреть здесь.

Первым делом подключаем репозиторий с сайта PostgreSQL. Для этого создадим файл /etc/sources.list.d/pgdg.list

sudo touch /etc/sources.list.d/pgdg.list

В нём пропишем строку:

deb http://apt.postgresql.org/pub/repos/apt/ squeeze-pgdg main

Сохраняем и закрываем его.

После этого скачиваем и устанавливаем ключ:

wget —quiet -O — https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add —

Затем обновляем список репозиториев:

sudo apt-get update

Теперь устанавливаем PostgreSQL 9.3:

sudo apt-get install postgresql-9.3

После этого поправим конфиги. Они находятся в /etc/postgresql/9.3/main

В файле postgresql.conf ищем закомментированную строку

#listen_addresses = ‘localhost’

раскомментируем её и вместо ‘localhost’ напишем ‘*’

В файле pg_hba.conf находим строчку

host all all 127.0.0.1/32 trust

и ниже пропишем

host all all 192.168.0.0/24 md5

Затем перезапускаем службу:

sudo service postgresql restart

Теперь зададим пароль пользователю postgres

sudo passwd postgres

войдём под этим пользователем

su postgres

и создадим пользователя баз данных dbuser1

createuser -sdrP dbuser1

задаём ему пароль

и выходим

exit

Готово! Теперь на всякий случай перезапустим службу:

sudo service postgresql restart

Проверяем с помощью программы pgAdmin

Подключаемся к серверу БД:

И вот результат:

Всё. Сервер PostgreSQL готов к использованию.

Если Вам помогла статья, вы можете отблагодарить автора: перечислить на WMR кошелёк (WebMoney): R301575071888 перечислить на Яндекс.Кошелёк: 410011003938168 или на PayPal:

Статьи по теме:

на Ваш сайт.

osc.dondub.com

Настройка PostgreSQL в соответствии с конфигурацией сервера

В настоящее время мы запускаем веб-приложение и сервер базы данных на отдельной специализированной машине. Это аппаратная конфигурация - http://www.hetzner.de/en/hosting/produkte_rootserver/ex10. Около 50 ГБ оперативной памяти бесплатно. PostgresSQL занимает всего 600 МБ, а процессы веб-сервера - 7 ГБ. Средняя загрузка процессора составляет 25%.

Программное обеспечение Ubuntu 12.04 и Postgres 9.1. Размер базы данных - 15 ГБ.

По мере увеличения нагрузки наше время отклика приложения увеличилось с 230 мс до 450 мс за последние несколько месяцев. Приложение занимает 40% акций, тогда как БД занимает 60% времени отклика.

Мы кэшировали много вещей, но задавались вопросом, можем ли мы что-то получить, настроив конфигурацию Postgres. После нескольких исследований мы обнаружили, что конфигурация PostgreSQL по умолчанию (https://gist.github.com/darkofabijan/9453c793ceec1ac6274d) действительно консервативна и что мы должны определенно настроить нашу конфигурацию.

После запуска pgtune мы получили следующие рекомендуемые значения.

maintenance_work_mem = 1GB checkpoint_completion_target = 0.7 effective_cache_size = 44GB work_mem = 288MB wal_buffers = 4MB checkpoint_segments = 8 shared_buffers = 15GB max_connections = 200

После того, как мы начали работу нашего сервера PostgreSQL с рекомендованными значениями мы получили как-то регулярные всплески, когда время отклика приложения подскочило до 2000 мсов + в то время как увеличение было время отклика базы данных. После запуска в течение нескольких часов мы вернулись к исходной конфигурации Ubuntu 12.04/PostgreSQL 9.1.

Очевидно, что у нас нет большого опыта работы с работающими БД. Обе конкретные рекомендации относительно pgtune, предложенные ценностями и указателями на хорошие ресурсы, будут высоко оценены.

Edit 1:

name | current_setting | source ----------------------------+----------------------------------+---------------------- application_name | psql | client client_encoding | UTF8 | client DateStyle | ISO, MDY | configuration file default_text_search_config | pg_catalog.english | configuration file external_pid_file | /var/run/postgresql/9.1-main.pid | configuration file lc_messages | en_US.UTF-8 | configuration file lc_monetary | en_US.UTF-8 | configuration file lc_numeric | en_US.UTF-8 | configuration file lc_time | en_US.UTF-8 | configuration file log_line_prefix | %t | configuration file log_timezone | localtime | environment variable max_connections | 100 | configuration file max_stack_depth | 2MB | environment variable port | 5432 | configuration file shared_buffers | 24MB | configuration file ssl | on | configuration file TimeZone | localtime | environment variable unix_socket_directory | /var/run/postgresql | configuration file

postgresql postgresql-performance

dba.stackovernet.com

Настройки PostgreSQL для работы с 1С:Предприятием. – RDB IT Support

Общие положения

В документе описывается настройка PostgreSQL версий 9.2-9.4 на максимальную производительность для платформы 1С. Предполагается, что сервер, используемый для PostgreSQL является достаточно производительным и имеет приблизительно:

  • 4 - 512  Gb RAM
  • 2 - 256 CPU cores
  • RAID 0-1 или SSD

Данный документ подразумевает хотя бы поверхностное знакомство с архитектурой PgSQL. Приведенные в документе параметры являются приблизительными и стартовыми для тонкой настройки.

Настройки сервера для PostgreSQL

  • Рекомендуется отключать HyperThreading. Для программ типа систем управления базами данных от него скорее вред чем польза.
  • Также рекомендуется отключать Energy Saving, поскольку в противном случае могут непредсказуемо вырастать задержки ответов БД.
  • Надо запретить своппинг разделяемой памяти SYSV/posix (FreeBSD: kern.ipc.shm_use_phys=1)

Обозначения

  • RAM - объем оперативной памяти сервера. Если сервер используется не только для PostgreSQL, то надо уменьшить эту величину на объем занятой памяти.
  • NCores - суммарное число ядер на всех CPU сервера
  • max_connections - максимальное число коннектов (или сессий) к PgSQL. Задается в конфигурационном файле.
  • WAL - Write Ahead Log, опережающий лог действий с таблицами и индексами. Основная задача - целостность и отказоустойчивость  базы данных при одновременном росте производительности.
  • checkpoint - точка восстановления база данных. Все WAL данные, записанные до checkpoint становятся не нужны.
  • X..Y - диапазон значений от X до Y включительно

Параметры производительности

shared_buffers = RAM/4

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

temp_buffers = 256MB

Максимальное количество страниц для временных таблиц. Т.е. это верхний лимит размера временных таблиц в каждой сессии.

work_mem = RAM/32..64 или 32MB..128MB

Лимит памяти для обработки одного запроса. Эта память индивидуальна для каждой сессии. Теоретически, максимально потребная память равна max_connections * work_mem, на практике такого не встречается потому что большая  часть сессий почти всегда висит в ожидании. Это рекомендательное значение используется оптимайзером: он пытается предугадать размер необходимой памяти для запроса, и, если это значение больше work_mem, то указывает экзекьютору сразу создать временную таблицу. work_mem не является в полном смысле лимитом: оптимайзер может и промахнуться, и запрос займёт больше памяти, возможно в разы. Это значение можно уменьшать, следя за количеством создаваемых временных файлов: 

select maintenance_work_mem = RAM/16..32 или work_mem * 4 или 256MB..4GB

Лимит памяти для обслуживающих задач, например вакуум, автовакуум или создания индексов.

effective_cache_size = RAM - shared_buffers

Оценка размера кеша файловой системы. Увеличение параметра увеличивает склонность системы выбирать IndexScan планы. И это хорошо.

effective_io_concurrency = 2

Оценочное значение одновременных запросов к дисковой системе, которые она может обслужить единовременно. Для одиночного диска = 1, для RAID - 2 или больше.

random_page_cost = 1.5-2.0 для RAID, 1.1-1.3 для SSD

Стоимость чтения рандомной страницы (по-умолчанию 4). Чем меньше seek time дисковой системы тем меньше (но > 1.0) должен быть этот параметр. Излишне большое значение параметра увеличивает склонность PgSQL к выбору планов с сканированием всей таблицы (PgSQL считает, что дешевле последовательно читать всю таблицу, чем рандомно индекс). И это плохо.

autovacuum = on

Включение автовакуума. Не выключайте его!

autovacuum_max_workers = NCores/4..2 но не меньше 4

Количество процессов автовакуума. Общее правило - чем больше write-запросов, тем больше процессов. На read-only базе данных достаточно одного процесса.

autovacuum_naptime = 20s

Время сна процесса автовакуума. Слишком большая величина будет приводить к тому, что таблицы не будут успевать вакуумиться и, как следствие, вырастет bloat и размер таблиц и индексов. Малая величина приведет к бесполезному нагреванию.

bgwriter_delay = 20ms

Время сна между циклами записи на диск фонового процесса записи. Данный процесс ответственен за синхронизацию страниц, расположенных в shared_buffers с диском. Слишком большое значение этого параметра приведет к возрастанию нагрузки на  checkpoint процесс и процессы, обслуживающие сессии (backend). Малое значение приведет к полной загрузке одного из ядер.

bgwriter_lru_multiplier = 4.0

bgwriter_lru_maxpages = 400

Параметры, управляющие интенсивностью записи фонового процесса записи. За один цикл bgwriter записывает не больше, чем было записано в прошлый цикл, умноженное на bgwriter_lru_multiplier, но не больше чемbgwriter_lru_maxpages.

synchronous_commit = off

Выключение синхронизации с диском в момент коммита. Создает риск потери последних нескольких транзакций (в течении 0.5-1 секунды), но гарантирует целостность базы данных, в цепочке коммитов гарантированно отсутствуют пропуски. Но значительно увеличивает производительность.

checkpoint_segments = 32..256   < 9.5

Максимальное количество сегментов WAL между checkpoint. Слишком частые checkpoint  приводят к значительной нагрузке на дисковую подсистему по записи. Каждый сегмент имеет размер 16MB

checkpoint_completion_target = 0.5..0.9

Степень "размазывания" checkpoint'a. Скорость записи во время checkpoint'а регулируется так, что бы время checkpoint'а было равно времени, прошедшему с прошлого, умноженному на checkpoint_completion_target.

min_wal_size = 512MB .. 4G         > =9.5max_wal_size = 2 * min_wal_size    > =9.5

Минимальное и максимальный объем WAL файлов. Аналогично checkpoint_segments

ssl = off

Выключение шифрования. Для защищенных ЦОД'ов шифрование бессмысленно, но приводит к увеличению загрузки CPU

fsync = on

Выключение параметра приводит к росту производительности, но появляется значительный риск потери всех данных при внезапном выключении питания. Внимание: если RAID имеет кеш и находиться в режиме write-back, проверьте наличие и функциональность батарейки кеша RAID контроллера! Иначе данные записанные в кеш RAID могут быть потеряны при выключении питания, и, как следствие, PgSQL не гарантирует целостность данных.

commit_delay = 1000

commit_siblings = 5

Групповой коммит нескольких транзакций. Имеет смысл включать, если темп транзакций превосходит 1000 TPS. Иначе эффекта не имеет.

temp_tablespaces = 'NAME_OF_TABLESPACE'

Дисковое пространство для временных таблиц/индексов. Помещение временных таблиц/индексов на отдельные диски может увеличить производительность. Предварительно надо создать tablespace командой CREATE TABLESPACE. Если характеристики дисков отличаются от основных дисков, то следует в команде указать соответствующий random_page_cost. См. статью.

row_security = off               >= 9.5

Отключение контроля разрешения уровня записи

max_files_per_process = 1000 (default)

support.rdb24.com

PostgreSQL - установка и базовая настройка

PostgreSQL - мощная свободная объектно-реляционная система управления базами данных (СУБД). Базируется на языке SQL и поддерживает многие из возможностей стандарта SQL:2003.

Основные преимущества PostgreSQL:

  • поддержка БД практически неограниченного размера;
  • мощные и надёжные механизмы транзакций и репликации;
  • расширяемая система встроенных языков программирования;
  • масштабируемость.

Выполним установку из системы портов:

# cd /usr/ports/databases/postgresql92-server && make install clean && rehash

Опции сборки все оставил по умолчанию.

По завершению установки, порт вывел короткие рекомендации по дальнейшей настройке:

For procedural languages and postgresql functions, please note that you might have to update them when updating the server. If you have many tables and many clients running, consider raising kern.maxfiles using sysctl(8), or reconfigure your kernel appropriately. The port is set up to use autovacuum for new databases, but you might also want to vacuum and perhaps backup your database regularly. There is a periodic script, /usr/local/etc/periodic/daily/502.pgsql, that you may find useful. You can use it to backup and perfom vacuum on all databases nightly. Per default, it perfoms `vacuum analyze'. See the script for instructions. For autovacuum settings, please review ~pgsql/data/postgresql.conf. To allow many simultaneous connections to your PostgreSQL server, you should raise the SystemV shared memory limits in your kernel. Here are example values for allowing up to 180 clients (configurations in postgresql.conf also needed, of course): options SYSVSHM options SYSVSEM options SYSVMSG options SHMMAXPGS=65536 options SEMMNI=40 options SEMMNS=240 options SEMUME=40 options SEMMNU=120 If you plan to access your PostgreSQL server using ODBC, please consider running the SQL script /usr/local/share/postgresql/odbc.sql to get the functions required for ODBC compliance. Please note that if you use the rc script, /usr/local/etc/rc.d/postgresql, to initialize the database, unicode (UTF-8) will be used to store character data by default. Set postgresql_initdb_flags or use login.conf settings described below to alter this behaviour. See the start rc script for more info. To set limits, environment stuff like locale and collation and other things, you can set up a class in /etc/login.conf before initializing the database. Add something similar to this to /etc/login.conf: --- postgres:\ :lang=en_US.UTF-8:\ :setenv=LC_COLLATE=C:\ :tc=default: --- and run `cap_mkdb /etc/login.conf'. Then add 'postgresql_class="postgres"' to /etc/rc.conf. ====================================================================== To initialize the database, run /usr/local/etc/rc.d/postgresql initdb You can then start PostgreSQL by running: /usr/local/etc/rc.d/postgresql start For postmaster settings, see ~pgsql/data/postgresql.conf NB. FreeBSD's PostgreSQL port logs to syslog by default See ~pgsql/data/postgresql.conf for more info ====================================================================== To run PostgreSQL at startup, add 'postgresql_enable="YES"' to /etc/rc.conf ===> Installing rc.d startup script(s) ===> Correct pkg-plist sequence to create group(s) and user(s) ===> Registering installation for postgresql-server-9.2.b4 ===> SECURITY REPORT: This port has installed the following files which may act as network servers and may therefore pose a remote security risk to the system. /usr/local/bin/postgres This port has installed the following startup scripts which may cause these network services to be started at boot time. /usr/local/etc/rc.d/postgresql If there are vulnerabilities in these programs there may be a security risk to the system. FreeBSD makes no guarantee about the security of ports included in the Ports Collection. Please type 'make deinstall' to deinstall the port if this is a concern. For more information, and contact details about the security status of this software, see the following webpage: http://www.postgresql.org/

Поскольку PostgreSQL использует кодировку UTF-8 по умолчанию, для избежания проблем в дальнейшем, последуем совету и для пользователя pgsql (в новых версиях PostgreSQL работает от имени пользователя pgsql, а не postgres) немного подкорректируем локаль. Для этого в внесем такой блок в файл /etc/login.conf:

pgsql:\        :lang=en_US.UTF-8:\        :setenv=LC_COLLATE=C:\        :tc=default:

Далее:

# cap_mkdb /etc/login.conf

Базы данных будем размещать в каталоге /var/db/pgsql. Соответственно создадим необходимый каталог и выставим права доступа:

# mkdir /var/db/pgsql# chown pgsql:pgsql /var/db/pgsql

Вносим изменения в rc.conf, указывая каталог хранения данных. Ну и добавим запуск PostgreSQL при старте системы:

# echo '# PostgreSQL' >> /etc/rc.conf# echo 'postgresql_enable="YES"' >> /etc/rc.conf# echo 'postgresql_data="/var/db/pgsql"' >> /etc/rc.conf# echo 'postgresql_class="postgres"' >> /etc/rc.conf

После этих манипуляций выполним инициализацию базы данных:

# /usr/local/etc/rc.d/postgresql initdb

Скрипт по ходу своей работы будет выводить сообщения на консоль. Пример такого вывода:

The files belonging to this database system will be owned by user "pgsql". This user must also own the server process. The database cluster will be initialized with locale "C". The default text search configuration will be set to "english". fixing permissions on existing directory /var/db/pgsql ... ok creating subdirectories ... ok selecting default max_connections ... 100 selecting default shared_buffers ... 32MB creating configuration files ... ok creating template1 database in /var/db/pgsql/base/1 ... ok initializing pg_authid ... ok initializing dependencies ... ok creating system views ... ok loading system objects' descriptions ... ok creating collations ... not supported on this platform creating conversions ... ok creating dictionaries ... ok setting privileges on built-in objects ... ok creating information schema ... ok loading PL/pgSQL server-side language ... ok vacuuming database template1 ... ok copying template1 to template0 ... ok copying template1 to postgres ... ok WARNING: enabling "trust" authentication for local connections You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. Success. You can now start the database server using: /usr/local/bin/postgres -D /var/db/pgsql or /usr/local/bin/pg_ctl -D /var/db/pgsql -l logfile start

После инициализации БД запускаем PostgreSQL сервер:

# sh /usr/local/etc/rc.d/postgresql start

После запуска проверяем состояние сервера:

# sh /usr/local/etc/rc.d/postgresql statuspg_ctl: server is running (PID: 30752)/usr/local/bin/postgres "-D" "/var/db/pgsql"

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

Сервер PosgreSQL предоставляет два варианта управления  пользователями и базами данных:

  • утилиты коммандной строки (createuser, createdb, dropuser, dropdb... )
  • интерактивный терминал

Воспользуемся интерактивным терминалом для настройки прав доступа. Подключимся от имени пользователся pgsql. Пароль не нужен.

# psql -U pgsql template1

psql (9.2beta4)Введите "help", чтобы получить справку.

template1=#

Наберем команду help и ознакомимся со справкой:

template1=# help

Вы используете psql - интерфейс командной строки к PostgreSQL. Азы: \copyright - условия распространения \h - справка по операторам SQL \? - справка по командам psql \g или ; в конце строки - выполнение запроса \q - выход

Советую ознакомиться со справкой по операторам SQL и командам psql. Теперь создадим тестового пользователя и базу данных, к которой он будет иметь доступ.

template1=# CREATE USER username;CREATE ROLE

Проверим список ролей:

template1-# \du

Список ролей Имя роли | Атрибуты | Член ролей ----------+---------------------------------------------------------+------------ pgsql | Суперпользователь, Создаёт роли, Создаёт БД, Репликация | {} username | | {}

Повысим созданному пользователю права доступа:

template1=# ALTER USER username superuser createrole createdb;ALTER ROLE

Повторно проверим список ролей:

template1=# \du

Список ролей Имя роли | Атрибуты | Член ролей ----------+---------------------------------------------------------+------------ pgsql | Суперпользователь, Создаёт роли, Создаёт БД, Репликация | {} username | Суперпользователь, Создаёт роли, Создаёт БД | {}

Обычному пользователю такие права ни к чему, их стоит выдавать только администратору системы. Отменим определенные права доступа:

template1=# ALTER USER username nosuperuser nocreaterole nocreatedb;ALTER ROLE

А вот пароли для пользователя - вещь обязательная. Зададим пароль для созданного пользователя:

template1=# \password usernameВведите новый пароль:Повторите его:

При вводе пароль не отображается! Также стоит установить пароль для пользователя pgsql. После этого включаем проверку пароля при подключении к PostgreSQL-серверу. Неоходимо внести изменения в файл /var/db/pgsql/pg_hba.conf. Метод подключения trust необходимо изменить на md5 (также полностью удаляем строку для IPv6). В результате имеем такой результат:

# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all md5 # IPv4 local connections: host all all 127.0.0.1/32 md5

Для того, чтобы изменения вступили в силу, необходимо перезапустить PostgreSQL-сервер:

# sh /usr/local/etc/rc.d/postgresql restart

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

# psql -U pgsql template1Пароль пользователя pgsql:psql (9.2beta4)Введите "help", чтобы получить справку.

 

template1=#

Теперь сервер при подключении запрашивает пароль. Ну и напоследок создадим базу данных и дадим на нее права пользователю username. Сделать это можно двумя способами.

Первый способ:

template1=# CREATE DATABASE userdb owner=username;CREATE DATABASE

Второй способ:

template1=# CREATE DATABASE userdb;CREATE DATABASEtemplate1=# ALTER DATABASE userdb owner to username;ALTER DATABASE

Просмотрим список имеющихся баз данных:

template1=# \l

Список баз данных Имя | Владелец | Кодировка | LC_COLLATE | LC_CTYPE | Права доступа -----------+----------+-----------+------------+----------+----------------- postgres | pgsql | UTF8 | C | C | template0 | pgsql | UTF8 | C | C | =c/pgsql + | | | | | pgsql=CTc/pgsql template1 | pgsql | UTF8 | C | C | =c/pgsql + | | | | | pgsql=CTc/pgsql userdb | username | UTF8 | C | C | (4 строки)

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

Последний штрих - тюнинг PostgreSQL-сервера. Все основные настройки хранятся в файле /var/db/pgsql/postgresql.conf. Отметим опции, на которые стоит обратить внимание (перевод описания опций взят здесь):

  • max_connections - максимальное количество одновременных подключений к серверу БД. Используйте этот параметр, чтобы не допустить запуска большого количества процессов сервера. Иначе есть вероятность, что серер БД исчерпает весь объем ОЗУ и будет активно использоваться подкачка, что в свою очередь повлечет за собой падение производительности.
  • shared_buffers - объем разделяемой памяти, используемый сервером БД. По умолчанию - 32 Мб, но может быть меньше, если настройки вашего ядра не позволяют выделить такой объем памяти, определяется при инициализации кластера БД утилитой initdb. Большие значения этого параметра положительно сказываются на производительности сервера БД.Если у вас выделенный компьютер с ОЗУ 1 Гб и больше под сервер БД, то хорошим значением этой переменной будет 25% от объема памяти. При большой нагрузке даже большие значения этого параметра могут быть эффективными, но так как PostgreSQL полагается на кэш ОС, то выделение более 40% от объема памяти вряд ли имеет смысл. Для больших значений этого параметра требуется так же увеличить значение параметра checkpoint_segments.На системах с ОЗУ меньше 1 Гб правильнее будет использовать меньший объем памяти (чем 25%), чтобы не исчерпать весь объем оперативной памяти. На винде большие значения этого параметра могут оказаться эффективными. Вы можете добиться большей производительности сохраняя это значение маленьким и больше используя средства кэширования ОС. Хорошим диапазоном значений для Windows является 64-512 Мб.
  • temp_buffers - максимальный размер временных буферов для каждой сессии. Эта память используется только локально в сессии для временных таблиц. По умолчанию - 8 МБ. Значение может быть изменено во время сессии, но только до первого использования этой памяти.
  • max_prepared_transactions - максимальное количество "prepared" транзакций (смотрите описание SQL команды PREPARE TRANSACTION в документации). Чтобы отключить эту фишку, поставьте значение в 0.
  • work_mem - определяет объем памяти, который будет использоваться внутренними операциями сортировки и хэш-таблицами прежде, чем переключиться на временные дисковые файлы. Учтите, что для сложных запросов несколько внутренних операций сортировки и работа с хэш-таблицами могут работать параллельно (одновременно). Кроме того, несколько сессий могут делать такие операции одновременно. В итоге необходимый объем памяти для этих операций может в несколько раз превышать значение параметра work_mem. Учтите это при выборе значения для этого параметра. Под внутренними операциями сортировки подразумевается - ORDER BY, DISTINCT и слияния.
  • maintenance_work_mem - максимальный объем памяти, используемый для внутренних операций, таких как VACUUM, CREATE INDEX и ALTER TABLE ADD FOREIGN KEY. По умолчанию - 16 Мб. Эти команды выполняются только во во время сессии, так что можно выбирать большие значения для этого параметра, чем для параметра work_mem. Большие значения могут положительно сказаться на производительности vacuuming и скорости восстановления БД из дампа. Только учтите, что процесс autovacuum запускается autovacuum_max_workers раз, поэтому может потребоваться больше свободной памяти.
  • max_stack_depth - максимальная глубина стека. Хорошим значением этого параметра является максимально разрешенная глубина стека в системе.
  • max_fsm_pages - с помощью этого параметра можно управлять картой свободного пространства. Когда что-то удаляется из таблицы, то место занимаемое этим что-то не освобождается на диске, вместо этого занимаемое место просто помечается как "свободно" в карте свободного пространства. Потом это место используется для новых записей. Если на вашем сервере очень много удаляется/добавляется данных из/в таблицы, то большие значения этого параметра могут положительно сказаться на производительности. 

     

www.muff.kiev.ua

Установка и настройка PostgreSQL в Ubuntu Server

PostgreSQL — свободная объектно-реляционная система управления базами данных. Как и большинство других открытых программных продуктов, существуют реализации для большинства платформ, и Ubuntu Linux не является исключением.

Рассмотрим пошаговую процедуру установки и настройки PostgreSQL:

  • Непосредственная установка;
  • Добавление возможности подключения с удаленного хоста;
  • Создание тестового пользователя и тестовой базы данных.

1. Установка сервера PostgreSQL и клиентского терминала:

sudo apt-get install postgresql postgresql-client

2. Устанавливаем пароль для администратора баз данных (пользователя postgres). Для этого подключаемся к локальному серверу PostgreSQL от имени локального пользователя операционной системы (он создается в процессе установки приложения), после чего исполняем команду смены пароля пользователя:

$ sudo -u postgres psql psql (9.3.10) Type "help" for help. postgres=# password postgres Enter new password: Enter it again: postgres=# q

Для удобства будем считать, что для пользователя postgres мы указали пользователя postgres.

3. Проверяем правильность смены пароля:

$ psql -h localhost postgres postgres Password for user postgres: psql (9.3.10) SSL connection (cipher: DHE-RSA-AES256-GCM-SHA384, bits: 256) Type "help" for help. postgres=#

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

4. Открываем возможность подключения к базе данных с удаленного хоста. Для этого:

4.1. Редактируем файл /etc/postgresql/9.3/main/pg_hba.conf и добавляем в самый конец строчку:

host all all 0.0.0.0/0 md5

4.2. Редактируем файл /etc/postgresql/9.3/main/postgresql.conf и заменяем значение параметра listen_address:

listen_address = '*'

5. Создаем тестовую базу данных, тестового пользователя и предоставляем пользователю доступ к базе данных. Для этого подключаемся к СУБД от имени администратора:

sudo -u postgres psql postgres=# CREATE DATABASE sample_database; CREATE DATABASE postgres=# CREATE USER sample_user WITH password 'sample_password'; CREATE ROLE postgres=# GRANT ALL privileges ON DATABASE sample_database TO sample_user; GRANT postgres=# q

6. Проверяем возможность подключение от имени вновь созданного к СУБД с удаленного хоста:

psql -h dev-server sample_database sample_user

j4web.ru