Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Симптом
При обновлении базы данных 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 pgsqlupdate-alternatives --listЕсли для параметров задан
manual, вы можете изменить его наautoс помощью следующей команды:update-alternatives --auto psql
Установка параметра "альтернативы" в значение
autoуказывает на обновленные версии исполняемых файловpsqlиpostgres. В противном случае исполняемые файлы будут указывать на более старую версию, что может вызвать проблемы.