Уведомления
Очистить все

PostgreSQL в Kali Linux


root
 root
(@root)
Active Member
Присоединился: 3 года назад
Сообщения: 14
Topic starter  

В этой ветке будем публиковать мануалы и рецепты по работе с PostgreSQL в Kali Linux

Начать знакомство с администрирования PostgreSQL рекомендуется с «PostgreSQL в Linux: рецепты популярных действий и решения проблем». Там уже собраны актуальные инструкции для частых задач и, самое главное, частые ошибки и как их исправить.

Перевод опфициальной документации от авторов PostgreSQL на русском вы найдёте в разделе Настройка баз данных PostgreSQL из статьи «Настройка и запуск сетевых служб в Kali Linux (Apache, MySQL, SSH, PostgreSQL, NetworkManager и Bluetooth)»


Цитата
root
 root
(@root)
Active Member
Присоединился: 3 года назад
Сообщения: 14
Topic starter  

Обновление PostgreSQL в Kali Linux

При обновлении пакетов в Kali Linux было показано следующее сообщение:

Configuring postgresql-common 
Obsolete major version 13                                                                                     

The PostgreSQL version 13 is obsolete, but the server or client packages are still installed. Please install the latest packages (postgresql-14 and postgresql-client-14) and upgrade the existing  clusters with pg_upgradecluster (see manpage).                                                                                                                                                                                                                         
Please be aware that the installation of postgresql-14 will automatically create a default cluster 14/main. If you want to upgrade the 13/main cluster, you need to remove the already existing 14 cluster (pg_dropcluster --stop 14 main, see manpage for details).                                                                                                                                                                                                        

The old server and client packages are no longer supported. After the existing clusters are upgraded, the postgresql-13 and postgresql-client-13 packages should be removed.                                                           

Please see /usr/share/doc/postgresql-common/README.Debian.gz for details.        

Всё в лучших традициях официальных предупреждений: читайте справку и что-то делайте.

По факту после данного обновления мы имеем в системе 2 установленные версии PostgreSQL:

  • postgresql-13
  • postgresql-14

Если запустить службу PostgreSQL командой:

sudo systemctl start postgresql

И проверить версию командой:

sudo -u postgres psql postgres -c 'SELECT version()' | grep PostgreSQL

То будет выведено следующее:

PostgreSQL 13.4 (Debian 13.4-3) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.3.0-8) 10.3.0, 64-bit

То есть по умолчанию используется 13, устаревшая версия.

Удаление старых версий пакетов, например, командой:

sudo apt remove postgresql-13 postgresql-client-13

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

Последующие действия подразумевают, что вы

1) установили новую версию PostgreSQL, но ещё не использовали её, то есть не сохраняли базы данных, поскольку файлы новой версии будут удалены.

2) хотите перенести старые база данных в новый формат

С помощью следующей команды просмотрите доступные кластеры:

pg_lsclusters

На скриншоте только один из них online (я успел удалить пакет postgresql-13), но у вас оба должны быть online, иначе перенос базы данных не удастся.

Пример правильного вывода:

Ver Cluster Port Status                Owner    Data directory              Log file
13  main    5432 online                postgres /var/lib/postgresql/13/main /var/log/postgresql/postgresql-13-main.log
14  main    5433 online                postgres /var/lib/postgresql/14/main /var/log/postgresql/postgresql-14-main.log

Как можно увидеть, обе версии 13 и 14 в настоящее время установлены и запущены. Держите в уме, что при переносе старой базы данных в новый формат вам понадобиться двойной объём места на диске, поскольку pg_upgradecluster копирует данные.

Процедура обновления включает в себя следующее:

1. Удаляем данные новой версии:

sudo pg_dropcluster --stop 14 main

2. Запускаем процедуру обновления кластера:

sudo pg_upgradecluster 13 main

3. Когда операция будет завершена, дважды проверьте, что всё работает

4. Удалите старую версию

sudo pg_dropcluster --stop 13 main

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

Вновь проверяем версию:

sudo -u postgres pg_upgrade -b /opt/pgsql-13/bin -B /usr/bin -d /var/lib/postgres/olddata -D /var/lib/postgres/data

Теперь используется 14, то есть самая последняя версия.


ОтветитьЦитата
root
 root
(@root)
Active Member
Присоединился: 3 года назад
Сообщения: 14
Topic starter  

Как инициализировать базу данных PostgreSQL в Kali Linux

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

Удаление предыдущей версии (конкретный номер в вашем случае может быть другим):

sudo systemctl stop postgresql.service
sudo pg_dropcluster --stop 13 main
sudo apt remove postgresql-13 postgresql-client-13

 Директория /var/lib/postgres/ должна принадлежать пользователю postgres:

sudo chown -R postgres:postgres /var/lib/postgres/

Смените пользователя на postgres:

sudo -i -u postgres

Выполните инициализацию БД:

initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data'

Если вы столкнулись с ошибкой:

initdb: command not found

То найдите расположение файла initdb:

locate initdb

И укажите до него полный путь в команде инициализации:

/usr/lib/postgresql/14/bin/initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data'

Нажмите CTRL+D

Запустите службу PostgreSQL:

sudo systemctl start postgresql.service

ОтветитьЦитата
Поделиться: