背景:正常安裝 cloudera-scm-server 時,安裝 scm 庫是經過腳本 /usr/share/cmf/schema/scm_prepare_database.sh 來自動建庫的。html
/usr/share/cmf/schema/scm_prepare_database.sh mysql -h<mysql-host> -u<mysql-user> -p<mysql-pwd> --scm-host <scm-host> <scm-user> <scm-dbname> <scm-pwd>
其中mysql
可是,當在使用雲服務器的 rds 實例做爲遠程 mysql 時,執行以上腳本會報權限不夠的錯誤。而在本地部署的 mysql 實例執行以上腳本則不會報錯,主要緣由是<mysql-user>是經過 grant all 命令來受權的,而使用 rds 實例時 grant all 命名是沒法執行的,也就是使用 rds 時只能 grant 指定權限給用戶,這樣可能會致使一部分權限丟失,執行上面的自動建庫腳本就會報權限錯誤。sql
解決方法:服務器
因爲 cloudera-scm-server 服務在啓動時會初始化 scm 庫,自動建立須要的表,所以,能夠考慮將已經建好表的 sql 語句 dump 到本地,而後導入到 rds 實例中。oracle
步驟一:在本地一臺機器部署mysql,安裝 clouder-scm-server 服務,將初始的 scm 表 sql 導出。post
mysqldump -uroot -p <scm-dbname> > A_dump.sql
步驟二:將備份的 sql 語句導入到線上 scm 庫所在的地址。spa
mysql -h<mysql-host> -u<mysql-user> -p<mysql-pwd> <scm-dbname> < A_dump.sql
至此,scm 庫的初始表已手到導入,配置 cloudera-scm-server 的 db 地址並啓動服務便可。postgresql
1. 配置 cloudera-scm-server 的 db 地址code
經過 ‘ yum install cloudera-manager-daemons cloudera-manager-server‘ 安裝好 cloudera-scm-server 服務後,會生成一個 db 配置文件 /etc/cloudera-scm-server/db.properties ,修改配置文件的內容,執行 mysql 所在地址。 server
# Copyright (c) 2012 Cloudera, Inc. All rights reserved. # # This file describes the database connection. # # The database type # Currently 'mysql', 'postgresql' and 'oracle' are valid databases. #com.cloudera.cmf.db.type=mysql # The database host # If a non standard port is needed, use 'hostname:port' #com.cloudera.cmf.db.host=localhost # The database name #com.cloudera.cmf.db.name=cmf # The database user #com.cloudera.cmf.db.user=cmf # The database user's password #com.cloudera.cmf.db.password= # The db setup type # By default, it is set to INIT # If scm-server uses Embedded DB then it is set to EMBEDDED # If scm-server uses External DB then it is set to EXTERNAL #com.cloudera.cmf.db.setupType=INIT com.cloudera.cmf.db.type=mysql com.cloudera.cmf.db.host=<mysql-host> com.cloudera.cmf.db.name=<scm-dbname> com.cloudera.cmf.db.user=<scm-user> com.cloudera.cmf.db.setupType=EXTERNAL com.cloudera.cmf.db.password=<scm-pwd>
2. 啓動 cloudera-scm-server 服務
/etc/init.d/cloudera-scm-server start
觀察 cloudera-scm-server 服務是否正常運行,正常則表示手動導入的 scm 庫沒問題,登陸 http://<scm-host>:7180/ 訪問訪問,初始帳號 admin/admin。
【參考資料】