Postgresql server doesn't start
Ситуация:
Перестал загружать PostgreSQL systemctl
# sudo systemctl start postgresql.service
Кластер по умолчанию /var/lib/postgresql/10/main
Запускаем сервер вручную
Тестовая виртуальная машина
1. Устанавливаем ubuntu 16.04.5 HWE server без swap файла,
т.е. размечаем вручную весь диск ext4 root.
ubuntu имя компьютера u1604
ubuntu пользователь user пароль 12345
ubuntu пользователь postgres password pass
ubuntu пользователь usr1cv8 password pass
Настройки виртуальной машины - RAM (32GB)
Сеть - сетевой мост.
Проще всего пробросить в виртуальную машину лицензии 1С:Предприятия 8 посредством локального hasp.
Настройки ubuntu пользователь (привязка в скриптах) user пароль 12345, имя компьютера
u1604 сеть DHCP
После установки, Ctrl +Alt + T (окно терминала)
$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo apt install mc ssh samba htop -y
Возможно sudo apt upgrade -y не пройдет из за блокировки, тогда sudo reboot и повторите с начала.
$ lsusb
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Пробросить hasp средствами VirtualBox
$ lsusb
Bus 001 Device 004: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
$ sudo cat /proc/cpuinfo | grep MHz
$ sudo systemctl status ondemand
$ sudo systemctl stop ondemand
$ sudo systemctl disable ondemand
$ sudo poweroff
Образ u16045.ova
2. После перезагрузки по сети можно подключиться MobaXterm
к нашей виртуальной машине (по ip или или имени ) загрузить файлы установки:
$ mkdir /home/user/test
В папку ~/test положить файлы:
postgresql_10.3_2.1C_amd64_deb.tar.bz2
postgresql_10.3_2.1C_amd64_addon_deb.tar.bz2
Исправим bug
Several regex warnings when installing latest postgres update
sudo nano /usr/sbin/pam_getenv
строка 78 заменить
$val =~ s/(?<!\\)\${([^}]+)}/$ENV{$1}||""/eg;
на
$val =~ s/(?<!\\)\$\{([^}]+)\}/$ENV{$1}||""/eg;
#sudo apt-get install libicu55 -y
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" >> /etc/apt/sources.list.d/postgresql.list'
sudo apt update -y
sudo apt install libtcl8.6 -y
$ sudo apt-get install postgresql-common postgresql-client-common ssl-cert pgdg-keyring -y
mkdir -p /tmp/post
cp /home/user/test/postgresql_10.3_3.1C_amd64_deb.tar.bz2 /tmp/post/
cp /home/user/test/postgresql_10.3_3.1C_amd64_addon_deb.tar.bz2 /tmp/post/
cd /tmp/post
tar -xvf postgresql_10.3_3.1C_amd64_deb.tar.bz2
cd postgresql-10.3-3.1C_amd64_deb
sudo dpkg -i *.deb
cd /tmp/post/
tar -xvf postgresql_10.3_3.1C_amd64_addon_deb.tar.bz2
cd postgresql-10.3-3.1C_amd64_addon_deb
sudo dpkg -i *.deb
dpkg -l | grep 10.3-3.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
sudo cp /etc/postgresql/10/main/postgresql.conf /etc/postgresql/10/main/postgresql.conf.bak
#sudo rm /etc/apt/sources.list.d/postgresql.list
#sudo apt update -y
#Делаем проверки
#sudo systemctl status postgresql.service
#ss -tunpl | grep 5432
$ ss -tunpl | grep 5432
tcp LISTEN 0 128 *:5432 *:*
tcp LISTEN 0 128 :::5432 :::*
# $ ps aux | grep postgres | grep -- -D
postgres 4914 0.0 0.1 320972 28864 ? S 08:37 0:00 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf
Итак:
Creating new PostgreSQL cluster 10/main ...
/usr/lib/postgresql/10/bin/initdb -D /var/lib/postgresql/10/main --auth-local peer --auth-host md5
Файлы, относящиеся к этой СУБД, будут принадлежать пользователю "postgres".
От его имени также будет запускаться процесс сервера.
Готово. Теперь вы можете запустить сервер баз данных:
/usr/lib/postgresql/10/bin/pg_ctl -D /var/lib/postgresql/10/main -l файл_журнала start
Ver Cluster Port Status Owner Data directory Log file
10 main 5432 down postgres /var/lib/postgresql/10/main pg_log/postgresql-%a.log
$ sudo su - postgres
$ /usr/lib/postgresql/10/bin/pg_ctl stop -D /var/lib/postgresql/10/main
ожидание завершения работы сервера.... готово
сервер остановлен
$ /usr/lib/postgresql/10/bin/pg_ctl start -D /var/lib/postgresql/10/main
ожидание запуска сервера....postgres не может открыть файл конфигурации сервера "/var/lib/postgresql/10/main/postgresql.conf": Нет такого файла или каталога
прекращение ожидания
pg_ctl: не удалось запустить сервер
Изучите протокол выполнения.
Посмотрим почему (ниже будет правильный способ):
Создадим кластер:
$ sudo mkdir /usr/local/pgsql
$ sudo chown postgres /usr/local/pgsql
$ sudo su - postgres
$ /usr/lib/postgresql/10/bin/initdb -D /usr/local/pgsql/data
#------------------------------------------------------------------------------------------------
Сравним каких файлов не хватает:
$ ls /etc/postgresql/10/main
conf.d environment pg_ctl.conf pg_hba.conf pg_ident.conf postgresql.conf postgresql.conf.bak start.conf
$ ls /usr/local/pgsql/data
base pg_hba.conf pg_notify pg_stat pg_twophase postgresql.auto.conf
global pg_ident.conf pg_replslot pg_stat_tmp PG_VERSION postgresql.conf
pg_commit_ts pg_logical pg_serial pg_subtrans pg_wal
pg_dynshmem pg_multixact pg_snapshots pg_tblspc pg_xact
$ ls /var/lib/postgresql/10/main
base pg_dynshmem pg_notify pg_stat pg_twophase postgresql.auto.conf
current_logfiles pg_log pg_replslot pg_stat_tmp PG_VERSION postmaster.opts
global pg_logical pg_serial pg_subtrans pg_wal
pg_commit_ts pg_multixact pg_snapshots pg_tblspc pg_xact
Скопируем недостающие файлы:
$ cp /usr/local/pgsql/data/postgresql.conf /var/lib/postgresql/10/main/
$ cp /usr/local/pgsql/data/pg_hba.conf /var/lib/postgresql/10/main/
$ cp /usr/local/pgsql/data/pg_ident.conf /var/lib/postgresql/10/main/
$ /usr/lib/postgresql/10/bin/pg_ctl start -D /var/lib/postgresql/10/main
ожидание запуска сервера....< 2018-11-20 15:45:08.534 MSK >СООБЩЕНИЕ: для приёма подключений по адресу IPv4 "0.0.0.0" открыт порт 5432
< 2018-11-20 15:45:08.534 MSK >СООБЩЕНИЕ: для приёма подключений по адресу IPv6 "::" открыт порт 5432
< 2018-11-20 15:45:08.535 MSK >СООБЩЕНИЕ: для приёма подключений открыт сокет Unix "/var/run/postgresql/.s.PGSQL.5432"
< 2018-11-20 15:45:08.545 MSK >СООБЩЕНИЕ: передача вывода в протокол процессу сбора протоколов
< 2018-11-20 15:45:08.545 MSK >ПОДСКАЗКА: В дальнейшем протоколы будут выводиться в каталог "pg_log".
готово
сервер запущен
Теперь правильный способ запуска (создавать кластер не нужно):
$ sudo su postgres
$ ps aux | grep postgres | grep -- -D
postgres 1966 0.0 0.1 320972 28588 pts/0 S 07:54 0:00 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf
postgres 1983 0.0 0.0 15468 968 pts/0 S+ 07:55 0:00 grep -- -D
$ /usr/lib/postgresql/10/bin/pg_ctl stop -D /var/lib/postgresql/10/main
ожидание завершения работы сервера.... готово
сервер остановлен
Собственно сам запуск:
$ /usr/lib/postgresql/10/bin/pg_ctl start -w -D /var/lib/postgresql/10/main -o '-c config_file=/etc/postgresql/10/main/postgresql.conf'
ожидание запуска сервера....2018-11-23 07:56:09.602 MSK [1988] СООБЩЕНИЕ: для приёма подключений по адресу IPv4 "0.0.0.0" открыт порт 5432
2018-11-23 07:56:09.602 MSK [1988] СООБЩЕНИЕ: для приёма подключений по адресу IPv6 "::" открыт порт 5432
2018-11-23 07:56:09.603 MSK [1988] СООБЩЕНИЕ: для приёма подключений открыт сокет Unix "/var/run/postgresql/.s.PGSQL.5432"
2018-11-23 07:56:09.627 MSK [1988] СООБЩЕНИЕ: передача вывода в протокол процессу сбора протоколов
2018-11-23 07:56:09.627 MSK [1988] ПОДСКАЗКА: В дальнейшем протоколы будут выводиться в каталог "pg_log".
готово
сервер запущен
Другой способ запуска:
$ sudo su postgres
$ /usr/lib/postgresql/10/bin/pg_ctl stop -D /var/lib/postgresql/10/main
ожидание завершения работы сервера.... готово
сервер остановлен
$ /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c 'config_file=/etc/postgresql/10/main/postgresql.conf'
Ситуация:
Перестал загружать PostgreSQL systemctl
# sudo systemctl start postgresql.service
Кластер по умолчанию /var/lib/postgresql/10/main
Запускаем сервер вручную
Тестовая виртуальная машина
1. Устанавливаем ubuntu 16.04.5 HWE server без swap файла,
т.е. размечаем вручную весь диск ext4 root.
ubuntu имя компьютера u1604
ubuntu пользователь user пароль 12345
ubuntu пользователь postgres password pass
ubuntu пользователь usr1cv8 password pass
Настройки виртуальной машины - RAM (32GB)
Сеть - сетевой мост.
Проще всего пробросить в виртуальную машину лицензии 1С:Предприятия 8 посредством локального hasp.
Настройки ubuntu пользователь (привязка в скриптах) user пароль 12345, имя компьютера
u1604 сеть DHCP
После установки, Ctrl +Alt + T (окно терминала)
$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo apt install mc ssh samba htop -y
Возможно sudo apt upgrade -y не пройдет из за блокировки, тогда sudo reboot и повторите с начала.
$ lsusb
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Пробросить hasp средствами VirtualBox
$ lsusb
Bus 001 Device 004: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
$ sudo cat /proc/cpuinfo | grep MHz
$ sudo systemctl status ondemand
$ sudo systemctl stop ondemand
$ sudo systemctl disable ondemand
$ sudo poweroff
Образ u16045.ova
2. После перезагрузки по сети можно подключиться MobaXterm
к нашей виртуальной машине (по ip или или имени ) загрузить файлы установки:
$ mkdir /home/user/test
В папку ~/test положить файлы:
postgresql_10.3_2.1C_amd64_deb.tar.bz2
postgresql_10.3_2.1C_amd64_addon_deb.tar.bz2
Исправим bug
Several regex warnings when installing latest postgres update
sudo nano /usr/sbin/pam_getenv
строка 78 заменить
$val =~ s/(?<!\\)\${([^}]+)}/$ENV{$1}||""/eg;
на
$val =~ s/(?<!\\)\$\{([^}]+)\}/$ENV{$1}||""/eg;
#sudo apt-get install libicu55 -y
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" >> /etc/apt/sources.list.d/postgresql.list'
sudo apt update -y
sudo apt install libtcl8.6 -y
$ sudo apt-get install postgresql-common postgresql-client-common ssl-cert pgdg-keyring -y
mkdir -p /tmp/post
cp /home/user/test/postgresql_10.3_3.1C_amd64_deb.tar.bz2 /tmp/post/
cp /home/user/test/postgresql_10.3_3.1C_amd64_addon_deb.tar.bz2 /tmp/post/
cd /tmp/post
tar -xvf postgresql_10.3_3.1C_amd64_deb.tar.bz2
cd postgresql-10.3-3.1C_amd64_deb
sudo dpkg -i *.deb
cd /tmp/post/
tar -xvf postgresql_10.3_3.1C_amd64_addon_deb.tar.bz2
cd postgresql-10.3-3.1C_amd64_addon_deb
sudo dpkg -i *.deb
dpkg -l | grep 10.3-3.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
sudo cp /etc/postgresql/10/main/postgresql.conf /etc/postgresql/10/main/postgresql.conf.bak
#sudo rm /etc/apt/sources.list.d/postgresql.list
#sudo apt update -y
#Делаем проверки
#sudo systemctl status postgresql.service
#ss -tunpl | grep 5432
$ ss -tunpl | grep 5432
tcp LISTEN 0 128 *:5432 *:*
tcp LISTEN 0 128 :::5432 :::*
# $ ps aux | grep postgres | grep -- -D
postgres 4914 0.0 0.1 320972 28864 ? S 08:37 0:00 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf
Итак:
Creating new PostgreSQL cluster 10/main ...
/usr/lib/postgresql/10/bin/initdb -D /var/lib/postgresql/10/main --auth-local peer --auth-host md5
Файлы, относящиеся к этой СУБД, будут принадлежать пользователю "postgres".
От его имени также будет запускаться процесс сервера.
Готово. Теперь вы можете запустить сервер баз данных:
/usr/lib/postgresql/10/bin/pg_ctl -D /var/lib/postgresql/10/main -l файл_журнала start
Ver Cluster Port Status Owner Data directory Log file
10 main 5432 down postgres /var/lib/postgresql/10/main pg_log/postgresql-%a.log
$ sudo su - postgres
$ /usr/lib/postgresql/10/bin/pg_ctl stop -D /var/lib/postgresql/10/main
ожидание завершения работы сервера.... готово
сервер остановлен
$ /usr/lib/postgresql/10/bin/pg_ctl start -D /var/lib/postgresql/10/main
ожидание запуска сервера....postgres не может открыть файл конфигурации сервера "/var/lib/postgresql/10/main/postgresql.conf": Нет такого файла или каталога
прекращение ожидания
pg_ctl: не удалось запустить сервер
Изучите протокол выполнения.
Посмотрим почему (ниже будет правильный способ):
Создадим кластер:
$ sudo mkdir /usr/local/pgsql
$ sudo chown postgres /usr/local/pgsql
$ sudo su - postgres
$ /usr/lib/postgresql/10/bin/initdb -D /usr/local/pgsql/data
#------------------------------------------------------------------------------------------------
# Можно но нам не нужно
$ exit
$ sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
$ ps aux | grep postgres | grep -- -D
postgres 16622 0.0 0.0 320612 27328 pts/0 S 19:52 0:00
#------------------------------------------------------------------------------------------------Сравним каких файлов не хватает:
$ ls /etc/postgresql/10/main
conf.d environment pg_ctl.conf pg_hba.conf pg_ident.conf postgresql.conf postgresql.conf.bak start.conf
$ ls /usr/local/pgsql/data
base pg_hba.conf pg_notify pg_stat pg_twophase postgresql.auto.conf
global pg_ident.conf pg_replslot pg_stat_tmp PG_VERSION postgresql.conf
pg_commit_ts pg_logical pg_serial pg_subtrans pg_wal
pg_dynshmem pg_multixact pg_snapshots pg_tblspc pg_xact
$ ls /var/lib/postgresql/10/main
base pg_dynshmem pg_notify pg_stat pg_twophase postgresql.auto.conf
current_logfiles pg_log pg_replslot pg_stat_tmp PG_VERSION postmaster.opts
global pg_logical pg_serial pg_subtrans pg_wal
pg_commit_ts pg_multixact pg_snapshots pg_tblspc pg_xact
Скопируем недостающие файлы:
$ cp /usr/local/pgsql/data/postgresql.conf /var/lib/postgresql/10/main/
$ cp /usr/local/pgsql/data/pg_hba.conf /var/lib/postgresql/10/main/
$ cp /usr/local/pgsql/data/pg_ident.conf /var/lib/postgresql/10/main/
$ /usr/lib/postgresql/10/bin/pg_ctl start -D /var/lib/postgresql/10/main
ожидание запуска сервера....< 2018-11-20 15:45:08.534 MSK >СООБЩЕНИЕ: для приёма подключений по адресу IPv4 "0.0.0.0" открыт порт 5432
< 2018-11-20 15:45:08.534 MSK >СООБЩЕНИЕ: для приёма подключений по адресу IPv6 "::" открыт порт 5432
< 2018-11-20 15:45:08.535 MSK >СООБЩЕНИЕ: для приёма подключений открыт сокет Unix "/var/run/postgresql/.s.PGSQL.5432"
< 2018-11-20 15:45:08.545 MSK >СООБЩЕНИЕ: передача вывода в протокол процессу сбора протоколов
< 2018-11-20 15:45:08.545 MSK >ПОДСКАЗКА: В дальнейшем протоколы будут выводиться в каталог "pg_log".
готово
сервер запущен
Теперь правильный способ запуска (создавать кластер не нужно):
$ sudo su postgres
$ ps aux | grep postgres | grep -- -D
postgres 1966 0.0 0.1 320972 28588 pts/0 S 07:54 0:00 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf
postgres 1983 0.0 0.0 15468 968 pts/0 S+ 07:55 0:00 grep -- -D
$ /usr/lib/postgresql/10/bin/pg_ctl stop -D /var/lib/postgresql/10/main
ожидание завершения работы сервера.... готово
сервер остановлен
Собственно сам запуск:
$ /usr/lib/postgresql/10/bin/pg_ctl start -w -D /var/lib/postgresql/10/main -o '-c config_file=/etc/postgresql/10/main/postgresql.conf'
ожидание запуска сервера....2018-11-23 07:56:09.602 MSK [1988] СООБЩЕНИЕ: для приёма подключений по адресу IPv4 "0.0.0.0" открыт порт 5432
2018-11-23 07:56:09.602 MSK [1988] СООБЩЕНИЕ: для приёма подключений по адресу IPv6 "::" открыт порт 5432
2018-11-23 07:56:09.603 MSK [1988] СООБЩЕНИЕ: для приёма подключений открыт сокет Unix "/var/run/postgresql/.s.PGSQL.5432"
2018-11-23 07:56:09.627 MSK [1988] СООБЩЕНИЕ: передача вывода в протокол процессу сбора протоколов
2018-11-23 07:56:09.627 MSK [1988] ПОДСКАЗКА: В дальнейшем протоколы будут выводиться в каталог "pg_log".
готово
сервер запущен
Другой способ запуска:
$ sudo su postgres
$ /usr/lib/postgresql/10/bin/pg_ctl stop -D /var/lib/postgresql/10/main
ожидание завершения работы сервера.... готово
сервер остановлен
$ /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c 'config_file=/etc/postgresql/10/main/postgresql.conf'
Комментариев нет:
Отправить комментарий