如何升级Cloudera Manager Postgres数据库

Pra*_*wat 9 postgresql cloudera-manager ubuntu-14.04

我在Ubuntu 12.04上安装了Cloudera Manager 5.9,带有嵌入式postgres数据库.我使用do-release-upgrade将Ubuntu升级到14.04.在此过程中,Postgres也从8.4升级到9.3.现在,当我尝试通过以下方式启动CM数据库时:

# sudo service cloudera-scm-server-db start
Run Code Online (Sandbox Code Playgroud)

我在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.
Run Code Online (Sandbox Code Playgroud)

我如何通过这个?我看了很多关于通过pg_dump转储postgres数据库并通过psql恢复的文档,但我不知道这在cloudera manager的上下文中是如何应用的,特别是当数据库没有出现时.

在Ubuntu 12.04上,当一切正常时,我相信转储可以像这样:

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

我可以尝试创建一个空数据库并使用psql将转储恢复到此数据库.但是如何配置cdh指向此数据库?

Pra*_*wat 1

我可以使用以下过程解决此问题:

步骤 1:转储 Ubuntu 14.02 上正在运行的 postgres 数据库

# sudo su

# su - postgres

# pg_dump -h localhost -p 7432 -U scm scm > scm.sql
Run Code Online (Sandbox Code Playgroud)

步骤 2:将 Ubuntu 升级到 16.04

# sudo do-release-upgrade
Run Code Online (Sandbox Code Playgroud)

...

步骤 3:重命名旧数据目录

# mv /var/lib/cloudera-scm-server-db/data/ /var/lib/cloudera-scm-server-db/data9-3
Run Code Online (Sandbox Code Playgroud)

步骤4:重启cloudera-scm-server-db服务。这将创建一个空数据库,我们将使用步骤 1 中进行的备份填充该数据库

# sudo service cloudera-scm-server-db restart
Run Code Online (Sandbox Code Playgroud)

第 5 步:现在恢复数据库

# sudo su

# su - postgres

# psql -h localhost -p 7432 -U scm
Run Code Online (Sandbox Code Playgroud)

(密码可以这样获取:grep password /etc/cloudera-scm-server/db.properties)

scm> \i scm.sql
Run Code Online (Sandbox Code Playgroud)

第6步:现在重新启动cloudera-scm-server服务:

# sudo service cloudera-scm-service restart
Run Code Online (Sandbox Code Playgroud)