Перейти к основному содержанию
 

Установка Postgresql 10 на Ubuntu 18.04 LTS

Postgresql

Установим Postgresql 10 на сервер с операционной системой Ubuntu 18.04 LTS. Это виртуальная машина, по хорошему postgresql лучше устанавливать на отдельный диск, поэтому примонтирую новый диск в /opt.

Требования

  • ОС Ubuntu 18.04 LTS. Или Ubuntu 16.04.
  • Работаем из-под root.

Подготовка раздела

Итак, цепляем новый диск к виртуальной машине. Чтобы Ubuntu увидела новый диск, перезагружаемся.

После перезагрузки у нас появляется в системе новый диск /dev/sdb объёмом 100 Гб.

fdisk -l

Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 6709FC78-2AC6-41CA-AC7A-34250733B5D0

Device     Start      End  Sectors Size Type
/dev/sda1   2048     4095     2048   1M BIOS boot
/dev/sda2   4096 41940991 41936896  20G Linux filesystem

Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

postgresql

Создаём основной раздел на диске:

fdisk /dev/sdb

Пример:

Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x6dd0ad2d.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-209715199, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-209715199, default 209715199):

Created a new partition 1 of type 'Linux' and of size 100 GiB.

Command (m for help): p
Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x6dd0ad2d

Device     Boot Start       End   Sectors  Size Id Type
/dev/sdb1        2048 209715199 209713152  100G 83 Linux

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

postgresql

Проверяем:

fdisk -l
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 6709FC78-2AC6-41CA-AC7A-34250733B5D0

Device     Start      End  Sectors Size Type
/dev/sda1   2048     4095     2048   1M BIOS boot
/dev/sda2   4096 41940991 41936896  20G Linux filesystem


Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x6dd0ad2d

Device     Boot Start       End   Sectors  Size Id Type
/dev/sdb1        2048 209715199 209713152  100G 83 Linux

На диске появился раздел /dev/sdb1.

postgresql

В разделе /dev/sdb1 нужно создать файловую систему:

mkfs.ext4 -m 0 /dev/sdb1
mke2fs 1.44.1 (24-Mar-2018)
Creating filesystem with 26214144 4k blocks and 6553600 inodes
Filesystem UUID: 132bc592-a834-4c8c-83d7-4b3483467911
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done
Writing inode tables: done
Creating journal (131072 blocks): done
Writing superblocks and filesystem accounting information: done

postgresql

Примонтируем /dev/sdb1 в /opt. В папке opt будут лежать кластер Postgresql. Проверим что /opt существует:

cd /
ll | grep opt/
drwxr-xr-x   2 root root       4096 Aug  5  2019 opt/

postgresql

Узнаем UUID раздела /dev/sdb1.

blkid /dev/sdb1
/dev/sdb1: UUID="132bc592-a834-4c8c-83d7-4b3483467911" TYPE="ext4" PARTUUID="6dd0ad2d-01"

postgresql

Добавим строку в /etc/fstab:

UUID=132bc592-a834-4c8c-83d7-4b3483467911 /opt      ext4     defaults               0 0

postgresql

Монтируем раздел:

sudo mount -a

Проверяем:

df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            1.9G     0  1.9G   0% /dev
tmpfs           395M  792K  394M   1% /run
/dev/sda2        20G  4.7G   14G  25% /
tmpfs           2.0G   12K  2.0G   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
tmpfs           395M     0  395M   0% /run/user/1000
/dev/sdb1        98G   61M   98G   1% /opt

postgresql

Видим что /dev/sdb1 примонтирован в /opt и имеет 98G свободного места. Теперь после перезагрузки раздел будет монтироваться автоматически.

Радел для Postgresql подготовлен.

Установка Postgresql 10

Обновляем репозиторий.

apt-get update

Устанавливаем пакеты postgresql и postgresql-contrib.

apt-get install postgresql postgresql-contrib

postgresql

Устанавливается Postgresql 10.

postgresql

Проверяем статус сервера:

service postgresql status

postgresql

Сервис запущен. Сразу же не отходя от кассы перенесём Postgresql на выделенный раздел /opt. Проверим где находится текущая БД Postgresql.

sudo -u postgres psql

psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))
Type "help" for help.

postgres=# SHOW data_directory;
       data_directory

БД находится в папке /var/lib/postgresql/10/main.

Для переноса БД нам понадобится rsync:

apt-get install rsync

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

service zabbix-server stop
systemctl stop postgresql

Проверка статуса Postgresql.

systemctl status postgresql

postgresql

Ищем строку "Stopped PostgreSQL RDBMS."

Сервисы остановлены. Переносим файлы базы данных

rsync -av /var/lib/postgresql /opt

После переноса переименуем старую папку, на всякий случай:

mv /var/lib/postgresql/10/main /var/lib/postgresql/10/main.bak

Настроим конфигурацию Postgresql. Правим файл postgresql.conf:

vim /etc/postgresql/10/main/postgresql.conf

postgresql

Изменяем значение data_directory:

data_directory = '/opt/postgresql/10/main'

postgresql

Запуск сервисов.

systemctl start postgresql

Проверяем где находится текущая БД postgresql.

sudo -u postgres psql

postgres=# SHOW data_directory;
     data_directory
-------------------------
 /opt/postgresql/10/main
(1 row)

postgresql

БД находится в папке /opt/postgresql/10/main.

Удалим ненужные файлы:

rm -Rf /var/lib/postgresql/10/main.bak

Мы установили Postgresql 10 на Ubuntu 18.04 LTS. Файлы данных разместили на отдельном диске.

Теги