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