How to Install Postgresql on Ubuntu

LightNode
By LightNode ·

Как установить PostgreSQL на Ubuntu

Введение

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

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

  1. Совместимость: Ubuntu, будучи одним из наиболее широко используемых дистрибутивов Linux, обеспечивает отличную совместимость с PostgreSQL.

  2. Производительность: Сочетание эффективности Ubuntu и надежной архитектуры PostgreSQL обеспечивает высокопроизводительные операции с базами данных.

  3. Безопасность: И Ubuntu, и PostgreSQL известны своими надежными функциями безопасности, что делает эту комбинацию идеальной для работы с конфиденциальными данными.

  4. Поддержка сообщества: И Ubuntu, и PostgreSQL имеют большие активные сообщества, что гарантирует быструю помощь при необходимости.

  5. Бесплатное ПО с открытым исходным кодом: Обе системы бесплатны в использовании и имеют открытый исходный код, что позволяет экономично развертывать их и при необходимости настраивать.

Это руководство проведет вас через процесс установки PostgreSQL на вашу систему Ubuntu, от подготовки до базового использования. Независимо от того, настраиваете ли вы среду разработки или готовите производственный сервер, этот учебник предоставит вам необходимые шаги для запуска и работы PostgreSQL на Ubuntu.

Предварительные требования

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

Системные требования Ubuntu

  1. Версия Ubuntu: Это руководство применимо для Ubuntu 20.04 LTS (Focal Fossa) и более новых версий. Однако всегда рекомендуется использовать последнюю версию с долгосрочной поддержкой (LTS) для обеспечения стабильности.

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

    • Процессор: 1 ГГц или быстрее
    • ОЗУ: Минимум 1 ГБ (рекомендуется 4 ГБ или больше для производственного использования)
    • Хранилище: 512 МБ для установки PostgreSQL, плюс дополнительное место для ваших баз данных
  3. Подключение к интернету: Вам понадобится активное интернет-соединение для загрузки PostgreSQL и его зависимостей.

Права пользователя

Для установки PostgreSQL вам понадобятся привилегии sudo на вашей системе Ubuntu. Это означает, что вы должны либо войти в систему как пользователь root, либо иметь учетную запись, которая может использовать sudo для выполнения команд с привилегиями root.

Чтобы проверить, есть ли у вашего пользователя привилегии sudo, вы можете выполнить следующую команду в терминале:

sudo -v

Если вас попросят ввести пароль, и команда выполняется без ошибок, у вашего пользователя есть привилегии sudo.

Доступ к терминалу

Вы должны уметь пользоваться интерфейсом командной строки (CLI), так как мы будем использовать терминал для большей части процесса установки и настройки.

Резервное копирование данных

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

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

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

  1. Безопасность: Обновления часто включают важные исправления безопасности.
  2. Стабильность: Последние обновления могут исправить ошибки и улучшить стабильность системы.
  3. Совместимость: Наличие последних пакетов может предотвратить потенциальные проблемы совместимости во время установки PostgreSQL.

Шаги по обновлению Ubuntu

Чтобы обновить вашу систему Ubuntu, выполните следующие шаги:

  1. Откройте терминал. Вы можете сделать это, нажав Ctrl + Alt + T или найдя "Терминал" в панели Ubuntu.

  2. Сначала обновите списки пакетов для обновлений и новых установок пакетов. Выполните следующую команду:

    sudo apt update
    

    Эта команда обновляет список доступных пакетов и их версий, но не устанавливает и не обновляет какие-либо пакеты.

  3. После завершения обновления, обновите установленные пакеты до их последних версий:

    sudo apt upgrade
    

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

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

    sudo apt full-upgrade
    

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

  5. После завершения процесса обновления рекомендуется перезагрузить систему, чтобы убедиться, что все обновления правильно применены:

    sudo reboot
    

Проверка обновления

После перезагрузки системы вы можете проверить, было ли обновление успешным, проверив версию Ubuntu:

lsb_release -a

Эта команда отобразит информацию о вашем дистрибутиве Ubuntu, включая номер версии.

Добавление репозитория PostgreSQL

Хотя PostgreSQL доступен в репозиториях Ubuntu по умолчанию, это часто не самая последняя версия. Чтобы убедиться, что мы устанавливаем самую последнюю стабильную версию PostgreSQL, мы добавим официальный репозиторий PostgreSQL в нашу систему.

Почему стоит добавить официальный репозиторий PostgreSQL?

  1. Последние версии: Официальный репозиторий предоставляет самые актуальные версии PostgreSQL.
  2. Своевременные обновления: Исправления безопасности и ошибок становятся доступными быстрее через официальный репозиторий.
  3. Согласованность: Использование официального репозитория обеспечивает совместимость между PostgreSQL и его расширениями.

Шаги по добавлению репозитория PostgreSQL

Выполните следующие шаги, чтобы добавить репозиторий PostgreSQL в вашу систему Ubuntu:

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

    sudo apt-get install wget ca-certificates
    wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    
  2. Далее нам нужно добавить репозиторий PostgreSQL в список источников нашей системы. Создайте новый файл с именем pgdg.list в каталоге /etc/apt/sources.list.d/:

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

    Эта команда создает новый файл с информацией о репозитории. Часть $(lsb_release -cs) автоматически определяет вашу версию Ubuntu и вставляет правильное кодовое имя.

  3. После добавления репозитория снова обновите списки пакетов, чтобы включить недавно добавленный репозиторий PostgreSQL:

    sudo apt update
    

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

Чтобы проверить, что репозиторий PostgreSQL был успешно добавлен, вы можете проверить содержимое файла pgdg.list:

cat /etc/apt/sources.list.d/pgdg.list

Вы должны увидеть строку, похожую на:

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

(Примечание: "focal" может быть заменено на кодовое имя вашей версии Ubuntu)

Установка PostgreSQL

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

Команда для установки PostgreSQL

Для установки PostgreSQL мы будем использовать менеджер пакетов apt. Вот команда для установки последней версии PostgreSQL вместе с часто используемым расширением:

sudo apt install postgresql postgresql-contrib

Давайте разберем эту команду:

  • postgresql: Это основной пакет PostgreSQL.
  • postgresql-contrib: Этот пакет содержит дополнительные утилиты и функциональность, которые не являются частью основной системы PostgreSQL, но часто бывают полезны.

Во время процесса установки вас могут попросить подтвердить установку. Если это так, введите 'Y' и нажмите Enter, чтобы продолжить.

Проверка установки

После завершения установки важно проверить, что PostgreSQL был установлен правильно и работает. Вот несколько способов сделать это:

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

    psql --version
    

    Это должно отобразить версию PostgreSQL, которая была установлена.

  2. Проверьте статус службы PostgreSQL:

    sudo systemctl status postgresql
    

    Вы должны увидеть вывод, указывающий, что служба активна (работает).

  3. Убедитесь, что PostgreSQL прослушивает соединения:

    sudo ss -tunelp | grep 5432
    

    Эта команда проверяет, прослушивает ли PostgreSQL свой порт по умолчанию (5432). Вы должны увидеть вывод, если PostgreSQL работает правильно.

Начальная настройка PostgreSQL

Когда вы устанавливаете PostgreSQL на Ubuntu, он автоматически создает новую учетную запись пользователя с именем postgres. Эта учетная запись связана с ролью Postgres по умолчанию. Чтобы взаимодействовать с PostgreSQL, используя эту учетную запись, вы можете переключиться на нее следующим образом:

sudo -i -u postgres

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

psql

Это войдет вас в приглашение PostgreSQL, и вы увидите что-то вроде:

psql (13.x)
Type "help" for help.

postgres=#

Чтобы выйти из приглашения PostgreSQL, введите:

\q

И чтобы вернуться к своей обычной учетной записи пользователя, просто введите:

exit

Поздравляем! Вы успешно установили PostgreSQL на вашу систему Ubuntu. В следующем разделе мы рассмотрим, как настроить PostgreSQL для ваших нужд.

Настройка PostgreSQL

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

Создание новой базы данных

По умолчанию PostgreSQL создает базу данных с именем postgres. Однако хорошей практикой является создание отдельных баз данных для ваших проектов. Вот как создать новую базу данных:

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

    sudo -i -u postgres
    
  2. Получите доступ к приглашению PostgreSQL:

    psql
    
  3. Создайте новую базу данных с помощью команды CREATE DATABASE:

    CREATE DATABASE myproject;
    

    Замените myproject на желаемое имя вашей базы данных.

  4. Вы можете проверить создание базы данных с помощью:

    \l
    

    Это выведет список всех баз данных.

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

Рекомендуется создавать нового пользователя для каждого приложения, а не использовать суперпользователя postgres по умолчанию. Вот как это сделать:

  1. Находясь все еще в приглашении psql, создайте нового пользователя:

    CREATE USER myuser WITH PASSWORD 'mypassword';
    

    Замените myuser и mypassword на желаемое имя пользователя и пароль.

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

    GRANT ALL PRIVILEGES ON DATABASE myproject TO myuser;
    
  3. Вы можете проверить создание пользователя с помощью:

    \du
    

    Это выведет список всех пользователей и их ролей.

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

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

  1. Выйдите из приглашения PostgreSQL:

    \q
    
  2. Откройте файл pg_hba.conf в текстовом редакторе (вам могут понадобиться привилегии sudo):

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

    Примечание: Замените 13 на номер вашей версии PostgreSQL, если он отличается.

  3. Файл содержит строки, которые определяют, как пользователи могут аутентифицироваться. Типичная конфигурация может выглядеть так:

    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    local   all             postgres                                peer
    local   all             all                                     md5
    host    all             all             127.0.0.1/32            md5
    host    all             all             ::1/128                 md5
    
    • local означает подключение через Unix-сокеты
    • host означает подключение через TCP/IP
    • md5 означает аутентификацию по паролю
    • peer означает, что имя системного пользователя напрямую соответствует имени пользователя PostgreSQL
  4. После внесения изменений сохраните файл и выйдите из редактора.

  5. Перезапустите PostgreSQL, чтобы изменения вступили в силу:

    sudo systemctl restart postgresql
    

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

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

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

Подключение к PostgreSQL

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

    sudo -i -u postgres
    
  2. Запустите интерактивный терминал PostgreSQL:

    psql
    
  3. Для подключения к конкретной базе данных:

    psql -d myproject
    

    Замените myproject на имя вашей базы данных.

Операции с базами данных

  1. Список всех баз данных:

    \l
    
  2. Подключение к конкретной базе данных:

    \c myproject
    
  3. Создание новой базы данных:

    CREATE DATABASE newdb;
    
  4. Удаление базы данных:

    DROP DATABASE newdb;
    

Операции с таблицами

  1. Список таблиц в текущей базе данных:

    \dt
    
  2. Создание новой таблицы:

    CREATE TABLE users (
        id SERIAL PRIMARY KEY,
        name VARCHAR(100),
        email VARCHAR(100) UNIQUE NOT NULL
    );
    
  3. Описание структуры таблицы:

    \d users
    
  4. Удаление таблицы:

    DROP TABLE users;
    

Примеры базовых запросов

  1. Вставка данных в таблицу:

    INSERT INTO users (name, email) VALUES ('John Doe', '[email protected]');
    
  2. Выбор всех данных из таблицы:

    SELECT * FROM users;
    
  3. Обновление данных в таблице:

    UPDATE users SET name = 'Jane Doe' WHERE id = 1;
    
  4. Удаление данных из таблицы:

    DELETE FROM users WHERE id = 1;
    

Другие полезные команды

  1. Показать версию PostgreSQL:

    SELECT version();
    
  2. Список всех пользователей и их ролей:

    \du
    
  3. Показать текущего пользователя и базу данных:

    \conninfo
    
  4. Выполнить команды из файла:

    \i filename.sql
    
  5. Выйти из psql:

    \q
    

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

Обслуживание PostgreSQL

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

Запуск и остановка службы PostgreSQL

  1. Для запуска службы PostgreSQL:

    sudo systemctl start postgresql
    
  2. Для остановки службы PostgreSQL:

    sudo systemctl stop postgresql
    
  3. Для перезапуска службы PostgreSQL:

    sudo systemctl restart postgresql
    
  4. Для проверки статуса службы PostgreSQL:

    sudo systemctl status postgresql
    

Резервное копирование и восстановление баз данных

Регулярное резервное копирование ваших баз данных имеет решающее значение для защиты данных. PostgreSQL предоставляет несколько методов для резервного копирования и восстановления.

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

  1. Для резервного копирования одной базы данных:

    pg_dump dbname > dbname.sql
    
  2. Для резервного копирования всех баз данных:

    pg_dumpall > all_databases.sql
    

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

  1. Для восстановления одной базы данных:

    psql dbname < dbname.sql
    
  2. Для восстановления всех баз данных:

    psql -f all_databases.sql postgres
    

Обновление PostgreSQL

Поддержание PostgreSQL в актуальном состоянии важно для безопасности и производительности. Вот как обновить:

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

    sudo apt update
    
  2. Обновите PostgreSQL:

    sudo apt upgrade postgresql postgresql-contrib
    

Мониторинг PostgreSQL

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

    SELECT * FROM pg_stat_activity;
    
  2. Мониторинг размера базы данных:

    SELECT pg_size_pretty(pg_database_size('dbname'));
    
  3. Проверка размеров таблиц:

    SELECT relname, pg_size_pretty(pg_total_relation_size(relid))
    FROM pg_catalog.pg_statio_user_tables
    ORDER BY pg_total_relation_size(relid) DESC;
    

Vacuum и Analyze

PostgreSQL использует MVCC (Multi-Version Concurrency Control), что может привести к разрастанию таблиц и индексов. Команда VACUUM помогает управлять этим:

  1. Для выполнения vacuum для конкретной таблицы:

    VACUUM tablename;
    
  2. Для выполнения vacuum и analyze (обновляет статистику) базы данных:

    VACUUM ANALYZE;
    
  3. Для автоматического vacuum убедитесь, что autovacuum включен в вашем файле postgresql.conf:

    autovacuum = on
    

Управление логами

Логи PostgreSQL могут предоставить ценную информацию для устранения неполадок и настройки производительности:

  1. Найдите расположение файла лога:

    SHOW log_directory;
    SHOW log_filename;
    
  2. Вы можете изменить настройки логирования в файле postgresql.conf, чтобы настроить, что регистрируется и как.

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

Устранение распространенных проблем

Даже при тщательной настройке и обслуживании вы можете столкнуться с проблемами в вашей установке PostgreSQL. Вот некоторые распространенные проблемы и их решения:

Проблемы с разрешениями

  1. Проблема: Ошибки "Permission denied" при попытке доступа к PostgreSQL.

    Решение:

    • Убедитесь, что у пользователя есть необходимые разрешения:
      sudo -i -u postgres
      createuser --interactive
      
    • Предоставьте необходимые привилегии пользователю:
      GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
      
  2. Проблема: Не удается получить доступ к PostgreSQL с вашим пользователем Ubuntu.

    Решение:

    • Создайте роль PostgreSQL с тем же именем, что и ваш пользователь Ubuntu:
      sudo -u postgres createuser --interactive
      

Проблемы с подключением

  1. Проблема: Ошибка "Connection refused".

    Решение:

    • Проверьте, запущен ли PostgreSQL:
      sudo systemctl status postgresql
      
    • Если он не запущен, запустите его:
      sudo systemctl start postgresql
      
    • Убедитесь, что PostgreSQL прослушивает правильный адрес в postgresql.conf:
      listen_addresses = 'localhost'  # или '*' для всех интерфейсов
      
  2. Проблема: Не удается подключиться удаленно.

    Решение:

    • Измените pg_hba.conf, чтобы разрешить удаленные подключения:
      host    all    all    0.0.0.0/0    md5
      
    • Обновите postgresql.conf:
      listen_addresses = '*'
      
    • Перезапустите PostgreSQL:
      sudo systemctl restart postgresql
      

Конфликты версий

  1. Проблема: Несовместимость между версией PostgreSQL и установленными расширениями.

    Решение:

    • Проверьте версию PostgreSQL:
      psql --version
      
    • Убедитесь, что расширения совместимы. Возможно, вам потребуется обновить расширения:
      ALTER EXTENSION extension_name UPDATE TO 'new_version';
      

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

  1. Проблема: Медленные запросы или общая низкая производительность.

    Решение:

    • Используйте EXPLAIN ANALYZE для понимания выполнения запроса:
      EXPLAIN ANALYZE SELECT * FROM large_table WHERE condition;
      
    • Обеспечьте правильное индексирование:
      CREATE INDEX idx_name ON table_name (column_name);
      
    • Настройте параметры конфигурации PostgreSQL в postgresql.conf:
      shared_buffers = 256MB
      effective_cache_size = 768MB
      
  2. Проблема: Разрастание базы данных, вызывающее снижение производительности.

    Решение:

    • Регулярно выполняйте VACUUM и ANALYZE:
      VACUUM ANALYZE;
      
    • Рассмотрите возможность настройки autovacuum для автоматического обслуживания.

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

  1. Проблема: Заканчивается дисковое пространство.

    Решение:

    • Определите большие таблицы и индексы:
      SELECT relname, pg_size_pretty(pg_total_relation_size(relid))
      FROM pg_catalog.pg_statio_user_tables
      ORDER BY pg_total_relation_size(relid) DESC;
      
    • Удалите ненужные данные или архивируйте старые данные.
    • Рассмотрите возможность разделения таблиц для очень больших таблиц.

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

Проблемы с обновлением

  1. Проблема: Ошибки при обновлении до новой версии PostgreSQL.

    Решение:

    • Всегда создавайте резервную копию перед обновлением:
      pg_dumpall > backup_before_upgrade.sql
      
    • Следуйте официальному руководству по обновлению для вашей конкретной версии.
    • После обновления проверьте совместимость расширений и приложений.

Проблемы с репликацией

  1. Проблема: Репликация отстает или прерывается.

    Решение:

    • Проверьте статус репликации:
      SELECT * FROM pg_stat_replication;
      
    • Убедитесь, что на ведомом сервере достаточно ресурсов.
    • Проверьте сетевое подключение между основным и ведомым серверами.

Заключение

Установка и настройка PostgreSQL на Ubuntu - это процесс, который требует внимания к деталям и понимания как Ubuntu, так и PostgreSQL. Следуя этому руководству, вы должны теперь иметь работающую установку PostgreSQL, настроенную для ваших нужд.

Помните, что поддержание вашей базы данных - это непрерывный процесс. Регулярно обновляйте свою систему, выполняйте резервное копирование и следите за производительностью, чтобы обеспечить надежную и эффективную работу вашей базы данных.

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

  • Настройка производительности PostgreSQL
  • Реализация стратегий резервного копирования и восстановления
  • Настройка репликации для высокой доступности
  • Использование расширений PostgreSQL для расширения функциональности

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