Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
Симптом
Вы получаете сообщение об ошибке при обновлении базы данных PostgreSQL.
Сообщение об ошибке
ERROR: PostgreSQL Upgrade FAILED
Возможные причины
Причина | Описание | Инструкции по устранению неполадок относятся к |
---|---|---|
Неправильные настройки репликации в файле конфигурации PostgreSQL. | Обновление PostgreSQL завершается неудачно из-за неправильных настроек репликации во время обновления. | Пользователи Edge частного облака |
Установка PostgreSQL выполняется другим пользователем установки, отличным от пользователя apigee. | Первоначально PostgreSQL был установлен с другим пользователем в качестве пользователя установки, что приводит к сбою обновления. | Пользователи Edge частного облака |
Общие этапы диагностики
Если при обновлении базы данных PostgreSQL вы получаете сообщение об ошибке, сначала выполните следующие действия по диагностике:
Переименуйте папку данных PostgreSQL:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Убедитесь, что исходные данные резервной копии находятся в папке с именем
/opt/apigee/data/apigee-postgresql/pgdata- version .old/
Например:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Восстановите данные резервной копии из
/opt/apigee/data/apigee-postgresql/pgdata- version .old/
в/opt/apigee/data/apigee-postgresql/pgdata
используя следующую команду:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Например:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Повторно запустите команду
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Если вы получаете следующую ошибку...
pg_resetxlog: could not open file "global/pg_control" for reading: No such file or directory
...затем переименуйте файл
pg_control.old
вpg_control
используя следующую команду:mv /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control.old /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control
Повторно запустите команду
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Если проблема не устранена, перейдите к разделу Причина: неправильные настройки репликации в файле конфигурации PostgreSQL .
Причина: неправильные настройки репликации в файле конфигурации PostgreSQL.
Диагностика
- Проверьте, есть ли в файле конфигурации PostgreSQL
/opt/apigee/apigee-postgresql/conf/pg_hba.conf
нужные параметры репликации. - Если этот файл имеет ожидаемые настройки репликации, перейдите к установке PostgreSQL, выполняемой другим пользователем установки, отличным от пользователя «apigee» .
- Если нет, перейдите в раздел «Решение» .
Разрешение
Переименуйте папку данных PostgreSQL с помощью следующей команды:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Убедитесь, что исходные данные резервной копии находятся в папке с именем:
/opt/apigee/data/apigee-postgresql/pgdata- version .old/
Например:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Восстановите данные резервной копии из
/opt/apigee/data/apigee-postgresql/pgdata- version .old/
в/opt/apigee/data/apigee-postgresql/pgdata
используя следующую команду:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Например:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Если вы когда-либо меняли подчиненный хост, вам необходимо обновить следующее свойство в
/opt/apigee/customer/application/postgresql.properties
, чтобы обновить файл конфигурацииpg_hba.conf
:conf_pg_hba_replication.connection=host replication apigee existing_slave_ip/32 trust\ \nhost replication apigee new_slave_ip/32 trust
Перезапустите службу
apigee-postgresql
, чтобы убедиться, что свойство, установленное на шаге 4 выше, обновлено в файле конфигурацииpg_hba.conf
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
Сделайте файл конфигурации
pg_hba.conf
неизменяемым с помощью следующей команды, чтобы гарантировать, что он не будет обновлен с неправильными настройками во время обновления PostgreSQL:chattr +i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
Повторно запустите команду
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Удалите неизменяемый параметр в файле конфигурации
pg_hba.conf
:chattr -i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
Причина: установка PostgreSQL выполнена другим пользователем установки, отличным от пользователя apigee
Диагностика
Проверьте, есть ли еще пользователь, для которого rolesuper установлено значение true , выполнив следующие действия:
На узле PostgreSQL войдите в PostgreSQL, используя следующую команду:
psql -h $(hostname -i) -U apigee
Запустите следующий SQL-запрос:
select * from pg_authid;
Проверьте, есть ли несколько пользователей, у которых для rolesuper установлено значение true . Если они есть, то обновление PostgreSQL не удалось, поскольку вместо пользователя apigee в качестве пользователя установки был установлен другой пользователь. Любой пользователь с ролью rolesuper и более низким OID считается пользователем, выполняющим установку.
Чтобы проверить подобную проблему с ролями, выполните следующие SQL-запросы:
select oid,rolname,rolsuper from pg_roles; select * from pg_user;
Разрешение
Войдите в PostgreSQL, используя следующую команду:
psql -h $(hostname -i) -U apigee
Переименуйте существующую роль
apigee
в старой БД во временного пользователя (например:apigee2
):update pg_authid set rolname ='apigee2' where rolname = 'apigee';
Допустим, был другой установщик
srcapige
. Переименуйте рольsrcapige
вapigee
:update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
Переименуйте
apigee2
в пользователяsrcapige
:update pg_authid set rolname ='secapigee' where rolname = 'apigee2';
Обновите пароль для всех переименованных пользователей:
ALTER ROLE apigee WITH PASSWORD '<secret>'; ALTER ROLE srcapige WITH PASSWORD '<secret>';
Переименуйте папку данных PostgreSQL с помощью следующей команды:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Убедитесь, что в папке с именем
/opt/apigee/data/apigee-postgresql/pgdata- version .old/
имеются исходные данные резервной копии.Например:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Восстановите данные из папки
/opt/apigee/data/apigee-postgresql/pgdata- version .old/
в/opt/apigee/data/apigee-postgresql/pgdata
используя следующую команду:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Например:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Повторно запустите команду
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Перезапустите все службы
apigee-qpidd
иedge-qpid-server
:/opt/apigee/apigee-service/bin/apigee-service apigee-qpidd restart
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
Если проблема не устранена, перейдите к разделу «Необходимо собрать диагностическую информацию» .
Необходимо собрать диагностическую информацию
Если проблема не устранена после выполнения приведенных выше инструкций по устранению неполадок, соберите следующую диагностическую информацию. Свяжитесь со службой поддержки Apigee и поделитесь этой информацией со службой поддержки:
- Добавьте
set -x
во вторую строку файла/opt/apigee/apigee-postgresql/lib/actions/db_upgrade
. Выполните общие шаги диагностики и предоставьте команде поддержки консольный вывод команды
db_upgrade
:opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Предоставьте следующие файлы журналов в службу поддержки:
/opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log /opt/apigee/var/log/apigee-postgresql/update.log
Предоставьте выходные данные следующих команд операционной системы, чтобы проверить, установлены ли альтернативы на
auto
.update-alternatives --display psql
ИЛИ
update-alternatives --display pgsql
update-alternatives --list psql
ИЛИ
update-alternatives --list pgsql
Если в качестве альтернативы установлено значение
manual
, вы можете установить для них значениеauto
, используя следующую команду:update-alternatives --auto psql
Установка альтернатив для
auto
указания двоичных файловpsql
иpostgres
на обновленные версии. В противном случае двоичные файлы будут указывать на более старую версию, что может вызвать проблемы.