Как обновить базу данных Cloudera Manager Postgres

У меня Cloudera Manager 5.9 установлен на Ubuntu 12.04 со встроенной базой данных postgres. Я обновил Ubuntu до 14.04, используя do-release-upgrade. В процессе, Postgres также был обновлен с 8,4 до 9,3. Теперь, когда я пытаюсь запустить базу данных CM через:

# sudo service cloudera-scm-server-db start

Я получаю следующую ошибку в CM db.log:

FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 8.4, which is not compatible with this version 9.3.15.

Как мне пройти это? Я просмотрел много документации, в которой говорится о выгрузке базы данных postgres через pg_dump и восстановлении через psql, но я не знаю, как это применяется в контексте менеджера cloudera, особенно когда база данных не подходит.

На Ubuntu 12.04, когда все работает, я считаю, что дамп можно взять так:

#pg_dump -h localhost -p 7432 -U scm > /tmp/scm_server_db_backup.$(date +%Y%m%d)

Я могу попытаться создать пустую базу данных и восстановить дамп этой базы данных с помощью psql. Но как мне настроить cdh, чтобы он указывал на эту базу данных?

2 ответа

Решение

Я могу решить эту проблему, используя следующий процесс:

Шаг 1: Сделайте дамп работающей базы данных postgres в Ubuntu 14.02

# sudo su

# su - postgres

# pg_dump -h localhost -p 7432 -U scm scm > scm.sql

Шаг 2: Обновите Ubuntu до 16.04

# sudo do-release-upgrade

...

Шаг 3: переименуйте старый каталог данных

# mv /var/lib/cloudera-scm-server-db/data/ /var/lib/cloudera-scm-server-db/data9-3

Шаг 4: Перезапустите сервис cloudera-scm-server-db. Это создаст пустую базу данных, которую мы будем заполнять, используя резервную копию, сделанную на шаге 1

# sudo service cloudera-scm-server-db restart

Шаг 5: Теперь восстановите базу данных

# sudo su

# su - postgres

# psql -h localhost -p 7432 -U scm

(пароль можно получить так: grep password /etc/cloudera-scm-server/db.properties)

scm> \i scm.sql

Шаг 6: Теперь перезапустите службу cloudera-scm-server:

# sudo service cloudera-scm-service restart

Как вы предлагаете, вам нужно найти способ "преобразовать" файлы данных 8.4 в файлы данных 9.3. Для использования pg_dump потребуется работающий экземпляр PostgreSQL 8.4. Итак, в основном вам нужен работающий Postgresql 8.4 (например, VM или Docker), затем скопируйте существующие поля 8.4 в эту VM/Docker, чтобы эта VM / Docker предоставляла дамп в виде простого текста [обычный SQL, совместимый с любой версией), восстановите этот дамп в виде простого текста в вашем экземпляре 9.3).

Ты можешь попробовать:

  • Создайте экземпляр VirtualMachine или Docker с помощью Postgresql 8.4.
    развертывается.
  • Найдите основной каталог данных (обычно /var/lib/postgresql/8.4/main в Ubuntu, но это может отличаться)
    ваша модернизированная машина Cloudera. Сделайте резервную копию этого каталога и храните в
    безопасный.
  • Остановите PostgreSQL на вашей VM/Docker, если это необходимо. Найдите основной каталог данных (обычно /var/lib/postgresql/8.4/main в Ubuntu, но
    это может отличаться).
  • Замените предыдущий найденный каталог копией существующего 8.4 / основного контента (тот, что находится на обновленной машине с PG 9.3) на виртуальную машину / докер.
  • Перезапустите PostgreSQL 8.4 на ВМ / Docker
  • Используйте pg_dumpall для создания полной резервной копии:

    pg_dumpall> dump.sql

  • Перенесите dump.sql на свой компьютер Cloudera и восстановите его. Возможно, вам придется удалить предыдущие схемы / базы данных:

    psql -f dump.sql postgres

Другие вопросы по тегам