Автор Тема: Обновление Postgresql 9.1 - 9.6  (Прочитано 3540 раз)

Оффлайн le2x

  • Начинающий
  • *
  • Сообщений: 17
Обновление Postgresql 9.1 - 9.6
« : 10.02.2017 12:00:21 »
Добрый день!
Прошу вашей помощи по обновлению версии Postgresql c версии 9.1 до версии 9.6 при помощи pg_upgrade
Вдохновившись инструкцией pg_upgrade я приступил к действию
Порядок моих действий:
Останавливаю Postgresql 9.1
service postgresql stopПереименовываю паку с БД
mv /var/lib/pgsql-root/var/lib/pgsql /var/lib/pgsql-root/var/lib/pgsql.oldКопирую папку bin от старого Postgresql 9.1
cp -R /usr/bin /usr/bin91Устанавливаю свежий Postgresql 9.6
apt-get install postgresql9.6-server postgresql9.6-contribИнициализирую новую БД
/etc/init.d/postgresql initdbПравлю конфиги нового Postgresql 9.6.
Запускаю новый Postgresql 9.6 для проверки
service postgresql startОстанавливаю новый Postgresql
service postgresql stopЗапускаю консоль в режиме пользователя postgres, ибо pg_upgrade работает под этим пользователем
su - postgres -s /bin/bashВыполняю  pg_upgrade
pg_upgrade -b /usr/bin91 -B /usr/bin -d /var/lib/pgsql.old/data -D /var/lib/pgsql/data -c -vНо в итоге получаю вот это:
Спойлер
-bash-3.2$ pg_upgrade -b /usr/bin91 -B /usr/bin -d /var/lib/pgsql.old/data -D /var/lib/pgsql/data -c -v
Running in verbose mode
Performing Consistency Checks
-----------------------------
Checking cluster versions                                   ok
pg_control values:

First log file ID after reset:        0
First log file segment after reset:   8
pg_control version number:            903
Catalog version number:               201105231
Database system identifier:           6385094122559799295
Latest checkpoint's TimeLineID:       1
Latest checkpoint's NextXID:          0/21786
Latest checkpoint's NextOID:          31711
Latest checkpoint's NextMultiXactId:  1
Latest checkpoint's NextMultiOffset:  0
Latest checkpoint's oldestXID:        1280
Latest checkpoint's oldestXID's DB:   1
Latest checkpoint's oldestActiveXID:  0
Maximum data alignment:               8
Database block size:                  8192
Blocks per segment of large relation: 131072
WAL block size:                       8192
Bytes per WAL segment:                16777216
Maximum length of identifiers:        64
Maximum columns in an index:          32
Maximum size of a TOAST chunk:        1996
Date/time type storage:               64-bit integers
Float4 argument passing:              by value
Float8 argument passing:              by value
Current pg_control values:

pg_control version number:            960
Catalog version number:               201608131
Database system identifier:           6385146603478635820
Latest checkpoint's TimeLineID:       1
Latest checkpoint's full_page_writes: on
Latest checkpoint's NextXID:          0:1161
Latest checkpoint's NextOID:          13017
Latest checkpoint's NextMultiXactId:  1
Latest checkpoint's NextMultiOffset:  0
Latest checkpoint's oldestXID:        1154
Latest checkpoint's oldestXID's DB:   1
Latest checkpoint's oldestActiveXID:  0
Latest checkpoint's oldestMultiXid:   1
Latest checkpoint's oldestMulti's DB: 1
Latest checkpoint's oldestCommitTsXid:0
Latest checkpoint's newestCommitTsXid:0
Maximum data alignment:               8
Database block size:                  8192
Blocks per segment of large relation: 131072
WAL block size:                       8192
Bytes per WAL segment:                16777216
Maximum length of identifiers:        64
Maximum columns in an index:          32
Maximum size of a TOAST chunk:        1996
Size of a large-object chunk:         2048
Date/time type storage:               64-bit integers
Float4 argument passing:              by value
Float8 argument passing:              by value
Data page checksum version:           0


Values to be changed:

First log segment after reset:        000000010000000000000002
"/usr/bin91/pg_ctl" -w -l "pg_upgrade_server.log" -D "/var/lib/pgsql.old/data" -o "-p 50432 -b  -c listen_addresses='' -c unix_socket_permissions=0700 -c unix_socket_directory='/var/lib/pgsql'" start >> "pg_upgrade_server.log" 2>&1

*failure*
There were problems executing ""/usr/bin91/pg_ctl" -w -l "pg_upgrade_server.log" -D "/var/lib/pgsql.old/data" -o "-p 50432 -b  -c listen_addresses='' -c unix_socket_permissions=0700 -c unix_socket_directory='/var/lib/pgsql'" start >> "pg_upgrade_server.log" 2>&1"
Consult the last few lines of "pg_upgrade_server.log" for
the probable cause of the failure.

connection to database failed: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/lib/pgsql/.s.PGSQL.50432"?


could not connect to old postmaster started with the command:
"/usr/bin91/pg_ctl" -w -l "pg_upgrade_server.log" -D "/var/lib/pgsql.old/data" -o "-p 50432 -b  -c listen_addresses='' -c unix_socket_permissions=0700 -c unix_socket_directory='/var/lib/pgsql'" start
Failure, exiting
-bash-3.2$ echo $PGPORT

-bash-3.2$
Что я делаю не так? что с этим делать - connections on Unix domain socket "/var/lib/pgsql/.s.PGSQL.50432"?
В linux как в женщине есть загадка… Обидится… И хрен разгадаешь на что…

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 251
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: Обновление Postgresql 9.1 - 9.6
« Ответ #1 : 10.02.2017 12:47:58 »
Цитировать
      Is the server running locally and accepting
        connections on Unix domain socket "/var/lib/pgsql/.s.PGSQL.50432"?

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 251
  • Учиться .... Телепатами не рождаются, ими ....
    • Email

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 251
  • Учиться .... Телепатами не рождаются, ими ....
    • Email

Оффлайн le2x

  • Начинающий
  • *
  • Сообщений: 17
Re: Обновление Postgresql 9.1 - 9.6
« Ответ #4 : 11.02.2017 11:44:52 »
Цитировать
      Is the server running locally and accepting
        connections on Unix domain socket "/var/lib/pgsql/.s.PGSQL.50432"?
Вы намекаете на то что нужно сначала запустить старый Postgres 9.1?
Запускаю старый Postgres 9.1?
/usr/bin91/pg_ctl start -D /var/lib/pgsql.old/data -l serverlogПроделываю pg_upgrade
pg_upgrade -c -b /usr/bin91 -B /usr/bin -d /var/lib/pgsql.old/data -D /var/lib/pgsql/dataи так тоже пробовал
pg_upgrade -c -b /usr/bin91 -B /usr/bin -d /var/lib/pgsql.old/data -D /var/lib/pgsql/data -o " -c config_file=/var/lib/pgsql.old/data/postgresql.conf " -O " -c config_file=/var/lib/pgsql/data/postgresql.conf "Вроде бы все хорошо на экране вижу следующее:
Спойлер
*failure*
Consult the last few lines of "pg_upgrade_server.log" for
the probable cause of the failure.
Performing Consistency Checks on Old Live Server
------------------------------------------------
Checking cluster versions                                   ok
Checking database user is the install user                  ok
Checking database connection settings                       ok
Checking for prepared transactions                          ok
Checking for reg* system OID user data types                ok
Checking for contrib/isn with bigint-passing mismatch       ok
Checking for roles starting with 'pg_'                      ok
Checking for invalid "line" user columns                    ok
Checking for presence of required libraries                 ok
Checking database user is the install user                  ok
Checking for prepared transactions                          ok

*Clusters are compatible*
В логах пишут это:
Спойлер
command: "/usr/bin91/pg_ctl" -w -l "pg_upgrade_server.log" -D "/var/lib/pgsql.old/data" -o "-p 50432 -c autovacuum=off -c autovacuum_freeze_max_age=2000000000 -c config_file='/var/lib/pgsql.old/data/postgresql.conf' -c listen_addresses='' -c unix_socket_permissions=0700" start >> "pg_upgrade_server.log" 2>&1
pg_ctl: another server might be running; trying to start server anyway
waiting for server to start....FATAL:  lock file "postmaster.pid" already exists
HINT:  Is another postmaster (PID 10226) running in data directory "/var/lib/pgsql.old/data"?
.........
pg_ctl: this data directory appears to be running a pre-existing postmaster
 stopped waiting
pg_ctl: could not start server
Examine the log output.


command: "/usr/bin/pg_ctl" -w -l "pg_upgrade_server.log" -D "/var/lib/pgsql/data" -o "-p 50432 -b -c synchronous_commit=off -c fsync=off -c full_page_writes=o -c config_file='/var/lib/pgsql/data/postgresql.conf' -c listen_addresses='' -c unix_socket_permissions=0700 -c unix_socket_directories='/var/lib/pgsql'" start >> "pg_upgrade_server.log" 2>&1
ожидание запуска сервера....СООБЩЕНИЕ:  система БД была выключена: 2017-02-10 19:12:59 MSK
СООБЩЕНИЕ:  Защита от наложения мультитранзакций сейчас включена
СООБЩЕНИЕ:  система БД готова принимать подключения
 готово
сервер запущен


command: "/usr/bin/pg_ctl" -w -D "/var/lib/pgsql/data" -o " -c config_file='/var/lib/pgsql/data/postgresql.conf'"  stop >> "pg_upgrade_server.log" 2>&1
СООБЩЕНИЕ:  получен запрос на быстрое выключение
ожидание завершения работы сервера....СООБЩЕНИЕ:  прерывание всех активных транзакций
СООБЩЕНИЕ:  выключение
СООБЩЕНИЕ:  система БД выключена
 готово
сервер остановлен
Я так понимаю pg_upgrade мешает запущенный старый Postgres 9.1 ?
Но если его выключить то получаем ошибку как в первом посте. Кстати забыл приложить логи к случаю с остановленными серверами (первый пост)
Спойлер
command: "/usr/bin91/pg_ctl" -w -l "pg_upgrade_server.log" -D "/var/lib/pgsql.old/data" -o "-p 50432 -b  -c config_file='/var/lib/pgsql.old/data/postgresql.conf' -c listen_addresses='' -c unix_socket_permissions=0700 -c unix_socket_directory='/var/lib/pgsql'" start >> "pg_upgrade_server.log" 2>&1
waiting for server to start..../usr/bin91/postgres: неверный ключ — «b»
/usr/bin91/postgres: неверный ключ — «b»
Try "postgres --help" for more information.
......... stopped waiting
pg_ctl: could not start server
Examine the log output.
Что за ключ «b» как его убрать? Откуда pg_upgrade берет параметры запуска? Может есть какой-то конфиг pg_upgrade?
« Последнее редактирование: 11.02.2017 13:51:39 от le2x »
В linux как в женщине есть загадка… Обидится… И хрен разгадаешь на что…

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 251
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: Обновление Postgresql 9.1 - 9.6
« Ответ #5 : 11.02.2017 12:11:34 »
Как я понимаю, для того, что-бы отработала команда pg_upgrade , нужно, что-бы старый postgres "отдавал"  свои данные по сокету 50432, но при этом новый postgres не может в это время занимать этот-же сокет.
Нужно-ли, что-быв был запущен новый  postgres - я не знаю, но если это нужно, то надо что-бы он не обращался к сокету 50432

А так - я конкретики не знаю - чисто теорентические соображения.

Оффлайн le2x

  • Начинающий
  • *
  • Сообщений: 17
Re: Обновление Postgresql 9.1 - 9.6
« Ответ #6 : 12.02.2017 19:39:33 »
Интересно а есть ли возможность на Alt-linux установить 2 Postgresql сервера, чтобы они могли работать одновременно например на разных портах?
В linux как в женщине есть загадка… Обидится… И хрен разгадаешь на что…

Оффлайн Dmytro

  • Мастер
  • ***
  • Сообщений: 1 001
Re: Обновление Postgresql 9.1 - 9.6
« Ответ #7 : 12.02.2017 19:58:16 »
Интересно а есть ли возможность на Alt-linux установить 2 Postgresql сервера, чтобы они могли работать одновременно например на разных портах?
В контейнер.