Как обновить базу данных 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 manager, особенно когда база данных не подходит.

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

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

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

2 ответов


Как вы предлагаете, вам нужно найти способ "конвертировать" файлы данных 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/main (на обновленном компьютере, имеющем теперь PG 9.3) в VM/Docker.
  • перезапустите PostgreSQL 8.4 на VM / Docker
  • использование pg_dumpall для создания полной резервной копии :

    pg_dumpall > свалка.в SQL

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

    команду psql-F в свалку.язык SQL postgres


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

Шаг 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.свойства)

scm> \i scm.sql

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

# sudo service cloudera-scm-service restart