<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://adm30.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D1%87%D0%BA%D0%B0%3A_PostgreSQL</id>
	<title>Методичка: PostgreSQL - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://adm30.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D1%87%D0%BA%D0%B0%3A_PostgreSQL"/>
	<link rel="alternate" type="text/html" href="https://adm30.ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D1%87%D0%BA%D0%B0:_PostgreSQL&amp;action=history"/>
	<updated>2026-10-19T23:21:22Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.41.5</generator>
	<entry>
		<id>https://adm30.ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D1%87%D0%BA%D0%B0:_PostgreSQL&amp;diff=3054&amp;oldid=prev</id>
		<title>Admin в 14:07, 7 октября 2026</title>
		<link rel="alternate" type="text/html" href="https://adm30.ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D1%87%D0%BA%D0%B0:_PostgreSQL&amp;diff=3054&amp;oldid=prev"/>
		<updated>2026-10-07T14:07:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Конфигурация системы ==&lt;br /&gt;
&lt;br /&gt;
=== Организация объектов файловой системы ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkdir -p /home/postgres/{archive,backup,tablespace} /home/postgres/{cluster,wal}/$MAJOR_VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chown -R postgres:postgres /home/postgres&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Директория||Назначение||Имеет&amp;amp;nbsp;поддиректорию&amp;lt;br&amp;gt;$MAJOR_VERSION||Применяемые&amp;lt;br&amp;gt;права&amp;amp;nbsp;доступа&lt;br /&gt;
|-&lt;br /&gt;
|$HOME/archive&lt;br /&gt;
|Долгосрочный архив копий баз данных&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|Нет&lt;br /&gt;
|chmod 0750&lt;br /&gt;
|-&lt;br /&gt;
|$HOME/backup&lt;br /&gt;
|Осуществление систематического резервного копирования баз данных&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|Нет&lt;br /&gt;
|chmod 0750&lt;br /&gt;
|-&lt;br /&gt;
|$HOME/cluster&lt;br /&gt;
|Головная директория данных кластера&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|Да&lt;br /&gt;
|chmod 0700&lt;br /&gt;
|-&lt;br /&gt;
|$HOME/{,lvm[0-9]/}tablespace&lt;br /&gt;
|Директория табличных пространств&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|Нет&lt;br /&gt;
|chmod 0700&lt;br /&gt;
|-&lt;br /&gt;
|$HOME/{,lvm[0-9]/}wal&lt;br /&gt;
|Директория содержит по средством символической ссылки вынесенную из директории кластера поддиректорию pg_wal&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|Да&lt;br /&gt;
|chmod 0700&lt;br /&gt;
|-&lt;br /&gt;
|/var/socket/postgresql&lt;br /&gt;
|Директория подключения к СУБД посредством unix-сокета&amp;lt;br&amp;gt;&amp;lt;i&amp;gt;Доступ к директории имеет только СУБД и приложение, подключаемое к СУБД&amp;lt;/i&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|Да&lt;br /&gt;
|chown&amp;amp;nbsp;postgres:postgres&amp;lt;br&amp;gt;chmod&amp;amp;nbsp;0700&amp;lt;br&amp;gt;setfacl&amp;amp;nbsp;-m&amp;amp;nbsp;u:$user_name:rwx&amp;amp;nbsp;&amp;lt;br&amp;gt;setfacl&amp;amp;nbsp;-d&amp;amp;nbsp;-m&amp;amp;nbsp;u:$user_name:rwx&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Файл||Назначение||Применяемые&amp;lt;br&amp;gt;права&amp;amp;nbsp;доступа&lt;br /&gt;
|-&lt;br /&gt;
|$HOME/.pgpass&lt;br /&gt;
|Содержание паролей подключения к базам данных&lt;br /&gt;
|chmod 0600&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Подсистема управления службами ===&lt;br /&gt;
&lt;br /&gt;
Основной юнит [[systemd]] запуска службы СУБД&lt;br /&gt;
&lt;br /&gt;
Имя юнита: &amp;lt;code&amp;gt;postgresql-$MAJOR_VERSION.service&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=PostgreSQL $MAJOR_VERSION database server&lt;br /&gt;
 #Requires=home-postgres-cluster-$MAJOR_VERSION-pg_stat_tmp.mount&lt;br /&gt;
 #After=home-postgres-cluster-$MAJOR_VERSION-pg_stat_tmp.mount&lt;br /&gt;
 After=network.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 OOMScoreAdjust=-1000&lt;br /&gt;
 TimeoutStartSec=0&lt;br /&gt;
 TimeoutStopSec=1h&lt;br /&gt;
 &lt;br /&gt;
 User=postgres&lt;br /&gt;
 Group=postgres&lt;br /&gt;
 Environment=PGDATA=/home/postgres/cluster/$MAJOR_VERSION&lt;br /&gt;
 &lt;br /&gt;
 ExecStart=/usr/lib/postgresql/$MAJOR_VERSION/bin/pg_ctl start -D ${PGDATA} -s&lt;br /&gt;
 ExecStop=/usr/lib/postgresql/$MAJOR_VERSION/bin/pg_ctl stop -D ${PGDATA} -s -m fast&lt;br /&gt;
 ExecReload=/usr/lib/postgresql/$MAJOR_VERSION/bin/pg_ctl reload -D ${PGDATA} -s&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=multi-user.target&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вспомогательный юнит [[systemd]] монтирования директории &amp;lt;code&amp;gt;/home/postgres/cluster/$MAJOR_VERSION/pg_stat_tmp&amp;lt;/code&amp;gt; в &amp;lt;code&amp;gt;tmpfs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Начиная с PostgreSQL 15 версии статистика сохраняется в shared memory&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Имя юнита: &amp;lt;code&amp;gt;home-postgres-cluster-$MAJOR_VERSION-pg_stat_tmp.mount&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=PostgreSQL $MAJOR_VERSION (pg_stat_tmp mount)&lt;br /&gt;
 DefaultDependencies=no&lt;br /&gt;
 Conflicts=umount.target&lt;br /&gt;
 Before=local-fs.target&lt;br /&gt;
 &lt;br /&gt;
 [Mount]&lt;br /&gt;
 What=tmpfs&lt;br /&gt;
 Where=/home/postgres/cluster/$MAJOR_VERSION/pg_stat_tmp&lt;br /&gt;
 Type=tmpfs&lt;br /&gt;
 Options=size=1G,mode=0700,uid=postgres,gid=postgres,nosuid,noexec,nodev&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=local-fs.target&lt;br /&gt;
&lt;br /&gt;
== Конфигурация кластера ==&lt;br /&gt;
&lt;br /&gt;
[https://its.1c.ru/db/metod8dev/content/5866/hdoc Методичка от 1С]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;.pgpass&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;505050&amp;quot;&amp;gt;//host_name:tcp_port:base_name:role_name:password&amp;lt;/font&amp;gt;&lt;br /&gt;
 *:*:*:dbuser0:password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Переменная окружения &amp;lt;code&amp;gt;PGPASSFILE&amp;lt;/code&amp;gt; переопределяет путь файла&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;pg_hba.conf&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;505050&amp;quot;&amp;gt;//type {local,host}, database, role, address, method {trust,md5}&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;505050&amp;quot;&amp;gt;//local all postgres trust&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;505050&amp;quot;&amp;gt;//local all all md5&amp;lt;/font&amp;gt;&lt;br /&gt;
 local all dbuser0 md5&lt;br /&gt;
 host all all 127.0.0.1/32 md5&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;postgresql.conf&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 listen_addresses = '127.0.0.1'&lt;br /&gt;
 unix_socket_directories = '/var/socket/postgresql/$MAJOR_VERSION'&lt;br /&gt;
 &lt;br /&gt;
 shared_buffers = 4GB&lt;br /&gt;
 temp_buffers = 16MB&lt;br /&gt;
 work_mem = 128MB&lt;br /&gt;
 maintenance_work_mem = 1GB&lt;br /&gt;
 max_files_per_process = 8000&lt;br /&gt;
 bgwriter_delay = 1000ms&lt;br /&gt;
 bgwriter_lru_maxpages = 500&lt;br /&gt;
 bgwriter_lru_multiplier = 4.0&lt;br /&gt;
 effective_io_concurrency = {1,100} &amp;lt;font color=&amp;quot;505050&amp;quot;&amp;gt;//{HDD,SSD}&amp;lt;/font&amp;gt;&lt;br /&gt;
 max_worker_processes = &amp;lt;font color=&amp;quot;505050&amp;quot;&amp;gt;//кол-во ядер&amp;lt;/font&amp;gt;&lt;br /&gt;
 max_parallel_maintenance_workers = &amp;lt;font color=&amp;quot;505050&amp;quot;&amp;gt;//кол-во парралельных процессов на один узел / одну служебную команду&amp;lt;/font&amp;gt;&lt;br /&gt;
 max_parallel_workers_per_gather = max_parallel_maintenance_workers&lt;br /&gt;
 max_parallel_workers = max_worker_processes&lt;br /&gt;
 &lt;br /&gt;
 wal_level = minimal&lt;br /&gt;
 fsync = off&lt;br /&gt;
 synchronous_commit = off&lt;br /&gt;
 &lt;br /&gt;
 checkpoint_timeout = 10min&lt;br /&gt;
 max_wal_size = 2GB&lt;br /&gt;
 min_wal_size = 512MB&lt;br /&gt;
 max_wal_senders = 0&lt;br /&gt;
 &lt;br /&gt;
 max_logical_replication_workers = 0&lt;br /&gt;
 &lt;br /&gt;
 effective_cache_size = RAM - shared_buffers&lt;br /&gt;
 &lt;br /&gt;
 log_timezone = 'Europe/Astrakhan'&lt;br /&gt;
 &lt;br /&gt;
 seq_page_cost = {1.0,0.5,0.1} &amp;lt;font color=&amp;quot;505050&amp;quot;&amp;gt;//{HDD,SSD,NVME}&amp;lt;/font&amp;gt;&lt;br /&gt;
 random_page_cost = {2.0,1.0,0.1} &amp;lt;font color=&amp;quot;505050&amp;quot;&amp;gt;//{HDD,SSD,NVME}&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 autovacuum = on&lt;br /&gt;
 autovacuum_worker_slots = 4&lt;br /&gt;
 autovacuum_max_workers = 4&lt;br /&gt;
 autovacuum_naptime = 30s&lt;br /&gt;
 autovacuum_vacuum_cost_delay = 10ms&lt;br /&gt;
 &lt;br /&gt;
 row_security = off&lt;br /&gt;
 timezone = 'Europe/Astrakhan'&lt;br /&gt;
 max_locks_per_transaction = 2000&lt;br /&gt;
 escape_string_warning = off&lt;br /&gt;
 standard_conforming_strings = off&lt;br /&gt;
&lt;br /&gt;
 local_number=$( grep -E -n &amp;quot;^#temp_buffers&amp;quot; postgresql.conf | cut -d &amp;quot;:&amp;quot; -f 1 )&lt;br /&gt;
 sed -i &amp;quot;${local_number}i\temp_buffers = 16MB&amp;quot; postgresql.conf&lt;br /&gt;
 &lt;br /&gt;
 local_number=$( grep -E -n &amp;quot;^#work_mem&amp;quot; postgresql.conf | cut -d &amp;quot;:&amp;quot; -f 1 )&lt;br /&gt;
 sed -i &amp;quot;${local_number}i\work_mem = 128MB&amp;quot; postgresql.conf&lt;br /&gt;
 &lt;br /&gt;
 local_number=$( grep -E -n &amp;quot;^#maintenance_work_mem&amp;quot; postgresql.conf | cut -d &amp;quot;:&amp;quot; -f 1 )&lt;br /&gt;
 sed -i &amp;quot;${local_number}i\maintenance_work_mem = 1GB&amp;quot; postgresql.conf&lt;br /&gt;
 &lt;br /&gt;
 local_number=$( grep -E -n &amp;quot;^#max_worker_processes&amp;quot; postgresql.conf | cut -d &amp;quot;:&amp;quot; -f 1 )&lt;br /&gt;
 sed -i &amp;quot;${local_number}i\max_worker_processes = 2&amp;quot; postgresql.conf&lt;br /&gt;
 &lt;br /&gt;
 local_number=$( grep -E -n &amp;quot;^#wal_level&amp;quot; postgresql.conf | cut -d &amp;quot;:&amp;quot; -f 1 )&lt;br /&gt;
 sed -i &amp;quot;${local_number}i\wal_level = minimal&amp;quot; postgresql.conf&lt;br /&gt;
 &lt;br /&gt;
 local_number=$( grep -E -n &amp;quot;^#fsync&amp;quot; postgresql.conf | cut -d &amp;quot;:&amp;quot; -f 1 )&lt;br /&gt;
 sed -i &amp;quot;${local_number}i\fsync = off&amp;quot; postgresql.conf&lt;br /&gt;
 &lt;br /&gt;
 local_number=$( grep -E -n &amp;quot;^#synchronous_commit&amp;quot; postgresql.conf | cut -d &amp;quot;:&amp;quot; -f 1 )&lt;br /&gt;
 sed -i &amp;quot;${local_number}i\synchronous_commit = off&amp;quot; postgresql.conf&lt;br /&gt;
 &lt;br /&gt;
 local_number=$( grep -E -n &amp;quot;^#max_wal_senders&amp;quot; postgresql.conf | cut -d &amp;quot;:&amp;quot; -f 1 )&lt;br /&gt;
 sed -i &amp;quot;${local_number}i\max_wal_senders = 0&amp;quot; postgresql.conf&lt;br /&gt;
 &lt;br /&gt;
 local_number=$( grep -E -n &amp;quot;^#row_security&amp;quot; postgresql.conf | cut -d &amp;quot;:&amp;quot; -f 1 )&lt;br /&gt;
 sed -i &amp;quot;${local_number}i\row_security = off&amp;quot; postgresql.conf&lt;br /&gt;
 &lt;br /&gt;
 local_number=$( grep -E -n &amp;quot;^#escape_string_warning&amp;quot; postgresql.conf | cut -d &amp;quot;:&amp;quot; -f 1 )&lt;br /&gt;
 sed -i &amp;quot;${local_number}i\escape_string_warning = off&amp;quot; postgresql.conf&lt;br /&gt;
 &lt;br /&gt;
 local_number=$( grep -E -n &amp;quot;^#standard_conforming_strings&amp;quot; postgresql.conf | cut -d &amp;quot;:&amp;quot; -f 1 )&lt;br /&gt;
 sed -i &amp;quot;${local_number}i\standard_conforming_strings = off&amp;quot; postgresql.conf&lt;br /&gt;
 &lt;br /&gt;
 local_number=$( grep -E -n &amp;quot;^#max_locks_per_transaction&amp;quot; postgresql.conf | cut -d &amp;quot;:&amp;quot; -f 1 )&lt;br /&gt;
 sed -i &amp;quot;${local_number}i\max_locks_per_transaction = 2000&amp;quot; postgresql.conf&lt;br /&gt;
&lt;br /&gt;
== Связанные разделы ==&lt;br /&gt;
&lt;br /&gt;
[[PostgreSQL|Основной раздел по PostgreSQL]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>