Управляем PostgreSQL, полезные команды
PostgreSQL — свободная объектно-реляционная система управления базами данных. Существует в реализациях для множества UNIX-подобных платформ.
Управление базами
Переключаемся на пользователя postgres
1
$ sudo su - postgres
Смотрим, список БД
1
2
3
4
$ pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
15 main 5432 down,recovery postgres /var/lib/postgresql/15/main /var/log/postgresql/postgresql-15-main.log
15 portal 5433 down,recovery postgres /var/lib/postgresql/15/portal /var/log/postgresql/postgresql-15-portal.log
Смотрим статус определенной БД
1
2
$ pg_ctlcluster 15 portal status
pg_ctl: no server running
Запускаем определенную БД
1
2
3
$ pg_ctlcluster 15 portal start
Warning: the cluster will not be running as a systemd service. Consider using systemctl:
sudo systemctl start postgresql@15-portal
Смотрим статус
1
2
3
$ pg_ctlcluster 15 portal status
pg_ctl: server is running (PID: 1115345)
/usr/lib/postgresql/15/bin/postgres "-D" "/var/lib/postgresql/15/portal" "-c" "config_file=/etc/postgresql/15/portal/postgresql.conf"
Перезапустить определенную БД
1
$ pg_ctlcluster 15 portal reload
Так же БД можно запустить через systemctl
от пользователя с правами sudo
1
$ sudo systemctl start [email protected]
Либо запустить все базы на сервере
1
$ sudo systemctl start postgresql
Создание, удаление базы
Переключаемся на пользователя postgres
1
$ sudo su - postgres
Создаем базу main
(версия PostgreSQL 15), не запуская БД
1
$ pg_createcluster 15 main
Создаем базу portal
(версия PostgreSQL 14) и запустить БД
1
$ pg_createcluster 14 --start portal
Создаем базу main
(версия PostgreSQL 15), локализация ru_RU
, запустить БД
1
$ pg_createcluster --locale ru_RU.UTF-8 --start 15 main
Другие ключи создания БД
1
2
3
4
5
$ pg_createcluster
--datadir=dir
--socketdir=dir
--logfile=path
--port=port
Удаляем БД
1
$ pg_dropcluster --stop 15 main
Обновление БД
Проверяем готовность СУБД к обновлению
1
2
3
4
5
6
7
8
9
10
/usr/lib/postgresql/15/bin/pg_upgrade \
--old-datadir=/var/lib/postgresql/11/main \
--new-datadir=/var/lib/postgresql/15/main \
--old-bindir=/usr/lib/postgresql/11/bin \
--new-bindir=/usr/lib/postgresql/15/bin \
--old-port=5432 \
--new-port=5433 \
--old-options '-c config_file=/etc/postgresql/11/main/postgresql.conf' \
--new-options '-c config_file=/etc/postgresql/15/main/postgresql.conf' \
--check
Обновление
1
2
3
4
5
6
7
8
9
/usr/lib/postgresql/15/bin/pg_upgrade \
--old-datadir=/var/lib/postgresql/11/main \
--new-datadir=/var/lib/postgresql/15/main \
--old-bindir=/usr/lib/postgresql/11/bin \
--new-bindir=/usr/lib/postgresql/15/bin \
--old-port=5432 \
--new-port=5433 \
--old-options '-c config_file=/etc/postgresql/11/main/postgresql.conf' \
--new-options '-c config_file=/etc/postgresql/15/main/postgresql.conf'
Другие действия
Переключаемся на пользователя postgres
1
$ sudo su - postgres
Создаем файл .pgpass
, в котором хранятся пароли для подключения к БД
1
2
3
4
$ cat > ~/.pgpass <<EOS
> 172.16.2.8:5432:replication:postgres:mysuperpass
> EOS
$ chmod 0600 ~/.pgpass
Переводим БД в режиме Replica в режим записи (Master)
1
$ pg_ctl promote -D /var/lib/postgresql/15/main