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指向此数据库?
我可以使用以下过程解决此问题:
步骤 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)
| 归档时间: |
|
| 查看次数: |
341 次 |
| 最近记录: |