ambari-server.log内のエラー
INFO [main] DBAccessorImpl:841 - Executing query: ALTER SCHEMA ambarischema OWNER TO "ambari";ERROR [main] DBAccessorImpl:847 - Error executing query: ALTER SCHEMA ambarischema OWNER TO "ambari";
org.postgresql.util.PSQLException: ERROR: schema "ambarischema" does not exist
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2161)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1890)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:559)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:403)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:395)
at org.apache.ambari.server.orm.DBAccessorImpl.executeQuery(DBAccessorImpl.java:844)
at org.apache.ambari.server.orm.DBAccessorImpl.executeQuery(DBAccessorImpl.java:836)
at org.apache.ambari.server.upgrade.AbstractUpgradeCatalog.changePostgresSearchPath(AbstractUpgradeCatalog.java:361)
at org.apache.ambari.server.upgrade.AbstractUpgradeCatalog.upgradeSchema(AbstractUpgradeCatalog.java:922)
at org.apache.ambari.server.upgrade.SchemaUpgradeHelper.executeUpgrade(SchemaUpgradeHelper.java:207)
at org.apache.ambari.server.upgrade.SchemaUpgradeHelper.main(SchemaUpgradeHelper.java:425)
回避方法
概ね3通り
A) Schema Ownerを変えてみる
Ambari DBユーザかpostgresでpsqlを起動し、Information_schemaを確認する:
select catalog_name, schema_name, schema_owner from information_schema.schemata;
select table_catalog, table_schema from information_schema.tables where table_name = 'hostcomponentdesiredstate'
備考: AmbariのDBチエッカーは二つ目のクエリーと似たものでスキーマが正しいかチェックします。
現在のSchemaオーナーで再ログインして(もしくはpostgresユーザ)
\c ambari
ALTER SCHEMA ambari_tests OWNER TO "ambari"
B) データベースのエクスポート・インポート
pg_dump -Uambari ambari > ambari.sql
ambari.sqlファイル内の下記のラインが正しいことを確認
CREATE SCHEMA ambarischema;
ALTER SCHEMA ambarischema OWNER TO ambari;
SET search_path = ambarischema, pg_catalog;
sudo -u postgres psql -c "ALTER DATABASE ambari RENAME TO ambari_bakup"
sudo -u postgres psql -c "CREATE DATABASE ambari"
sudo -u postgres psql ambari < ambari.sql
備考:ALTERステートメントにスキーマが指定してあるので、スキーマを変更するのであれば確認が必要です。
例:ALTER TABLE ambarischema.metainfo OWNER TO ambari;
また、DBユーザのsearch_pathにこのスキーマが入っていないと、Ambariが起動しません。
C) テスト環境などで、一時的にUpgradeを完了したい場合は、"server.jdbc.postgres.schema" をambari.propertiesから削除するとALTER SCHEMAは実行されません。
ただし、 DBチェッカーが"select table_schema from information_schema.tables where table_name = 'hostcomponentdesiredstate'"のスキーマと違うためエラーを出します。
0 件のコメント:
コメントを投稿