Установка PostgreSQL

Статья основана на седьмом видео из 30 тем курса SQL c 0 от Аристова Евгения.

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

Идеальное место для установки PostgreSQL – мощный железный сервер на 200 ядер и 1 терабайт памяти, но иметь такие ресурсы практически нереально для обычной компании. Тем более для тестов простому инженеру. Поэтому используется виртуальная облачная инфраструктура, Docker или Kubernetes.

Virtual Machines

Что такое виртуальная машина?

Виртуальная машина (часто сокращается до ВМ) не отличается от физических компьютеров, например ноутбука, смартфона или сервера.

Она имеет ЦП, память, диски для хранения файлов и при необходимости может подключаться к Интернету

Компоненты вашего компьютера (аппаратная часть) материальны, а виртуальные машины существуют только в виде кода, забирая часть ресурсов хоста на себя

Виртуальная машина — это компьютерный файл (обычно его называют образом), который действует как обычный компьютер

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

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

Большой плюс виртуальной машины – её можно скопировать, так как по сути это просто компьютерный файл. С ней можно работать как с обычной файловой системой. Физический сервер перенести в разы сложнее.

Для чего нужны виртуальные машины?

  • Создание и развертывание приложений в облаке
  • Тестирование новых операционных систем, в том числе бета-версий
  • Тестирование нового ПО, например, PostgreSQL
  • Развертывание новой среды, чтобы упростить и ускорить выполнение сценариев разработки и тестирования для разработчиков
  • Резервное копирование существующей ОС
  • Доступ к зараженным вирусом данным или выполнение старого приложения путем установки старой версии ОС
  • Запуск программного обеспечения или приложений в операционных системах, для которых они изначально не предназначались

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

Преимущества виртуальных машин

  • Экономия — благодаря запуску нескольких виртуальных сред из одной части инфраструктуры вы можете существенно сократить размер физической инфраструктуры;
  • Гибкость и скорость — запустить виртуальную машину легче, быстрее и намного проще, чем выполнять подготовку новой среды для разработчиков;
  • Сокращённое время простоев — виртуальные машины очень портативны и легко перемещаются из одного гипервизора в другой на другом компьютере;
  • Масштабируемость — виртуальные машины позволяют упростить масштабирование приложений. Вам всего лишь нужно добавить дополнительные физические или виртуальные серверы для распределения рабочей нагрузки между несколькими виртуальными машинами;
  • Преимущества безопасности — так как виртуальные машины работают в нескольких операционных системах, использование гостевой операционной системы на виртуальной машине позволяет запускать приложения с недостаточным уровнем безопасности и защитить операционную систему узла.

Варианты виртуальных машин

Продвинутый уровень:

Oracle VirtualBox

Для начинающих этот вариант подходит идеально

Самый простой вариант https://www.virtualbox.org/

Поддерживает все современные системы:

  • Windows
  • Os X
  • Linux

Скачать версию для вашей ОС

Если возникли проблемы с Windows 10

Создание виртуальной машины:

Так как виртуальная машина – это просто файл, надо придумать ему имя

Linux

PostgreSQL плохо работает с Windows. Поэтому совместно с ним, а также в целом в продакшане, в 99% случаев используется Linux.

Linux — это семейство операционных систем (ОС), работающих на основе одноименного ядра. Нет единой операционной системы Linux, как, например, Windows или MacOS. Есть множество дистрибутивов (набор файлов, необходимых для установки ПО), выполняющих конкретные задачи.

Плюсы Linux

  • Бесплатное использование (за исключением некоторых версий)
  • Открытый исходный код системы/программы
  • Актуальность и производительность
  • Безопасность
  • Универсальность
  • Дистрибутивы почти всего ПО
  • Установка ПО из централизованного места — репозитория
  • В случае с PostgreSQL – оптимальная для него система по скорости и надежности работы. Windows НЕ рекомендован!

Минусы Linux

● Сложности с освоением ОС – высокий порог вхождения, разберемся с некоторыми моментами на 10 лекции

Ubuntu 22.04 LTS

Дистрибутивов очень много. Почему Ubuntu?

  • Безопасность. Ubuntu — один из самых самых безопасных Linux
  • Бесплатность
  • Большое дружелюбное сообщество
  • Простота в использовании
  • Удобный центр приложений
  • Релизы выходят каждые полгода

Почему 22.04?

  • Он самый современный
  • Этот дистрибутив является LTS — Long Time Support, то есть обновления этого дистрибутива будут выходить еще 5 лет. У остальных (не LTS) не более 2 лет, обычно намного меньше. Не рекомендую использовать не LTS версии, а также только вышедшие дистрибутивы. Также важно вовремя обновлять дистрибутивы

Установка Ubuntu 22.04 LTS

Порядок действий:

  • Скачиваем образ в формате ISO (цифровой образ оптического диска) с официального сайта – в нашем случае Ubuntu https://ubuntu.com/download/desktop
  • После скачивания при запуске ВМ указываем его в качестве загрузочного диска в виртуальном приводе оптических дисков
  • Выбираем установить Ubuntu
  • Отмечаем галочкой и устанавливаем обновления
  • Указываем пользователя student, имя ВМ postgres, пароль 123
  • После установки Ubuntu в настройках меняем разрешение экрана на удобное
  • Закрепляем приложение терминал в избранном

если нам нужна альтернативная версия Ubuntu – https://ubuntu.com/download/alternative-downloads

  • Последним этапом нужно включить двунаправленный буфер обмена для копирования текста в и из ВМ.
  • Добавим цифровой диск “Подключить образ диска Дополненной гостевой ОС”
  • Files >> CD Drive (VBOX_GAs_6.1.32) >> autorun.sh (Right-click) >> Run as a Program
  • Включаем двунаправленный буфер обмена для копирования текста в и из ВМ
  • Перезагружаем компьютер
  • Закрываем экран с ВМ и выбираем пункт сохранить состояние ВМ

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

Можно использовать уже подготовленную ВМ. Установка в VirtualBox.

Советы:

Для того, чтобы вернуть захваченную ВМ мышку или клавиатуру, нажимаем правый ctrl

Если есть проблемы при установке – https://www.maketecheasier.com/fix-ubuntu-freezing-virtualbox/

Google Cloud

Статья про разворачивание ВМ в Google Cloud

Как подключиться извне:

1) консоль (должна быть предварительно включена)

2) виртуальный монитор подключенный к ВМ в браузере

3) ssh – предпочтительный вариант – шифрованное консольное подключение

  • должны прописать ключ (посмотрим на практике)
  • шифрование асимметричное
    • публичный ключ не представляет ценности
    • приватный ключ – НИКОМУ не сообщать

Правильно создавать ВМ не через GUI, а используя консольную утилиту (cli) gcloud или более продвинутые инструменты, например terraform

Создание:

  1. Create instance
  2. Настраиваем параметры – ядра и память под свои задачи
  3. Выбираем операционную систему
  4. Оплачиваем

Подключение к виртуальной машине

gcloud compute ssh postgres – утилита gcloud сама подставит адрес по ssh

ssh augene@34.123.132.205 – либо можно взять имя пользователя из консоли + External IP адрес

sudo apt-get -y install postgresql – повышение своих прав до суперадмина с помощью sudo и установка postgresql 12-ой версии

Разберемся подробнее с подключением по ssh. Сначала создадим ВМ:


gcloud beta compute --project=celtic-house-266612 instances create sshtest --zone=us-central1-a --machine-type=e2-small --subnet=default --network-tier=PREMIUM --maintenance-policy=MIGRATE --service-account=933982307116-compute@developer.gserviceaccount.com --scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append --image-family=ubuntu-2204-lts --image-project=ubuntu-os-cloud --boot-disk-size=10GB --boot-disk-type=pd-ssd --boot-disk-device-name=sshtest --no-shielded-secure-boot --shielded-vtpm --shielded-integrity-monitoring --reservation-affinity=any


Вход в виртуальную машину:
gcloud compute ssh sshtest

ssh-keygen -t rsa - генерация ssh ключа. Мы получим два ключа: первый .pub - публичный, а второй - закрытый, им нельзя делиться

nano authorized_keys - добавление публичного ключа в список

eval ssh-agent -s - запуск агента, если не запущен

ssh-add .ssh/id_rsa - добавление пользователя (обычно происходит автоматически)

gcloud compute instances delete sshtest - удаление виртуальной машины

Яндекс облако

Статья про ВМ на Яндекс облаке

Доступ настраивается аналогично

Консольная утилита yc

ЯО предоставляет бонус на регистрацию в размере ~4000Р на месяц.

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

Например для небольшого инстанса по умолчанию для ЯО:

стоимость: 2088/31 день/ 24 часа = 2,81 рубля в час

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

yc compute instance create \
--name postgres \
--hostname postgres \
--cores 2 \
--memory 4 \
--create-boot-disk size=15G,type=network-ssd,image-folder-id=standard-images,image-family=ubuntu-2204-lts \
--network-interface subnet-name=default-ru-central1-a,nat-ip-version=ipv4 \
--zone ru-central1-a \
--metadata-from-file ssh-keys=/home/aeugene/.ssh/aeugene.txt 
yc compute instance get postgres - информация о нашем IP

Установка PostgreSQL

Варианты установки:

Подробная инструкция по установке

On-premise на любой ОС

Ссылка на скачивание

Установка из файла – в случае Windows *.exe, в Linux – *.rpm из магазина и т.д.

Далее просто нажимая кнопки Далее мы установим PostgreSQL на ВМ как приложение.

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

Из репозитория Linux – команда

sudo apt install postgresql

Самый простой вариант.

Минус – версия PostgreSQL будет зависеть от версии ОС:

  • Ubuntu 22.04 – PostgreSQL 14
  • Ubuntu 20.04 – PostgreSQL 12

Используя репозиторий PostgreSQL

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install postgresql-12/16+

Позволяет установить нужную нам версию postgresql 9.6-16+

Собрать PostgreSQL из исходных кодов на языке С.

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

Cкачиваем исходные коды

Инструкция далее:

INSTALL Short Version
  ./configure
  make
  su
  make install
  adduser postgres
  mkdir /usr/local/pgsql/data
  chown postgres /usr/local/pgsql/data
  su - postgres
  /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
  /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
  /usr/local/pgsql/bin/createdb test
  /usr/local/pgsql/bin/psql test

docker контейнер && kubernetes

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

Обратите внимание, что postgres это:

  • пользователь ОС Linux
  • пользователь СУБД PostgreSQL
  • база данных по умолчанию

Это всё разные сущности в принципе! Будьте акуратнее.

Презентация к статье здесь, а исходники здесь.

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

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

двадцать − тринадцать =