如何升级Cloudera Manager Postgres数据库

时间:2016-12-30 01:28:32

标签: postgresql ubuntu-14.04 cloudera-manager

我在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

我在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.

我如何通过这个?我看了很多关于通过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)

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

2 个答案:

答案 0 :(得分:1)

如您所知,您需要找到一种方法将8.4数据文件“转换”为9.3个数据文件。 使用pg_dump将需要一个有效的PostgreSQL 8.4实例。所以,基本上你需要一个工作的Postgresql 8.4(想想VM或Docker),然后将现有的8.4 fiels复制到那个VM / Docker,让VM / Docker提供纯文本转储[纯SQL,与任何版本兼容),将该纯文本转储恢复到9.3实例中。

您可以尝试:

  • 使用Postgresql 8.4创建VirtualMachine或Docker实例 展开。
  • 找到主数据目录(通常是Ubuntu上的/var/lib/postgresql/8.4/main,但这可能有所不同) 升级后的Cloudera机器。备份此目录并保持
    安全
  • 如有必要,请停止VM / Docker上的PostgreSQL。找到主数据目录(通常是Ubuntu上的/var/lib/postgresql/8.4/main,但是
    这可能会有所不同。)
  • 将现有8.4 /主要内容(已升级的计算机上现有PG 9.3)的副本替换为以前找到的目录到您的VM / Docker。
  • 在VM / Docker上重启PostgreSQL 8.4
  • 使用pg_dumpall创建完整备份:

    pg_dumpall> dump.sql

  • 将dump.sql传输到Cloudera计算机并恢复它。您可能需要删除以前的模式/数据库:

    psql -f dump.sql postgres

答案 1 :(得分:1)

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

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

# 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