Как обновить базу данных 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