Установка и конфигурация PostgreSQL: различия между версиями

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к навигации Перейти к поиску
Новая страница: «= Установка и конфигурация PostgreSQL = == 1. Подготовка системы == * Войдите в систему под учетн…»
 
Нет описания правки
 
Строка 6: Строка 6:
* Убедитесь, что у вас есть доступ к серверу через SSH или консоль.
* Убедитесь, что у вас есть доступ к серверу через SSH или консоль.


== 2. Установка PostgreSQL ===
== 2. Установка PostgreSQL ==


=== Обновление системы ===
=== Обновление системы ===


1. Обновите систему:
1. Обновите систему:
<code>sudo apt update</code>
<pre>sudo apt update</pre>


2. Установите необходимые пакеты:
2. Установите необходимые пакеты:
<code>sudo apt install -y wget ca-certificates</code>
<pre>sudo apt install -y wget ca-certificates</pre>


=== Установка PostgreSQL ===
=== Установка PostgreSQL ===


1. Добавьте официальный репозиторий PostgreSQL:
1. Добавьте официальный репозиторий PostgreSQL:
<code>wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -</code>
<pre>wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -</pre>


2. Добавьте репозиторий в источники:
2. Добавьте репозиторий в источники:
<code>echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list</code>
<pre>echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list</pre>


3. Обновите список пакетов:
3. Обновите список пакетов:
<code>sudo apt update</code>
<pre>sudo apt update</pre>


4. Установите PostgreSQL 15:
4. Установите PostgreSQL 15:
<code>sudo apt install -y postgresql-15 postgresql-client-15 postgresql-contrib-15</code>
<pre>sudo apt install -y postgresql-15 postgresql-client-15 postgresql-contrib-15</pre>


5. Проверьте версию:
5. Проверьте версию:
<code>psql --version</code>
<pre>psql --version</pre>


== 3. Первоначальная настройка ===
== 3. Первоначальная настройка ==


=== Запуск PostgreSQL ===
=== Запуск PostgreSQL ===


1. Запустите и включите автозапуск PostgreSQL:
1. Запустите и включите автозапуск PostgreSQL:
<code>sudo systemctl start postgresql</code>
<pre>sudo systemctl start postgresql</pre>
<code>sudo systemctl enable postgresql</code>
<pre>sudo systemctl enable postgresql</pre>


2. Проверьте статус:
2. Проверьте статус:
<code>sudo systemctl status postgresql</code>
<pre>sudo systemctl status postgresql</pre>


=== Настройка пользователя postgres ===
=== Настройка пользователя postgres ===


1. Переключитесь на пользователя postgres:
1. Переключитесь на пользователя postgres:
<code>sudo -u postgres psql</code>
<pre>sudo -u postgres psql</pre>


2. Установите пароль для пользователя postgres:
2. Установите пароль для пользователя postgres:
<code>ALTER USER postgres PASSWORD 'your_strong_password';</code>
<pre>ALTER USER postgres PASSWORD 'your_strong_password';</pre>


3. Выйдите из psql:
3. Выйдите из psql:
<code>\q</code>
<pre>\q</pre>


=== Создание базы данных и пользователя ===
=== Создание базы данных и пользователя ===


1. Создайте нового пользователя:
1. Создайте нового пользователя:
<code>sudo -u postgres createuser --interactive</code>
<pre>sudo -u postgres createuser --interactive</pre>


2. Создайте базу данных:
2. Создайте базу данных:
<code>sudo -u postgres createdb mydatabase</code>
<pre>sudo -u postgres createdb mydatabase</pre>


3. Подключитесь к базе данных:
3. Подключитесь к базе данных:
<code>sudo -u postgres psql mydatabase</code>
<pre>sudo -u postgres psql mydatabase</pre>


== 4. Конфигурация PostgreSQL ===
== 4. Конфигурация PostgreSQL ==


=== Основные настройки ===
=== Основные настройки ===


1. Найдите файл конфигурации:
1. Найдите файл конфигурации:
<code>sudo find /etc -name "postgresql.conf" 2>/dev/null</code>
<pre>sudo find /etc -name "postgresql.conf" 2>/dev/null</pre>


2. Отредактируйте основной конфигурационный файл:
2. Отредактируйте основной конфигурационный файл:
<code>sudo nano /etc/postgresql/15/main/postgresql.conf</code>
<pre>sudo nano /etc/postgresql/15/main/postgresql.conf</pre>


3. Настройте основные параметры:
3. Настройте основные параметры:
<code># Сетевые настройки
<pre>\# Сетевые настройки
listen_addresses = '*'
listen_addresses = '*'
port = 5432
port = 5432


# Настройки памяти
\# Настройки памяти
shared_buffers = 256MB
shared_buffers = 256MB
effective_cache_size = 1GB
effective_cache_size = 1GB
Строка 87: Строка 87:
maintenance_work_mem = 64MB
maintenance_work_mem = 64MB


# Настройки логирования
\# Настройки логирования
log_destination = 'stderr'
log_destination = 'stderr'
logging_collector = on
logging_collector = on
Строка 101: Строка 101:
log_lock_waits = on
log_lock_waits = on


# Настройки безопасности
\# Настройки безопасности
ssl = on
ssl = on
ssl_cert_file = 'server.crt'
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
ssl_key_file = 'server.key'
</code>
</pre>


=== Настройка аутентификации ===
=== Настройка аутентификации ===


1. Отредактируйте файл pg_hba.conf:
1. Отредактируйте файл pg_hba.conf:
<code>sudo nano /etc/postgresql/15/main/pg_hba.conf</code>
<pre>sudo nano /etc/postgresql/15/main/pg_hba.conf</pre>


2. Настройте методы аутентификации:
2. Настройте методы аутентификации:
<code># TYPE  DATABASE        USER            ADDRESS                METHOD
<pre>\# TYPE  DATABASE        USER            ADDRESS                METHOD


# "local" is for Unix domain socket connections only
\# "local" is for Unix domain socket connections only
local  all            postgres                                peer
local  all            postgres                                peer
local  all            all                                    md5
local  all            all                                    md5


# IPv4 local connections:
\# IPv4 local connections:
host    all            all            127.0.0.1/32            md5
host    all            all            127.0.0.1/32            md5
host    all            all            0.0.0.0/0              md5
host    all            all            0.0.0.0/0              md5


# IPv6 local connections:
\# IPv6 local connections:
host    all            all            ::1/128                md5
host    all            all            ::1/128                md5
</code>
</pre>


=== Настройка SSL ===
=== Настройка SSL ===


1. Создайте SSL сертификаты:
1. Создайте SSL сертификаты:
<code>sudo -u postgres openssl req -new -x509 -days 365 -nodes -text -out /var/lib/postgresql/15/main/server.crt -keyout /var/lib/postgresql/15/main/server.key -subj "/CN=postgresql-server"</code>
<pre>sudo -u postgres openssl req -new -x509 -days 365 -nodes -text -out /var/lib/postgresql/15/main/server.crt -keyout /var/lib/postgresql/15/main/server.key -subj "/CN=postgresql-server"</pre>


2. Установите права на сертификаты:
2. Установите права на сертификаты:
<code>sudo chmod 600 /var/lib/postgresql/15/main/server.key</code>
<pre>sudo chmod 600 /var/lib/postgresql/15/main/server.key</pre>
<code>sudo chown postgres:postgres /var/lib/postgresql/15/main/server.*</code>
<pre>sudo chown postgres:postgres /var/lib/postgresql/15/main/server.*</pre>


== 5. Управление PostgreSQL ===
== 5. Управление PostgreSQL ==


=== Основные команды ===
=== Основные команды ===


1. '''Запуск PostgreSQL''':
1. '''Запуск PostgreSQL''':
<code>sudo systemctl start postgresql</code>
<pre>sudo systemctl start postgresql</pre>


2. '''Остановка PostgreSQL''':
2. '''Остановка PostgreSQL''':
<code>sudo systemctl stop postgresql</code>
<pre>sudo systemctl stop postgresql</pre>


3. '''Перезапуск PostgreSQL''':
3. '''Перезапуск PostgreSQL''':
<code>sudo systemctl restart postgresql</code>
<pre>sudo systemctl restart postgresql</pre>


4. '''Проверка статуса''':
4. '''Проверка статуса''':
<code>sudo systemctl status postgresql</code>
<pre>sudo systemctl status postgresql</pre>


5. '''Подключение к базе данных''':
5. '''Подключение к базе данных''':
<code>psql -h localhost -U username -d database_name</code>
<pre>psql -h localhost -U username -d database_name</pre>


=== Управление базами данных ===
=== Управление базами данных ===


1. '''Создание базы данных''':
1. '''Создание базы данных''':
<code>sudo -u postgres createdb mydatabase</code>
<pre>sudo -u postgres createdb mydatabase</pre>


2. '''Удаление базы данных''':
2. '''Удаление базы данных''':
<code>sudo -u postgres dropdb mydatabase</code>
<pre>sudo -u postgres dropdb mydatabase</pre>


3. '''Создание пользователя''':
3. '''Создание пользователя''':
<code>sudo -u postgres createuser --interactive</code>
<pre>sudo -u postgres createuser --interactive</pre>


4. '''Удаление пользователя''':
4. '''Удаление пользователя''':
<code>sudo -u postgres dropuser username</code>
<pre>sudo -u postgres dropuser username</pre>


5. '''Изменение пароля пользователя''':
5. '''Изменение пароля пользователя''':
<code>sudo -u postgres psql -c "ALTER USER username PASSWORD 'new_password';"</code>
<pre>sudo -u postgres psql -c "ALTER USER username PASSWORD 'new_password';"</pre>


== 6. Резервное копирование ===
== 6. Резервное копирование ==


=== Создание резервной копии ===
=== Создание резервной копии ===


1. '''Полное резервное копирование''':
1. '''Полное резервное копирование''':
<code>sudo -u postgres pg_dumpall > backup_all.sql</code>
<pre>sudo -u postgres pg_dumpall > backup_all.sql</pre>


2. '''Резервное копирование конкретной базы данных''':
2. '''Резервное копирование конкретной базы данных''':
<code>sudo -u postgres pg_dump mydatabase > mydatabase_backup.sql</code>
<pre>sudo -u postgres pg_dump mydatabase > mydatabase_backup.sql</pre>


3. '''Сжатое резервное копирование''':
3. '''Сжатое резервное копирование''':
<code>sudo -u postgres pg_dump mydatabase | gzip > mydatabase_backup.sql.gz</code>
<pre>sudo -u postgres pg_dump mydatabase | gzip > mydatabase_backup.sql.gz</pre>


4. '''Резервное копирование с настройками''':
4. '''Резервное копирование с настройками''':
<code>sudo -u postgres pg_dump -h localhost -U postgres -Fc mydatabase > mydatabase_backup.dump</code>
<pre>sudo -u postgres pg_dump -h localhost -U postgres -Fc mydatabase > mydatabase_backup.dump</pre>


=== Восстановление из резервной копии ===
=== Восстановление из резервной копии ===


1. '''Восстановление из SQL файла''':
1. '''Восстановление из SQL файла''':
<code>sudo -u postgres psql mydatabase < mydatabase_backup.sql</code>
<pre>sudo -u postgres psql mydatabase < mydatabase_backup.sql</pre>


2. '''Восстановление из сжатого файла''':
2. '''Восстановление из сжатого файла''':
<code>gunzip -c mydatabase_backup.sql.gz | sudo -u postgres psql mydatabase</code>
<pre>gunzip -c mydatabase_backup.sql.gz | sudo -u postgres psql mydatabase</pre>


3. '''Восстановление из dump файла''':
3. '''Восстановление из dump файла''':
<code>sudo -u postgres pg_restore -d mydatabase mydatabase_backup.dump</code>
<pre>sudo -u postgres pg_restore -d mydatabase mydatabase_backup.dump</pre>


== 7. Мониторинг и оптимизация ===
== 7. Мониторинг и оптимизация ==


=== Мониторинг производительности ===
=== Мониторинг производительности ===


1. '''Просмотр активных подключений''':
1. '''Просмотр активных подключений''':
<code>sudo -u postgres psql -c "SELECT * FROM pg_stat_activity;"</code>
<pre>sudo -u postgres psql -c "SELECT * FROM pg_stat_activity;"</pre>


2. '''Просмотр размера баз данных''':
2. '''Просмотр размера баз данных''':
<code>sudo -u postgres psql -c "SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database;"</code>
<pre>sudo -u postgres psql -c "SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database;"</pre>


3. '''Просмотр медленных запросов''':
3. '''Просмотр медленных запросов''':
<code>sudo -u postgres psql -c "SELECT query, mean_time, calls FROM pg_stat_statements ORDER BY mean_time DESC LIMIT 10;"</code>
<pre>sudo -u postgres psql -c "SELECT query, mean_time, calls FROM pg_stat_statements ORDER BY mean_time DESC LIMIT 10;"</pre>


=== Оптимизация производительности ===
=== Оптимизация производительности ===


1. '''Анализ таблиц''':
1. '''Анализ таблиц''':
<code>sudo -u postgres psql -d mydatabase -c "ANALYZE;"</code>
<pre>sudo -u postgres psql -d mydatabase -c "ANALYZE;"</pre>


2. '''Переиндексация таблиц''':
2. '''Переиндексация таблиц''':
<code>sudo -u postgres psql -d mydatabase -c "REINDEX DATABASE mydatabase;"</code>
<pre>sudo -u postgres psql -d mydatabase -c "REINDEX DATABASE mydatabase;"</pre>


3. '''Очистка базы данных''':
3. '''Очистка базы данных''':
<code>sudo -u postgres psql -d mydatabase -c "VACUUM FULL;"</code>
<pre>sudo -u postgres psql -d mydatabase -c "VACUUM FULL;"</pre>


== 8. Настройка репликации ===
== 8. Настройка репликации ==


=== Настройка мастер-сервера ===
=== Настройка мастер-сервера ===


1. Отредактируйте postgresql.conf:
1. Отредактируйте postgresql.conf:
<code>sudo nano /etc/postgresql/15/main/postgresql.conf</code>
<pre>sudo nano /etc/postgresql/15/main/postgresql.conf</pre>


2. Добавьте настройки репликации:
2. Добавьте настройки репликации:
<code>wal_level = replica
<pre>wal_level = replica
max_wal_senders = 3
max_wal_senders = 3
max_replication_slots = 3
max_replication_slots = 3
hot_standby = on
hot_standby = on
</code>
</pre>


3. Настройте pg_hba.conf:
3. Настройте pg_hba.conf:
<code>host replication replicator 192.168.1.0/24 md5</code>
<pre>host replication replicator 192.168.1.0/24 md5</pre>


=== Настройка слейв-сервера ===
=== Настройка слейв-сервера ===


1. Создайте пользователя для репликации:
1. Создайте пользователя для репликации:
<code>sudo -u postgres psql -c "CREATE USER replicator REPLICATION LOGIN CONNECTION LIMIT 3 ENCRYPTED PASSWORD 'replicator_password';"</code>
<pre>sudo -u postgres psql -c "CREATE USER replicator REPLICATION LOGIN CONNECTION LIMIT 3 ENCRYPTED PASSWORD 'replicator_password';"</pre>


2. Создайте базовую резервную копию:
2. Создайте базовую резервную копию:
<code>sudo -u postgres pg_basebackup -h master_server -D /var/lib/postgresql/15/main -U replicator -v -P -W</code>
<pre>sudo -u postgres pg_basebackup -h master_server -D /var/lib/postgresql/15/main -U replicator -v -P -W</pre>


== 9. Безопасность ===
== 9. Безопасность ==


=== Настройка файрвола ===
=== Настройка файрвола ===


1. '''Разрешите порт PostgreSQL''':
1. '''Разрешите порт PostgreSQL''':
<code>sudo ufw allow 5432/tcp</code>
<pre>sudo ufw allow 5432/tcp</pre>


2. '''Ограничьте доступ по IP''':
2. '''Ограничьте доступ по IP''':
<code>sudo ufw allow from 192.168.1.0/24 to any port 5432</code>
<pre>sudo ufw allow from 192.168.1.0/24 to any port 5432</pre>


=== Настройка SSL ===
=== Настройка SSL ===


1. '''Проверьте SSL соединения''':
1. '''Проверьте SSL соединения''':
<code>sudo -u postgres psql -c "SHOW ssl;"</code>
<pre>sudo -u postgres psql -c "SHOW ssl;"</pre>


2. '''Проверьте SSL сертификаты''':
2. '''Проверьте SSL сертификаты''':
<code>sudo -u postgres psql -c "SELECT * FROM pg_stat_ssl;"</code>
<pre>sudo -u postgres psql -c "SELECT * FROM pg_stat_ssl;"</pre>


== 10. Устранение неполадок ===
== 10. Устранение неполадок ==


=== Частые проблемы ===
=== Частые проблемы ===


1. '''PostgreSQL не запускается''':
1. '''PostgreSQL не запускается''':
* Проверьте логи: <code>sudo journalctl -u postgresql</code>
* Проверьте логи: <pre>sudo journalctl -u postgresql</pre>
* Проверьте конфигурацию: <code>sudo -u postgres postgres --check-config</code>
* Проверьте конфигурацию: <pre>sudo -u postgres postgres --check-config</pre>
* Проверьте права доступа: <code>ls -la /var/lib/postgresql/15/main/</code>
* Проверьте права доступа: <pre>ls -la /var/lib/postgresql/15/main/</pre>


2. '''Ошибки подключения''':
2. '''Ошибки подключения''':
Строка 288: Строка 288:


1. '''Проверка статуса''':
1. '''Проверка статуса''':
<code>sudo systemctl status postgresql</code>
<pre>sudo systemctl status postgresql</pre>


2. '''Проверка подключений''':
2. '''Проверка подключений''':
<code>sudo netstat -tlnp | grep :5432</code>
<pre>sudo netstat -tlnp | grep :5432</pre>


3. '''Проверка логов''':
3. '''Проверка логов''':
<code>sudo tail -f /var/log/postgresql/postgresql-15-main.log</code>
<pre>sudo tail -f /var/log/postgresql/postgresql-15-main.log</pre>


== 11. Полезные команды ===
== 11. Полезные команды ==


=== Администрирование ===
=== Администрирование ===


1. '''Просмотр всех баз данных''':
1. '''Просмотр всех баз данных''':
<code>sudo -u postgres psql -l</code>
<pre>sudo -u postgres psql -l</pre>


2. '''Просмотр всех пользователей''':
2. '''Просмотр всех пользователей''':
<code>sudo -u postgres psql -c "\du"</code>
<pre>sudo -u postgres psql -c "\du"</pre>


3. '''Просмотр таблиц в базе данных''':
3. '''Просмотр таблиц в базе данных''':
<code>sudo -u postgres psql -d mydatabase -c "\dt"</code>
<pre>sudo -u postgres psql -d mydatabase -c "\dt"</pre>


4. '''Просмотр схемы таблицы''':
4. '''Просмотр схемы таблицы''':
<code>sudo -u postgres psql -d mydatabase -c "\d table_name"</code>
<pre>sudo -u postgres psql -d mydatabase -c "\d table_name"</pre>


=== Мониторинг ===
=== Мониторинг ===


1. '''Просмотр статистики''':
1. '''Просмотр статистики''':
<code>sudo -u postgres psql -c "SELECT * FROM pg_stat_database;"</code>
<pre>sudo -u postgres psql -c "SELECT * FROM pg_stat_database;"</pre>


2. '''Просмотр блокировок''':
2. '''Просмотр блокировок''':
<code>sudo -u postgres psql -c "SELECT * FROM pg_locks;"</code>
<pre>sudo -u postgres psql -c "SELECT * FROM pg_locks;"</pre>


3. '''Просмотр активных запросов''':
3. '''Просмотр активных запросов''':
<code>sudo -u postgres psql -c "SELECT pid, now() - pg_stat_activity.query_start AS duration, query FROM pg_stat_activity WHERE (now() - pg_stat_activity.query_start) > interval '5 minutes';"</code>
<pre>sudo -u postgres psql -c "SELECT pid, now() - pg_stat_activity.query_start AS duration, query FROM pg_stat_activity WHERE (now() - pg_stat_activity.query_start) > interval '5 minutes';"</pre>


== Заключение ==
== Заключение ==

Текущая версия от 10:41, 15 октября 2025

Установка и конфигурация PostgreSQL

1. Подготовка системы

  • Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
  • Убедитесь, что у вас есть доступ к серверу через SSH или консоль.

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

Обновление системы

1. Обновите систему:

sudo apt update

2. Установите необходимые пакеты:

sudo apt install -y wget ca-certificates

Установка PostgreSQL

1. Добавьте официальный репозиторий PostgreSQL:

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

2. Добавьте репозиторий в источники:

echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list

3. Обновите список пакетов:

sudo apt update

4. Установите PostgreSQL 15:

sudo apt install -y postgresql-15 postgresql-client-15 postgresql-contrib-15

5. Проверьте версию:

psql --version

3. Первоначальная настройка

Запуск PostgreSQL

1. Запустите и включите автозапуск PostgreSQL:

sudo systemctl start postgresql
sudo systemctl enable postgresql

2. Проверьте статус:

sudo systemctl status postgresql

Настройка пользователя postgres

1. Переключитесь на пользователя postgres:

sudo -u postgres psql

2. Установите пароль для пользователя postgres:

ALTER USER postgres PASSWORD 'your_strong_password';

3. Выйдите из psql:

\q

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

1. Создайте нового пользователя:

sudo -u postgres createuser --interactive

2. Создайте базу данных:

sudo -u postgres createdb mydatabase

3. Подключитесь к базе данных:

sudo -u postgres psql mydatabase

4. Конфигурация PostgreSQL

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

1. Найдите файл конфигурации:

sudo find /etc -name "postgresql.conf" 2>/dev/null

2. Отредактируйте основной конфигурационный файл:

sudo nano /etc/postgresql/15/main/postgresql.conf

3. Настройте основные параметры:

\# Сетевые настройки
listen_addresses = '*'
port = 5432

\# Настройки памяти
shared_buffers = 256MB
effective_cache_size = 1GB
work_mem = 4MB
maintenance_work_mem = 64MB

\# Настройки логирования
log_destination = 'stderr'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_rotation_age = 1d
log_rotation_size = 100MB
log_min_duration_statement = 1000
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on

\# Настройки безопасности
ssl = on
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'

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

1. Отредактируйте файл pg_hba.conf:

sudo nano /etc/postgresql/15/main/pg_hba.conf

2. Настройте методы аутентификации:

\# TYPE  DATABASE        USER            ADDRESS                 METHOD

\# "local" is for Unix domain socket connections only
local   all             postgres                                peer
local   all             all                                     md5

\# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             0.0.0.0/0               md5

\# IPv6 local connections:
host    all             all             ::1/128                 md5

Настройка SSL

1. Создайте SSL сертификаты:

sudo -u postgres openssl req -new -x509 -days 365 -nodes -text -out /var/lib/postgresql/15/main/server.crt -keyout /var/lib/postgresql/15/main/server.key -subj "/CN=postgresql-server"

2. Установите права на сертификаты:

sudo chmod 600 /var/lib/postgresql/15/main/server.key
sudo chown postgres:postgres /var/lib/postgresql/15/main/server.*

5. Управление PostgreSQL

Основные команды

1. Запуск PostgreSQL:

sudo systemctl start postgresql

2. Остановка PostgreSQL:

sudo systemctl stop postgresql

3. Перезапуск PostgreSQL:

sudo systemctl restart postgresql

4. Проверка статуса:

sudo systemctl status postgresql

5. Подключение к базе данных:

psql -h localhost -U username -d database_name

Управление базами данных

1. Создание базы данных:

sudo -u postgres createdb mydatabase

2. Удаление базы данных:

sudo -u postgres dropdb mydatabase

3. Создание пользователя:

sudo -u postgres createuser --interactive

4. Удаление пользователя:

sudo -u postgres dropuser username

5. Изменение пароля пользователя:

sudo -u postgres psql -c "ALTER USER username PASSWORD 'new_password';"

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

Создание резервной копии

1. Полное резервное копирование:

sudo -u postgres pg_dumpall > backup_all.sql

2. Резервное копирование конкретной базы данных:

sudo -u postgres pg_dump mydatabase > mydatabase_backup.sql

3. Сжатое резервное копирование:

sudo -u postgres pg_dump mydatabase | gzip > mydatabase_backup.sql.gz

4. Резервное копирование с настройками:

sudo -u postgres pg_dump -h localhost -U postgres -Fc mydatabase > mydatabase_backup.dump

Восстановление из резервной копии

1. Восстановление из SQL файла:

sudo -u postgres psql mydatabase < mydatabase_backup.sql

2. Восстановление из сжатого файла:

gunzip -c mydatabase_backup.sql.gz | sudo -u postgres psql mydatabase

3. Восстановление из dump файла:

sudo -u postgres pg_restore -d mydatabase mydatabase_backup.dump

7. Мониторинг и оптимизация

Мониторинг производительности

1. Просмотр активных подключений:

sudo -u postgres psql -c "SELECT * FROM pg_stat_activity;"

2. Просмотр размера баз данных:

sudo -u postgres psql -c "SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database;"

3. Просмотр медленных запросов:

sudo -u postgres psql -c "SELECT query, mean_time, calls FROM pg_stat_statements ORDER BY mean_time DESC LIMIT 10;"

Оптимизация производительности

1. Анализ таблиц:

sudo -u postgres psql -d mydatabase -c "ANALYZE;"

2. Переиндексация таблиц:

sudo -u postgres psql -d mydatabase -c "REINDEX DATABASE mydatabase;"

3. Очистка базы данных:

sudo -u postgres psql -d mydatabase -c "VACUUM FULL;"

8. Настройка репликации

Настройка мастер-сервера

1. Отредактируйте postgresql.conf:

sudo nano /etc/postgresql/15/main/postgresql.conf

2. Добавьте настройки репликации:

wal_level = replica
max_wal_senders = 3
max_replication_slots = 3
hot_standby = on

3. Настройте pg_hba.conf:

host replication replicator 192.168.1.0/24 md5

Настройка слейв-сервера

1. Создайте пользователя для репликации:

sudo -u postgres psql -c "CREATE USER replicator REPLICATION LOGIN CONNECTION LIMIT 3 ENCRYPTED PASSWORD 'replicator_password';"

2. Создайте базовую резервную копию:

sudo -u postgres pg_basebackup -h master_server -D /var/lib/postgresql/15/main -U replicator -v -P -W

9. Безопасность

Настройка файрвола

1. Разрешите порт PostgreSQL:

sudo ufw allow 5432/tcp

2. Ограничьте доступ по IP:

sudo ufw allow from 192.168.1.0/24 to any port 5432

Настройка SSL

1. Проверьте SSL соединения:

sudo -u postgres psql -c "SHOW ssl;"

2. Проверьте SSL сертификаты:

sudo -u postgres psql -c "SELECT * FROM pg_stat_ssl;"

10. Устранение неполадок

Частые проблемы

1. PostgreSQL не запускается:

  • Проверьте логи:
    sudo journalctl -u postgresql
  • Проверьте конфигурацию:
    sudo -u postgres postgres --check-config
  • Проверьте права доступа:
    ls -la /var/lib/postgresql/15/main/

2. Ошибки подключения:

  • Проверьте pg_hba.conf
  • Проверьте сетевые настройки
  • Проверьте файрвол

3. Проблемы с производительностью:

  • Проверьте логи медленных запросов
  • Оптимизируйте индексы
  • Настройте параметры памяти

Диагностика

1. Проверка статуса:

sudo systemctl status postgresql

2. Проверка подключений:

sudo netstat -tlnp | grep :5432

3. Проверка логов:

sudo tail -f /var/log/postgresql/postgresql-15-main.log

11. Полезные команды

Администрирование

1. Просмотр всех баз данных:

sudo -u postgres psql -l

2. Просмотр всех пользователей:

sudo -u postgres psql -c "\du"

3. Просмотр таблиц в базе данных:

sudo -u postgres psql -d mydatabase -c "\dt"

4. Просмотр схемы таблицы:

sudo -u postgres psql -d mydatabase -c "\d table_name"

Мониторинг

1. Просмотр статистики:

sudo -u postgres psql -c "SELECT * FROM pg_stat_database;"

2. Просмотр блокировок:

sudo -u postgres psql -c "SELECT * FROM pg_locks;"

3. Просмотр активных запросов:

sudo -u postgres psql -c "SELECT pid, now() - pg_stat_activity.query_start AS duration, query FROM pg_stat_activity WHERE (now() - pg_stat_activity.query_start) > interval '5 minutes';"

Заключение

PostgreSQL успешно установлен и настроен! Теперь у вас есть мощная система управления базами данных с возможностями репликации, мониторинга и резервного копирования.

Для размещения ваших баз данных на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):

Наши специалисты помогут с настройкой PostgreSQL и оптимизацией производительности ваших баз данных!