PostgreSQL: установка, настройка, обслуживание. Настройка сервера postgresql


установка, настройка, обслуживание » Администрирование » FAQ » HelpF.pro

PostgreSQL напрямую "из коробки" применяться для использования с 1С Предприятем не может. Необходима именно адаптированная версия от 1С, превращающая PostgreSQL в блокировочник, причем нужно понимать, что блокировки будут накладываться на всю таблицу сразу. Если нужны блокировки на уровне записей, включаем в 1С режим управляемых блокировок и прописываем их в конфигурации ручками. Вывод: необходимо скачать специальный дистрибутив с сайта 1С или взять на диске ИТС.

Установка

Сама установка особых затруднений не вызывает, обратить внимание нужно на правильную инициализацию базы данных, а именно настройку локали, изменить потом это можно только повторной начальной инициализацией. Например, база 1С с украинскими региональными установками в СУБД с установленной русской локалью не загрузится. Да и проблемы с сортировкой потом не нужны. Поэтому делаем init в соответствии с нужным языком.

Для русского языка

initdb --locale=ru_RU.UTF-8 --lc-collate=ru_RU.UTF-8 --lc-ctype=ru_RU.UTF-8 --encoding=UTF8 -D /db/postgresql

Для украинского языка

initdb --locale=uk_UA.UTF-8 --lc-collate=uk_UA.UTF-8 --lc-ctype=uk_UA.UTF-8 --encoding=UTF8 -D /db/postgresql

где /db/postgresql ваш каталог данных PostgreSQL. Кодировка, конечно же, UTF-8.

Подробный вариант пересоздания кластера

1.Необходимо выдать полные права на папку в которую мы установили PostgreSQL, обычно это C:\Program Files\PostgreSQL

2.Из под админских прав запускаем cmd. Если это делаете в win7, то запускаем от Администратора.

3.Создаем папку где будет храниться кластер. Например d:\postgredata.

md d:\postgredata

4.Проводим инициализацию кластера вручную с указанием пути где он будет находиться.

“C:\Program Files\PostgreSQL\9.1.2-1.1C\bin\initdb.exe” -D d:\postgredata --locale=Russian_Russia --encoding=UTF8 -U postgres

5.Удаляем службу PostgreSQL, которая была установлена в ходе установки.

sc delete pgsql-9.1.2-1.1C-x64

Где pgsql-9.1.2-1.1C-x64 – Это название службы. Если не знаете название точно, можно посмотреть свойствах службы “PostgreSQL Database Server…” (Пуск – Панель управления – Администрирование – Службы )

6.Создаем новый сервис с указанием нашего кластера

“C:\Program Files\PostgreSQL\9.1.2-1.1C\bin\pg_ctl” register -N pgsql -U postgresql -P пароль -D d:/postgredata

7.Теперь заходим в службы. Пуск – Панель управления – Администрирование – Службы и стартуем нашу службу.

Ошибка СУБД: ERROR: new encoding (UTF8) is incompatible with the encoding of the template database (WIN1251).

HINT: Use the same encoding as in the template database, or use template0 as template.

Вы выбрали неправильную локаль при установке СУБД (WIN1251) для сервера и клиента, нужно изменить на UTF-8 в конфигурации или переустановить СУБД со следующими параметрами:

Внимание при установке НЕ выбирайте локаль Настройки ОС, выбирайте из списка Russian, Russia

Настройка PostgreSQL

Следует помнить о рекомендации 1С не использовать в запросах конструкции ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ и заменять его, используя, например, комбинацию из нескольких левых соединений. Известна также проблема с потерей производительности в запросах, где применяется соединение с виртуальной таблицей СрезПоследних, к ней рекомендуется делать отдельные запросы и сохранять результаты во временных таблицах.

Настройка конфигурации производится редактированем файла postgresql.conf.

Наиболее важные параметры

effective_cache_size = 0,5 от ёмкости RAM

fsync = off отключаем сброс на диск после каждой транзации (Внимание! Применять только при использовании надежного UPS, есть опасность потери данных при неожиданном отключении)

synchronous_commit = off отключаем синхронную запись в лог (риски теже, что и у fsync)

wal_buffers = 0,25 от ёмкости RAM

После настройки не забываем выполнить перезапуск службы:

service postgresql restart

Настройка сети

Для подключения клиентов 1С к серверу извне и работы сервера баз данных, на файрволе, должны быть открыты следующие порты:

Агент сервера (ragent) & tcp:1540 Главный менеджер кластера (rmngr) & tcp:1541 Диапазон сетевых портов, для динамического распределения рабочих процессов & tcp:1560&1591, tcp:5432 & Postgresql. Создадим правило через стандартный интерфейс, либо с помощью команды:

netsh advfirewall firewall add rule name="1Cv8-Server" dir=in action=allow protocol=TCP localport=1540,1541,5432,1560-1590 enable=yes profile=ANY remoteip=ANY interfacetype=LAN

Теперь с другого компьютера мы спокойно запускаем клиент 1С:Предприятия, добавляем существующую информационную базу newdb. Не забываем про лицензии, программной / аппаратной защиты. 

Резервное копирование

Создание дампа базы данных делаем командой

su postgres -c 'pg_dump -U postgres -Fc -Z9 -f baza1.sql baza1'

Восстановление из дампа

su postgres -c 'pg_restore -U postgres -c -d baza1 -v baza1.sql'

Периодическое обслуживание

Рекомендуется настроить AVTO VACUUM в файле конфигурации. Но не пренебрегаем и запуском через планировщик принудительной команды.

su postgres -c '/usr/bin/vacuumdb --dbname=$i --analyze --full --quiet'

Просмотр активности PostgreSQL

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

watch -n 1 'ps auxww | grep ^postgres'

helpf.pro

Установка и настройка сервера PostgreSQL - 12 Декабря 2009 - Блог

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

Для установки в командной строке введите следующие команды:

sudo apt-get install postgresql postgresql-client postgresql-contrib

Эти команды установят сервер и клиент для работы с БД.

Теперь нам необходимо задать пароль администратора ‘postgres’ сервера. Введите в командной строке:

sudo su postgres -c psql template1

Задаем пароль postgres:

ALTER USER postgres WITH PASSWORD 'сюда_записываем_нужный_вам_пароль';

Выходим:

\q

Эти команды изменяют пароль, теперь нам необходимо сделать тоже самое с unix пользователем ‘postgres’:

sudo passwd -d postgres

sudo postgres -c passwd

Наконец, нам необходимо настроить сервер для работы в сети, иначе он будет доступен только с локальной машины. Чтобы сделать это, сначала необходимо отредактировать в консоли postgresql.conf:

sudo gedit /etc/postgresql/8.3/main/postgresql.conf

Пример рабочего конфига:

-----------------------------# PostgreSQL configuration file# -----------------------------

data_directory = '/var/lib/postgresql/8.3/main' # где находится база данных (при желании можно перенести)

hba_file = '/etc/postgresql/8.3/main/pg_hba.conf' # host-based authentication fileident_file = '/etc/postgresql/8.3/main/pg_ident.conf' # ident configuration fileexternal_pid_file = '/var/run/postgresql/8.3-main.pid' # write an extra PID file

#------------------------------------------------------------------------------# CONNECTIONS AND AUTHENTICATION#------------------------------------------------------------------------------# - Connection Settings -

listen_addresses = '*' # IP адрес(а) сервераport = 5432 # порт

max_connections = 100 # максимальное количество подключений

unix_socket_directory = '/var/run/postgresql'ssl = true # (change requires restart)

#------------------------------------------------------------------------------# RESOURCE USAGE (except WAL)#------------------------------------------------------------------------------

shared_buffers = 24MB # min 128kB or max_connections*16kB

max_fsm_pages = 153600 # min max_fsm_relations*16, 6 bytes each

#vacuum_cost_delay = 0 # 0-1000 milliseconds#vacuum_cost_page_hit = 1 # 0-10000 credits#vacuum_cost_page_miss = 10 # 0-10000 credits#vacuum_cost_page_dirty = 20 # 0-10000 credits#vacuum_cost_limit = 200 # 1-10000 credits

# - Background Writer -

#bgwriter_delay = 200ms # 10-10000ms between rounds#bgwriter_lru_maxpages = 100 # 0-1000 max buffers written/round#bgwriter_lru_multiplier = 2.0 # 0-10.0 multipler on buffers scanned/round

#------------------------------------------------------------------------------# WRITE AHEAD LOG#------------------------------------------------------------------------------

# - Settings -

#fsync = on # turns forced synchronization on or off#synchronous_commit = on # immediate fsync at commit#wal_sync_method = fsync # the default is the first option# supported by the operating system:# open_datasync# fdatasync# fsync# fsync_writethrough# open_sync#full_page_writes = on # recover from partial page writes#wal_buffers = 64kB # min 32kB# (change requires restart)#wal_writer_delay = 200ms # 1-10000 milliseconds

#commit_delay = 0 # range 0-100000, in microseconds#commit_siblings = 5 # range 1-1000

# - Checkpoints -

#checkpoint_segments = 3 # in logfile segments, min 1, 16MB each#checkpoint_timeout = 5min # range 30s-1h#checkpoint_completion_target = 0.5 # checkpoint target duration, 0.0 - 1.0#checkpoint_warning = 30s # 0 is off

# - Archiving -

#archive_mode = off # allows archiving to be done# (change requires restart)#archive_command = '' # command to use to archive a logfile segment#archive_timeout = 0 # force a logfile segment switch after this# time; 0 is off

#------------------------------------------------------------------------------# QUERY TUNING#------------------------------------------------------------------------------

# - Planner Method Configuration -

#enable_bitmapscan = on#enable_hashagg = on#enable_hashjoin = on#enable_indexscan = on#enable_mergejoin = on#enable_nestloop = on#enable_seqscan = on#enable_sort = on#enable_tidscan = on

# - Planner Cost Constants -

#seq_page_cost = 1.0 # measured on an arbitrary scale#random_page_cost = 4.0 # same scale as above#cpu_tuple_cost = 0.01 # same scale as above#cpu_index_tuple_cost = 0.005 # same scale as above#cpu_operator_cost = 0.0025 # same scale as above#effective_cache_size = 128MB

# - Genetic Query Optimizer -

#geqo = on#geqo_threshold = 12#geqo_effort = 5 # range 1-10#geqo_pool_size = 0 # selects default based on effort#geqo_generations = 0 # selects default based on effort#geqo_selection_bias = 2.0 # range 1.5-2.0

# - Other Planner Options -

#default_statistics_target = 10 # range 1-1000#constraint_exclusion = off#from_collapse_limit = 8#join_collapse_limit = 8 # 1 disables collapsing of explicit# JOIN clauses

#------------------------------------------------------------------------------# ERROR REPORTING AND LOGGING#------------------------------------------------------------------------------

# - Where to Log -

#log_destination = 'stderr' # Valid values are combinations of# stderr, csvlog, syslog and eventlog,# depending on platform. csvlog# requires logging_collector to be on.

# This is used when logging to stderr:#logging_collector = off # Enable capturing of stderr and csvlog# into log files. Required to be on for# csvlogs.# (change requires restart)

# These are only used if logging_collector is on:#log_directory = 'pg_log' # directory where log files are written,# can be absolute or relative to PGDATA#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,# can include strftime() escapes#log_truncate_on_rotation = off # If on, an existing log file of the# same name as the new log file will be# truncated rather than appended to.# But such truncation only occurs on# time-driven rotation, not on restarts# or size-driven rotation. Default is# off, meaning append to existing files# in all cases.#log_rotation_age = 1d # Automatic rotation of logfiles will# happen after that time. 0 to disable.#log_rotation_size = 10MB # Automatic rotation of logfiles will# happen after that much log output.# 0 to disable.

# These are relevant when logging to syslog:#syslog_facility = 'LOCAL0'#syslog_ident = 'postgres'

# - When to Log -

#client_min_messages = notice # values in order of decreasing detail:# debug5# debug4# debug3# debug2# debug1# log# notice# warning# error

#log_min_messages = notice # values in order of decreasing detail:# debug5# debug4# debug3# debug2# debug1# info# notice# warning# error# log# fatal# panic

#log_error_verbosity = default # terse, default, or verbose messages

#log_min_error_statement = error # values in order of decreasing detail:# debug5# debug4# debug3# debug2# debug1# info# notice# warning# error# log# fatal# panic (effectively off)

#log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements# and their durations, > 0 logs only# statements running at least this time.

#silent_mode = off # DO NOT USE without syslog or# logging_collector# (change requires restart)

# - What to Log -

#debug_print_parse = off#debug_print_rewritten = off#debug_print_plan = off#debug_pretty_print = off#log_checkpoints = off#log_connections = off#log_disconnections = off#log_duration = off#log_hostname = offlog_line_prefix = '%t ' # special values:# %u = user name# %d = database name# %r = remote host and port# %h = remote host# %p = process ID# %t = timestamp without milliseconds# %m = timestamp with milliseconds# %i = command tag# %c = session ID# %l = session line number# %s = session start timestamp# %v = virtual transaction ID# %x = transaction ID (0 if none)# %q = stop here in non-session# processes# %% = '%'# e.g. '<%u%%%d> '#log_lock_waits = off # log lock waits >= deadlock_timeout#log_statement = 'none' # none, ddl, mod, all#log_temp_files = -1 # log temporary files equal or larger# than specified size;# -1 disables, 0 logs all temp files#log_timezone = unknown # actually, defaults to TZ environment# setting

#------------------------------------------------------------------------------# RUNTIME STATISTICS#------------------------------------------------------------------------------

# - Query/Index Statistics Collector -

#track_activities = on#track_counts = on#update_process_title = on

# - Statistics Monitoring -

#log_parser_stats = off#log_planner_stats = off#log_executor_stats = off#log_statement_stats = off

#------------------------------------------------------------------------------# AUTOVACUUM PARAMETERS#------------------------------------------------------------------------------

#autovacuum = on # Enable autovacuum subprocess? 'on'# requires track_counts to also be on.#log_autovacuum_min_duration = -1 # -1 disables, 0 logs all actions and# their durations, > 0 logs only# actions running at least that time.#autovacuum_max_workers = 3 # max number of autovacuum subprocesses#autovacuum_naptime = 1min # time between autovacuum runs#autovacuum_vacuum_threshold = 50 # min number of row updates before# vacuum#autovacuum_analyze_threshold = 50 # min number of row updates before# analyze#autovacuum_vacuum_scale_factor = 0.2 # fraction of table size before vacuum#autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze#autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum# (change requires restart)#autovacuum_vacuum_cost_delay = 20 # default vacuum cost delay for# autovacuum, -1 means use# vacuum_cost_delay#autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for# autovacuum, -1 means use# vacuum_cost_limit

#------------------------------------------------------------------------------# CLIENT CONNECTION DEFAULTS#------------------------------------------------------------------------------

# - Statement Behavior -

#search_path = '"$user",public' # schema names#default_tablespace = '' # a tablespace name, '' uses the default#temp_tablespaces = '' # a list of tablespace names, '' uses# only default tablespace#check_function_bodies = on#default_transaction_isolation = 'read committed'#default_transaction_read_only = off#session_replication_role = 'origin'#statement_timeout = 0 # 0 is disabled#vacuum_freeze_min_age = 100000000#xmlbinary = 'base64'#xmloption = 'content'

# - Locale and Formatting -

datestyle = 'iso, dmy'#timezone = unknown # actually, defaults to TZ environment# setting#timezone_abbreviations = 'Default' # Select the set of available time zone# abbreviations. Currently, there are# Default# Australia# India# You can create your own file in# share/timezonesets/.#extra_float_digits = 0 # min -15, max 2#client_encoding = sql_ascii # actually, defaults to database# encoding

# These settings are initialized by initdb, but they can be changed.lc_messages = 'ru_RU.UTF-8' # locale for system error message# stringslc_monetary = 'ru_RU.UTF-8' # locale for monetary formattinglc_numeric = 'ru_RU.UTF-8' # locale for number formattinglc_time = 'ru_RU.UTF-8' # locale for time formatting

# default configuration for text searchdefault_text_search_config = 'pg_catalog.russian'

# - Other Defaults -

#explain_pretty_print = on#dynamic_library_path = '$libdir'#local_preload_libraries = ''

#------------------------------------------------------------------------------# LOCK MANAGEMENT#------------------------------------------------------------------------------

#deadlock_timeout = 1s#max_locks_per_transaction = 64 # min 10# (change requires restart)# Note: Each lock table slot uses ~270 bytes of shared memory, and there are# max_locks_per_transaction * (max_connections + max_prepared_transactions)# lock table slots.

#------------------------------------------------------------------------------# VERSION/PLATFORM COMPATIBILITY#------------------------------------------------------------------------------

# - Previous PostgreSQL Versions -

#add_missing_from = off#array_nulls = on#backslash_quote = safe_encoding # on, off, or safe_encoding#default_with_oids = off#escape_string_warning = on#regex_flavor = advanced # advanced, extended, or basic#sql_inheritance = on#standard_conforming_strings = off#synchronize_seqscans = on

# - Other Platforms and Clients -

#transform_null_equals = off

#------------------------------------------------------------------------------# CUSTOMIZED OPTIONS#------------------------------------------------------------------------------

#custom_variable_classes = '' # list of custom variable class names

Сохраните файл.

Последний шаг - мы должны определить, кто должен иметь доступ к серверу. Это настраивается с помощью файла pg_hba.conf file.

sudo gedit /etc/postgresql/8.3/main/pg_hba.conf

Пример рабочего конфига:

# PostgreSQL Client Authentication Configuration File# ===================================================

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# "local" is for Unix domain socket connections onlylocal all all ident sameuser# IPv4 local connections:host all all 127.0.0.1/32 trusthost all all 0.0.0.0/0 trust# IPv6 local connections:host all all ::1/128 md5

Обратите внимание на эту строку:

host all all 0.0.0.0/0 trust

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

Всё, теперь перезапустите сервер:

sudo /etc/init.d/postgresql-8.3 restart

Если вы хотите использовать данный сервер в связке apache2 + php5 + postgresql, то вам необходимо установить следующие пакеты:

sudo apt-get install apache2 libapache2-mod-php5 php5 php5-common php5-gd php5-pgsql

Для удобства можете использовать графический клиент PgAdmin:

sudo apt-get install pgadmin3

Источник

ubuntu.ucoz.org

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

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

07.01.2016 года вышла новая версия СУБД PostgreSQL, а именно PostgreSQL 9.5 , но прежде чем приступать к рассмотрению новых возможностей предлагаю вспомнить, что вообще такое PostgreSQL, а потом уже перейти к установке и обзору новой версии.

Что такое PostgreSQL?

PostgreSQL - это бесплатная и популярная во всем мире объектно-реляционная система управления базами данных (СУБД). PostgreSQL реализована для многих операционных систем, например, таких как: Linux, Solaris, Windows. В ней используется процедурное расширение языка SQL PL/pgSQL.

Что нового в PostgreSQL 9.5?

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

  • INSERT, ON CONFLICT UPDATE (UPSERT) – данная возможность позволяет обработать ситуацию, когда осуществить добавления данных через INSERT нельзя, например, из-за нарушения уникальности или недопустимости значения в одном из полей. Другими словами, вместо того чтобы выдавать ошибку можно просто пропустить выполнение оператора, т.е. ничего не делать или изменить связанные с ключевым полем данные, т.е. в случае, когда запись уже существует, вместо INSERT выполнить UPDATE;
  • ROLLUP, CUBE и GROUPING SETS – эти операторы расширяют возможности GROUP BY, а именно позволяют формировать отчеты, т.е. писать запросы, в которых можно добавлять строки с промежуточным и общим итогом, а также объединять результаты нескольких группировок в один набор данных. В Microsoft SQL Server аналогичные операторы существуют уже достаточно давно, и мы с Вами их подробно рассматривали вот в этом материале ;
  • Row-Level Security (RLS) – это так называемая «Политика безопасности на уровне строк » т.е. теперь можно ограничивать доступ к данным в таблице;
  • BRIN-индексы – это новый тип индексов, который предназначен для обработки очень больших таблиц, в которых определенные столбцы естественным образом отсортированы;
  • Ускоренная сортировка – в PostgreSQL 9.5 при сортировке теперь используется так называемый алгоритм «сокращенных ключей », который позволяет в несколько раз быстрей сортировать текстовые данные и данные типа NUMERIC.

Более подробно обо всех нововведениях в PostgreSQL 9.5 можете посмотреть на странице в «PostgreSQL Wiki » вот она What"s new in PostgreSQL 9.5 .

Где скачать PostgreSQL 9.5 для Windows 7?

После того как Вы перешли на страницу необходимо нажать «Download »

Затем Вас перенаправят на страницу выбора версии PostgreSQL, в нашем случае мы в разделе «Version 9.5.0 » выбираем «Win x86-32 » для 32 разрядной Windows или «Win x86-64 » для 64 разрядной. У меня 32 разрядная Windows 7, поэтому я и щелкаю по кнопке «Win x86-32».

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

Установка PostgreSQL 9.5 на Windows 7

Итак, давайте перейдем к установке PostgreSQL 9.5, мы, кстати, с Вами ранее уже рассматривали установку PostgreSQL, например, для начинающих я показывал, как можно установить PostgreSQL на Linux OpenSUSE 13.2 , а в материале «Установка PostgreSQL 9.4 на CentOS 7.1 » мы разбирали, как можно реализовать так называемый сервер СУБД с использованием PostgreSQL и операционной системы Linux на примере дистрибутива CentOS 7.1. Установку PostgreSQL на операционную систему Windows мы не рассматривали, поэтому сегодня мы и будем устанавливать PostgreSQL 9.5 на Windows 7.

Шаг 1

Запускаем скаченный файл (postgresql-9.5.0-1-windows.exe ). В итоге запустится программа установки и первое окно это окно «Приветствия », жмем «Next ».

Шаг 2

В следующем окне мы указываем каталог, в который необходимо установить PostgreSQL, я оставлю по умолчанию (т.е. на диск C ), жмем «Next ».

Шаг 3

Далее указываем каталог, в котором по умолчанию будут располагаться файлы баз данных. Другими словами здесь при установке Вы можете изменить директорию для хранения файлов баз данных, это может потребоваться в тех случаях, когда количество баз данных будет большое или их размер, т.е. объем будет значительным, как Вы понимаете в этих случаях лучше указать отдельный диск достаточного объема. В моем случае это тестовая установка, поэтому я оставлю по умолчанию, жмем «Next ».

Шаг 4

Затем придумываем, вводим и запоминаем пароль для пользователя postgres (необходимо вводить один и тот же пароль в два поля, для подтверждения ), именно этот пользователь является своего рода «Суперпользователем » т.е. главным администратором, жмем «Next ».

bazava.ru

Установка и настройка PostgreSQL для 1С:Предприятие

Установка PostgreSQL 9.6

Устанавливать будем сборку от компании Postgres Professional. На странице с версией для 1С:Предприятие найдем информацию об установке на CentOS 7 свежей версии PostgreSQL.

Подключим репозитории и установим PostgreSQL 9.6:

sudo rpm -ivh http://1c.postgrespro.ru/keys/postgrespro-1c-centos96.noarch.rpm sudo yum makecache sudo yum install postgresql-pro-1c-9.6

Базовая настройка PostgreSQL

Инициализируем служебные базы данных с русской локализацией:

su postgres /usr/pgsql-9.6/bin/initdb -D /var/lib/pgsql/9.6/data --locale=ru_RU.UTF-8 exit service postgresql-9.6 initdb

Запускаем службу PostgreSQL и добавляем его в автозагрузку:

systemctl enable postgresql-9.6 systemctl start postgresql-9.6 systemctl status postgresql-9.6

Задаем пароль пользователю postgres, для того чтобы была возможность подключаться к серверу удаленно:

su - postgres psql ALTER USER postgres WITH ENCRYPTED PASSWORD 'yourpassword'; \q exit

Для возможности пользователю postgres авторизовываться по паролю отредактируем файл pg_hba.conf:

mcedit /var/lib/pgsql/9.6/data/pg_hba.conf

в открывшемся файле раскомментируем и изменим строки:

host all all 127.0.0.1/32 ident на host all all 127.0.0.1/32 md5

host all all 0.0.0.0/0 ident на host all all 0.0.0.0/0 md5

Оптимизация настроек PostgreSQL (postgresql.conf) для 1С:Предприятие

Здесь будут настройки для PostgreSQL, работающей в виртуальной машине ESXi 6.5.

Ресурсы выделенные для ВМ:

процессор — 8 vCPU;

память — 48 GB;

диск для ОС — 50 GB на LUN аппаратном RAID1 из SAS HDD;

диск для БД — 170 GB на программном RAID1 из SSD

диск для логов — 100 GB на программном RAID1 из SSD

Для редактирования настроек выполним команду:

mcedit /var/lib/pgsql/9.6/data/postgresql.conf

Закомментированные параметры, которые будем изменять необходимо активировать.

Процессор

autovacuum_max_workers = 4

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

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

ssl = off

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

Память

shared_buffers = 12GB

shared_buffers = RAM/4

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

temp_buffers = 256MB

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

work_mem = 64MB

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

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

maintenance_work_mem = 2GB

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

Лимит памяти для обслуживающих задач, например по сбору статистики (ANALYZE), сборке мусора (VACUUM), создания индексов (CREATE INDEX) и добавления внешних ключей. Размер выделяемой под эти операции памяти должен быть сравним с физическим размером самого большого индекса на диске.

effective_cache_size = 36GB

effective_cache_size = RAM — shared_buffers

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

Диски

effective_io_concurrency = 5

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

random_page_cost = 1.3

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

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

autovacuum = on

Включение автовакуума.

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

wal_keep_segments = 256

wal_keep_segments = 32..256

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

wal_buffers = 16MB

Объём разделяемой памяти, который будет использоваться для буферизации данных WAL, ещё не записанных на диск. Значение по умолчанию, равное -1, задаёт размер, равный 1/32 (около 3%) от shared_buffers, но не меньше, чем 64 КБ и не больше, чем размер одного сегмента WAL (обычно 16 МБ). Это значение можно задать вручную, если выбираемое автоматически слишком мало или велико, но при этом любое положительное число меньше 32 КБ будет восприниматься как 32 КБ. Этот параметр можно задать только при запуске сервера.

Содержимое буферов WAL записывается на диск при фиксировании каждой транзакции, так что очень большие значения вряд ли принесут значительную пользу. Однако значение как минимум в несколько мегабайт может увеличить быстродействие при записи на нагруженном сервере, когда сразу множество клиентов фиксируют транзакции. Автонастройка, действующая при значении по умолчанию (-1), в большинстве случаев выбирает разумные значения.

default_statistics_target = 1000

Устанавливает целевое ограничение статистики по умолчанию, распространяющееся на столбцы, для которых командой ALTER TABLE SET STATISTICS не заданы отдельные ограничения. Чем больше установленное значение, тем больше времени требуется для выполнения ANALYZE, но тем выше может быть качество оценок планировщика. Значение этого параметра по умолчанию — 100.

checkpoint_completion_target = 0.9

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

min_wal_size = 4G max_wal_size = 8G 

min_wal_size = 512MB .. 4Gmax_wal_size = 2 * min_wal_size

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

fsync = on

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

row_security = off 

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

enable_nestloop = off

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

Блокировки

max_locks_per_transaction = 256

Максимальное число блокировок индексов/таблиц в одной транзакции

Настройки под платформу 1С

standard_conforming_strings = off

Разрешить использовать символ \ для экранирования

escape_string_warning = off

Не выдавать предупреждение о использовании символа \ для экранирования

Настройка безопасности

Сделаем так, чтобы сервер PostgreSQL был виден только для сервера 1С: Предприятие, установленного на этой же машине.

listen_addresses = ‘localhost’

Если сервер 1С: Предприятие установлен на другой машине или существует необходимость подключиться подключиться к серверу СУБД с помощью оснастки PGAdmin, то вместо localhost нужно указать адрес этой машины.

 

Хранение базы данных

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

Останавливаем сервер

 systemctl stop postgresql-9.6

Переносим логи на созданный RAID1 из 120GB SSD:

mv /var/lib/pgsql/9.6/data/pg_xlog /raid120 mv /var/lib/pgsql/9.6/data/pg_clog /raid120 mv /var/lib/pgsql/9.6/data/pg_log /raid120

Создаем символьные ссылки:

ln -s /raid120/pg_xlog /var/lib/pgsql/9.6/data/pg_xlog ln -s /raid120/pg_clog /var/lib/pgsql/9.6/data/pg_clog ln -s /raid120/pg_log /var/lib/pgsql/9.6/data/pg_log

Так же перенесем каталог с базами:

mv /var/lib/pgsql/9.6/data/base /raid200

и создадим символьную ссылку:

ln -s /raid200/base /var/lib/pgsql/9.6/data/base

запустим сервер и проверим его статус

systemctl start postgresql-9.6 systemctl status postgresql-9.6

 

 

Поделиться ссылкой:

Похожее

kazhaev.ru

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

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

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

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

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

Входим под суперпользователем root.

Устанавливаем PostgreSQL:

cd /usr/ports/databases/postgresql93-server

make all install clean

После этого открываем файл /etc/rc.conf и в нём пропишем:

postgresql_enable=″YES″

Запускаем инициализацию:

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

Затем открываем файл /usr/local/pgsql/data/postgresql.conf, ищем закомментированную строку

#listen_addresses = ‘localhost’

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

Сохраняем и закрываем файл.

Теперь открываем файл /usr/local/pgsql/data/pg_hba.conf, находим строчку

host all all 127.0.0.1/32 trust

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

host all all 192.168.0.0/24 md5

Сохраняем и закрываем файл.

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

service postgresql start

Входим под пользователем pgsql:

su pgsql

и создадим пользователя dbuser1:

createuser -sdrP dbuser1

вводим пароль 2 раза

и выходим:

exit

Готово!

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

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

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

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

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

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

на Ваш сайт.

osc.dondub.com

PostgreSQL: установка, настройка, обслуживание.

PostgreSQL напрямую "из коробки" применяться для использования с 1С Предприятем не может. Необходима именно адаптированная версия от 1С, превращающая PostgreSQL в блокировочник, причем нужно понимать, что блокировки будут накладываться на всю таблицу сразу. Если нужны блокировки на уровне записей, включаем в 1С режим управляемых блокировок и прописываем их в конфигурации ручками. Вывод: необходимо скачать специальный дистрибутив с сайта 1С или взять на диске ИТС.

Установка

Сама установка особых затруднений не вызывает, обратить внимание нужно на правильную инициализацию базы данных, а именно настройку локали, изменить потом это можно только повторной начальной инициализацией. Например, база 1С с украинскими региональными установками в СУБД с установленной русской локалью не загрузится. Да и проблемы с сортировкой потом не нужны. Поэтому делаем init в соответствии с нужным языком.

Для русского языка

initdb --locale=ru_RU.UTF-8 --lc-collate=ru_RU.UTF-8 --lc-ctype=ru_RU.UTF-8 --encoding=UTF8 -D /db/postgresql

Для украинского языка

initdb --locale=uk_UA.UTF-8 --lc-collate=uk_UA.UTF-8 --lc-ctype=uk_UA.UTF-8 --encoding=UTF8 -D /db/postgresql

где /db/postgresql ваш каталог данных PostgreSQL. Кодировка, конечно же, UTF-8.

Подробный вариант пересоздания кластера

1.Необходимо выдать полные права на папку в которую мы установили PostgreSQL, обычно это C:\Program Files\PostgreSQL

2.Из под админских прав запускаем cmd. Если это делаете в win7, то запускаем от Администратора.

3.Создаем папку где будет храниться кластер. Например d:\postgredata.

md d:\postgredata

4.Проводим инициализацию кластера вручную с указанием пути где он будет находиться.

“C:\Program Files\PostgreSQL\9.1.2-1.1C\bin\initdb.exe” -D d:\postgredata --locale=Russian_Russia --encoding=UTF8 -U postgres

5.Удаляем службу PostgreSQL, которая была установлена в ходе установки.

sc delete pgsql-9.1.2-1.1C-x64

Где pgsql-9.1.2-1.1C-x64 – Это название службы. Если не знаете название точно, можно посмотреть свойствах службы “PostgreSQL Database Server…” (Пуск – Панель управления – Администрирование – Службы)

6.Создаем новый сервис с указанием нашего кластера

“C:\Program Files\PostgreSQL\9.1.2-1.1C\bin\pg_ctl” register -N pgsql -U postgresql -P пароль -D d:/postgredata

7.Теперь заходим в службы. Пуск – Панель управления – Администрирование – Службы и стартуем нашу службу.

Ошибка СУБД: ERROR: new encoding (UTF8) is incompatible with the encoding of the template database (WIN1251).

HINT: Use the same encoding as in the template database, or use template0 as template.

Вы выбрали неправильную локаль при установке СУБД (WIN1251) для сервера и клиента, нужно изменить на UTF-8 в конфигурации или переустановить СУБД со следующими параметрами:

Внимание при установке НЕ выбирайте локаль Настройки ОС, выбирайте из списка Russian, Russia

Настройка PostgreSQL

Следует помнить о рекомендации 1С не использовать в запросах конструкции ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ и заменять его, используя, например, комбинацию из нескольких левых соединений. Известна также проблема с потерей производительности в запросах, где применяется соединение с виртуальной таблицей СрезПоследних, к ней рекомендуется делать отдельные запросы и сохранять результаты во временных таблицах.

Настройка конфигурации производится редактированем файла postgresql.conf.

Наиболее важные параметры

effective_cache_size = 0,5 от ёмкости RAM

fsync = off отключаем сброс на диск после каждой транзации (Внимание! Применять только при использовании надежного UPS, есть опасность потери данных при неожиданном отключении)

synchronous_commit = off отключаем синхронную запись в лог (риски теже, что и у fsync)

wal_buffers = 0,25 от ёмкости RAM

После настройки не забываем выполнить перезапуск службы:

service postgresql restart

Настройка сети

Для подключения клиентов 1С к серверу извне и работы сервера баз данных, на файрволе, должны быть открыты следующие порты:

Агент сервера (ragent) & tcp:1540 Главный менеджер кластера (rmngr) & tcp:1541 Диапазон сетевых портов, для динамического распределения рабочих процессов & tcp:1560&1591, tcp:5432 & Postgresql. Создадим правило через стандартный интерфейс, либо с помощью команды:

netsh advfirewall firewall add rule name="1Cv8-Server" dir=in action=allow protocol=TCP localport=1540,1541,5432,1560-1590 enable=yes profile=ANY remoteip=ANY interfacetype=LAN

Теперь с другого компьютера мы спокойно запускаем клиент 1С:Предприятия, добавляем существующую информационную базу newdb. Не забываем про лицензии, программной / аппаратной защиты.

Резервное копирование

Создание дампа базы данных делаем командой

su postgres -c "pg_dump -U postgres -Fc -Z9 -f baza1.sql baza1"

Восстановление из дампа

su postgres -c "pg_restore -U postgres -c -d baza1 -v baza1.sql"

Периодическое обслуживание

su postgres -c "/usr/bin/vacuumdb --dbname=$i --analyze --full --quiet"

Просмотр активности PostgreSQL

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

watch -n 1 "ps auxww | grep ^postgres"

PostgreSQL - это объектно-реляционная система баз данных, которая обладает признаками традиционной коммерческой базы данных, с расширениями, которые будут доступны следующему поколению СУБД (систем управления базами данных).

Установка

Для установки PostgreSQL выполните следующую команду в терминале:

Sudo apt-get install postgresql

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

Настройка

По умолчанию соединения через TCP/IP заблокированы. PostgreSQL поддерживает множество методов аутентификации. Метод аутентификации IDENT используется для postgres и локальных пользователей пока не настроено что-то еще. Обратитесь к , если вы собираетесь использовать какую-либо альтернативу типа Kerberos.

Дальнейшее обсуждение предполагает, что вы собираетесь разрешить соединения по TCP/IP и используете аутентификацию клиентов на основе метода MD5. Файлы настроек PostgreSQL хранятся в каталоге /etc/postgresql//main . Например, если вы установили PostgreSQL 8.4, файлы настроек сохранятся в каталоге /etc/postgresql/8.4/main.

Для настройки аутентификации ident добавьте записи в файл /etc/postgresql/8.4/main/pg_ident.conf. В файле содержатся подробные комментарии чтобы направлять вас.

Чтобы разрешить соединения по TCP/IP, отредактируйте файл /etc/postgresql/8.4/main/postgresql.conf. Найдите строку

#listen_addresses = "localhost"

и замените ее на:

Listen_addresses = "localhost"

Чтобы разрешить другим компьютерам соединяться с вашим PostgreSQL сервером, замените "localhost" на IP адрес вашего сервера или в качестве альтернативы на 0.0.0.0, чтобы подключить все интерфейсы.

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

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

comuedu.ru

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

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

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

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

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

Входим под суперпользователем root.

Подключаем репозиторий с сайта PostgreSQL:

для CentOS версии i386

rpm -i http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm

для CentOS версии x86_64

rpm -i http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm

Устанавливаем:

yum install postgresql93-server postgresql93 postgresql93-libs postgresql93-devel -y

Добавляем PostgreSQL в автозапуск:

chkconfig postgresql-9.3 on

После этого запускаем

system-config-firewall-tui

и открываем порт 5432 по протоколу TCP как показано на скриншотах:

Нажимаем «Вперёд», ничего не выбирая.

Нажимаем «Добавить» и вписываем порт 5432 и протокол tcp

Нажимаем «OK»

Нажимаем «Вперёд» 

В окне «Доверенные интерфейсы» выбираем eth+ и жмём «Вперёд»

В окне «Маскарад» выбираем eth+ и жмём «Вперёд»

Нажимаем «Вперёд»

Нажимаем «Закрыть»

Нажимаем «Закрыть»

Нажимаем «OK»

 

Теперь необходимо инициализировать БД с помощью команды:

service postgresql-9.3 initdb

После этого поправим конфиги. Они находятся в /var/lib/pgsql/data.

В файле 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

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

service postgresql-9.3 start

Входим под пользователем postgres:

su postgres

и создадим пользователя dbuser1:

createuser -sdrP dbuser1

вводим пароль 2 раза

и выходим:

exit

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

service postgresql-9.3 restart

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

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

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

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

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

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

на Ваш сайт.

osc.dondub.com