cloudera manager 5.16 spark版本_0709-5.16.2-如何将CM的外部PostgreSQL数据库迁移至MySQL服务...

文档编写目的

在前面的文章《5.16.2-如何将CM内嵌PostgreSQL服务迁移至外部PostgreSQL服务》介绍了将CM内嵌的PostgreSQL迁移至外部PostgreSQL,因为CM内嵌的PostgreSQL数据库不支持直接迁移至MySQL。本篇文章Fayson主要介绍如何将集群使用的外部PostgreSQL迁移至MySQL数据库。

注意:不支持直接从Cloudera Manager嵌入式PostgreSQL迁移到MySQL / Oracle数据库。您必须首先从Cloudera Manager嵌入式PostgreSQL数据库服务器迁移到外部PostgreSQL数据库服务器。

只有在成功从嵌入式PostgreSQL数据库服务器迁移到外部PostgreSQL数据库服务器后,才能迁移到外部MySQL或Oracle数据库。

  • 内容概述
  1. 安装Mariadb服务
  2. 数据库迁移
  3. 验证
  4. 总结
  • 测试环境
  1. CM和CDH版本均为5.16.2
  2. 采用root用户

迁移前集群环境确认

CM元数据库类型为postgresql

cat /etc/cloudera-scm-server/db.properties
0f963755944b61fb98924ae8e5c3ec56.png

Hue用户及用户组

Hue的数据库类型为PostgreSQL

bdbf95de5f659171eaf0d3b89e6052a3.png

用户信息

8feccacd989b6fc75f6c0c009ccb4524.png

用户组信息

5e8e66ead4aac7897c320b1e83fdce05.png

管理员信息

d11fb4ac0d789420daff5ceb395cf090.png

Hive数据库及表信息

Hive的数据库类型为PostgreSQL

2d0e1c4c560d7fabdb777283da8da7f3.png

如下所示,当前hive中有default和test两个数据库;default数据库中有两个表。

3c9030f35ef90412bd6fc98956787ec9.png

查看table_partitioned表的数据

7dc62787d89f5327de4304d753fbf9fa.png

Sentry授权信息

Sentry的数据库类型为PostgreSQL

0aaf2b2a1c4e0961b9c0de07f47306db.png

Sentry的授权信息如下

6ec44849fae4a5a0aead4b9235c4f642.png

安装MySQL

选一台节点安装MariaDB服务

yum -y install mariadb mariadb-server
340e226bbfc5d9432298cc437ca3601d.png

启动mariadb服务并设置为开机自启动

systemctl start mariadbsystemctl enable mariadbsystemctl status mariadb | grep Active
2d06efe79c74625f149f2417c5eb4bca.png

初始化MariaDB数据库

/usr/bin/mysql_secure_installation
49d1f8175cbadfa87dc561505828cd67.png

使用root用户登录查看当前数据库

44c196ef6cebfe3e2c7a5595278f0004.png

安装MySQL JDBC驱动

将mysql驱动上传至/usr/share/java目录,并以软链接的方式去掉驱动版本号

b2460ec482a5e3504d53cb13b72d921b.png

迁移CM元数据库

导出Cloudera Manager配置文件

获取当前支持的API版本

curl -u admin:admin "http://192.168.0.204:7180/api/version"
6eca9b865557740119825d4e8e41f1c5.png

导出json格式配置文件

curl -u admin:admin "http://192.168.0.204:7180/api/v19/cm/deployment" > /root/cm/cm-deployment.json
d5cbfd5fb0fcf4cab9897a0b59c30f13.png

执行如下命令,保留Cloudera Manager的GUID号

sudo -u postgres psql -qtAX scm -c "select GUID from CM_VERSION" > /etc/cloudera-scm-server/uuid
f83675bc93d2953449e88e2cf6699983.png

停止集群和Cloudera Management Service服务

54ce789f902515d99287f066b673b727.png

在CM节点上执行如下命令停止cloudera-scm-server服务

systemctl stop cloudera-scm-serversystemctl status cloudera-scm-server | grep Active
f29e363fec88cf99dd8a0705a7be261f.png

登录MySQL执行如下SQL语句创建scm数据库及用户并授权

create database scm default character set utf8;CREATE USER 'scm'@'%' IDENTIFIED BY 'password';GRANT ALL PRIVILEGES ON scm.* TO 'scm'@'%';FLUSH PRIVILEGES;
0218f90f8e703a0dc0325622db7e889c.png

执行如下命令,初始化Cloudera Manager数据库配置

/usr/share/cmf/schema/scm_prepare_database.sh mysql scm scm password
037c0df1498209cb4800d6aab54fb4bb.png

清空所有节点的/var/run/cloudera-scm-agent/process/目录

使用批量命令,停止集群所有节点的agent和supervisor服务

sh ssh_do_all.sh node.list 'service cloudera-scm-agent next_stop_hard'sh ssh_do_all.sh node.list 'systemctl stop cloudera-scm-agent'
56ae06368ffde173ad128021b99adeab.png

查看进程是否已被停止

ps -ef | grep cmf-agentps -ef | grep supervisord
9406487d24dd8d8ebbd8caafbfccf83a.png

使用批量命令,使用mv命令将集群所有节点的agent目录备份

sh ssh_do_all.sh node.list 'mv /var/run/cloudera-scm-agent /var/run/cloudera-scm-agent-BU'
dbbf01783ec356d10c0b72d018771b22.png
sh ssh_do_all.sh node.list 'ls /var/run | grep cloudera-scm-agent*'
08d64bcdabe35e205b73ebc5d673ab75.png

使用批量命令,启动集群所有节点的cloudera-scm-agent服务

sh ssh_do_all.sh node.list 'systemctl start cloudera-scm-agent'sh ssh_do_all.sh node.list 'systemctl status cloudera-scm-agent | grep Active'
ac4baf0e65434eab3e6068ef7995f660.png

启动Cloudera Manager Server

systemctl start cloudera-scm-servernetstat -lnpt | grep 7180
007042faab3c0e174ebc966adaef4963.png

使用超级管理员用户登录CM

4c43cab6eddcd55ea2431c50eb15c773.png

接收许可条款,【继续】

bf1599819d4da7ce0e98d84b08f32409.png

如果有许可证,上传许可证,没有许可证选择企业试用版,【继续】,然后单击左上角返回CM主页

注意:必须要上传许可证或者选择试用版继续之后再返回主页,否则会导致使用curl导入集群配置时失败。

beb836663c896a12ffe72178503215cf.png

当前CM主页状态如下:

1b0d46818f9562a6fc15879c00b7271a.png

执行如下命令调用CM API接口,恢复Cloudera Manager配置

curl -v -H "Content-Type: application/json" --upload-file /root/cm/cm-deployment.json -u admin:admin "http://192.168.0.204:7180/api/v19/cm/deployment?deleteCurrentDeployment=true"
7a7986860bc1ff37dd63ec0779e1d298.png

再次查看CM主页,CM配置已导入成功

5f72af56581327d12468ee6387bb4131.png

启动服务

启动Cloudera Mangement Service

f4c62d41c5a4b5c3891953af0400eb7e.png

Cloudera Management Service启动成功后,等待parcel分发完成,然后启动集群服务并分发客户端配置。

c498604ca079ba873d3016370560d1f7.png

查看集群CM元数据库使用的数据库服务器,如下所示,此时已迁移至MySQL

cat /etc/cloudera-scm-server/db.properties
97e380f1087f722fd80eae9b0e9391d5.png

迁移集群其他服务元数据库

此时只有CM的数据库scm迁移到了MySQL,集群其他服务的元数据库(Hive、Sentry、Hue、Oozie等)仍然配置的为PostgreSQL,接下来主要介绍通过使用工具将PostgreSQL数据库迁移至MySQL数据库,如下示例以迁移Hive元数据库为例。

下载安装数据库转换工具 DBConvert for MySQL & PostgreSQL,下载地址如下:

https://dbconvert.com/downloads/dbconvert_mysql_postgresql.zip

下载完成之后解压,执行dbconvert_mysql_postgresql文件夹下的setup.exe进行安装

cbca85512060dcd4fa1db6fe986fc01c.png

安装完成后打开该软件,选择【Try】使用版

00688e2e8fa47eeddb582214aefd5ba5.png

这里以hive元数据库转换为例,配置PostgreSQL数据库连接信息

a482914488d0ebf3b286f084b577520b.png

测试连接成功,单击下一步

e1ad748fcfc9263d5db2c283054b2188.png

此时会显示数据库中的所有表,全部勾选;然后单击【OK】

a4a64cc67a95de11bb4c4e144931294e.png

配置目标数据库连接信息(即我们要迁移的MySQL信息)

40906333a68dbd71b7dccb25178f4516.png

测试连接成功后单击【Next】

b5d82d4376528deca1d14e4926bd2724.png

自定义要转换的表,然后单击【Next】

991dac7aa831ae3567e33d6d0b6458a5.png

单击【commit】开始进行转换

56e3b6cac63688d48c5b37e187329ac0.png

转换成功后显示如下

2b021b49b78cd673ad925ebac8a69a4f.png

然后依次转换其他数据库即可

注意:转换hue数据库时,有些表因为外键的原因不能被转换,根据提示取消相关外键即可

数据库迁移完成后,登录mysql查看数据库如下:

2362bd7d8850939262b16b8831cbcfb7.png

创建用户并授予数据库上的权限

CREATE USER 'hive'@'%' IDENTIFIED BY 'password';GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%';FLUSH PRIVILEGES;CREATE USER 'sentry'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON sentry. * TO 'sentry'@'%'; FLUSH PRIVILEGES;CREATE USER 'rman'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON rman. * TO 'rman'@'%'; FLUSH PRIVILEGES;CREATE USER 'hue'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON hue. * TO 'hue'@'%'; FLUSH PRIVILEGES;CREATE USER 'oozie'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON oozie. * TO 'oozie'@'%'; FLUSH PRIVILEGES;
b1f57ca13d439e2650a15e901f12873c.png

更换数据库服务器

进入Hive配置页面,修改Hive的Metastore数据库类型为MySQL,然后修改其在 MySQL中的数据库名称

53d2317741eddfaf802211bb8caf8cc7.png

oozie服务重启失败,报错如下

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Table 'oozie.VALIDATE_CONN' doesn't exist
6073b024eb243d6868d01a0ebb1bccc9.png

解决方式:为oozie服务创建数据库

7ab90d6ead34eb10aef92ed5b9054995.png

完成上述修改后,然后回到CM主页,根据提示重启相关服务

77dc9507b3e5f4554fdf1310cf5abff5.png

服务重启完成后,此时数据库已迁移至MySQL数据库服务器。

f833ba37d98be70a5a3dfbd770c252b4.png

迁移后验证

Hue验证

查看Hue当前数据库类型为MySQL

cf3fed6d8962135609abb87093594f3e.png

使用管理员账号admin登录Hue验证数据是否完整

admin用户的管理员权限与迁移前一致

1f2679bd405423cdf16e057c32f93c2a.png

迁移后的用户信息与迁移前数据一致

40ec17ff44c1d7e742f3bfbe99eb848e.png

用户组信息与迁移前信息一致

38d7628c886f3ba43b3e90d690a1b63a.png

Hive验证

查看Hive当前数据库类型为MySQL

3bd476d7563ce992d58bf23d10d086b1.png

通过Hue查看Hive数据库以及表信息如下:

69d525eacf41fec8fb318a8465cbedba.png

查看分区表数据如下:

57573e59dca8d5bc5b75008c9a0b7fbe.png

查看分区表结构如下:

ad35a3acac9e05a66fe59ceacde9cfed.png

由上图可知,数据库迁移完成后Hive的数据库、表、表结构以及表数据均迁移成功。

Sentry验证

查看Sentry当前数据库类型为MySQL

dfdc0e870c7412aa24c7f11a911e1c10.png

通过Hue查看Sentry的授权信息如下:

54b7f7c86a6d2d58e99268c955989955.png

使用hive用户进行建表测试

建表成功

102bcb3de988ae27c8628c04337d94ca.png

向表中插入数据,数据插入成功

044f4fbf9abdbfe847ba7023c650bce5.png

执行查询操作,查询成功

55f0e79911cac68fed6443aacaec24e6.png

总结

  1. 将Cloudera Manager服务使用的PostgreSQL迁移至MySQL时,主要通过CM API接口导出集群配置信息json文件,再通过CM API接口导入完成数据库的迁移。
  2. 集群其它服务(Hive、Sentry、Oozie、Hue等)在迁移时并未相应的API接口实现,主要是通过DBConvert for MySQL & PostgreSQL工具将PostgreSQL数据的数据转换为MySQL数据库的方式解决。
  3. 在进行Hue数据库转换的过程中由于部分表外键的问题,导致转换失败,需要将报错的外键取消勾选。
  4. Oozie服务重启失败,报错如下:
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'oozie.VALIDATE_CONN' doesn't exist
ed08a8a9148fbbc52f64607b911fb092.png

解决方式:为oozie服务创建数据库

1ba535d3c436a8267b5834ce0278ed34.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值