用户名:  密码:  验证码: 验证码  注册  找回
RSS
无双网
 2019年09月24日 星期二  您现在位于: 首页 → 技术文栏 → 如何让Linux版VMware vCenter支...

如何让Linux版VMware vCenter支持MySQL?

2011年06月25日  无双网  出处:
VMware公司发布了对于Linux技术预览版本vCenter服务器的时候,说明指出只有甲骨文公司的数据库才可以支持它。不要动摇,我决定尝试数据库架构的修改,看我是否能让MySQL数据库与vCenter的Linux版本一起工作。我很快发现,在这种情况下,不支持其他数据库是一个真正的限制,而不是技术释放的一种形式。

这也就是说有希望支持。因为我原来的博客帖子总结了我的调查结果(见对于Linux版vCenter技术预览的失望) ,我与许多VMware工程师谈到关于Linux版vCenter ,并且在随后的讨论中显示了我对MySQL数据库(第二部分讨论研究postgresql)的研究 。当它最后被发表,我希望GNU / Linux的数据库是可以被利用的--至少在一项实验模式中。

旨在确定要求,使Linux版vCenter连接到MySQL的开放式数据库连接(ODBC),以及如何移植数据库的架构、存储过程和目前的使用意见,使它们可以使用MySQL,这项研究表明,虽然需要进一步努力,但是对VMware的工程师来说,很可能使MySQL能够对vCenter的Linux版本进行支持。

MySQL:部分成功

因为Linux版的vCenter 程序运行在CentOS 5 上,我去了CentOS 5网站并下载了以下的RPMS包 : llibtool-ltdl-1.5.22-6.1.i386.rpm,mysql-5.0.45-7.el5.i386.rpm,mysql-connector-odbc-3.51.12-2.2.i386.rpm,unixODBC-2.2.11-7.1.i386.rpm,and perl-DBI-1.52-1.fc6.i386.rpm。之后把它们上传到在Linux上的VMware vCenter VM,我使用以下命令安装:

rpm -ivh libtool-ltdl-1.5.22-6.1.i386.rpm mysql-5.0.45-7.el5.i386.rpm mysql-connector-odbc-3.51.12-2.2.i386.rpm unixODBC-2.2.11-7.1.i386.rpm perl-DBI-1.52-1.fc6.i386.rpm

我也下载并上传了Oracle ODBC和基本instantclient ZIP文件到这个系统,这是需要将Oracle安装在Linux版的vCenter 上。在重新启动vCenter的Linux ,它要求你配置Oracle的ODBC包,我不得不这样做,否则我会被附加到MySQL服务器。当输入数据库名,主机名称,用户名和密码后安装将会失败,并问我是否要继续下去。无论失败与否我都将继续,因为这一进程有助于创造必要的文件,我们将进行如下修改。但是,我们首先需要添加MySQL的连接信息到/ etc / odbcinst.ini文件之中。如果你是还在这样做,添加这些行:

[MySQL]
Description = MySQL 3.51 ODBC Driver
Driver = /usr/lib/libmyodbc3.so
Setup = /usr/lib/libmyodbc3S.so
FileUsage = 1
CPTimeout =
CPReuse =
UsageCount = 2

从使用Oracle改变到使用MySQL,包括一些MySQL的具体变化,我们需要修改/ etc / odbc.ini文件。请确认此文件的权限“ 0400 ” ,因为它可能包含一个密码。MySQL代替Oracle的第一个变化,参考如下:

Driver = MySQL

下一步为调整你的MySQL数据库服务器添加这些参数,通过实际IP的MySQL数据库服务器来代替IPOfMySQLServer。你可以使用任何数据库名称。VC这个名称似乎对于我很方便。用你的数据库用户名来代替MySQLUserName,并提供你自己的密码。

SERVER = IPOfMySQLServer
PORT = 3306
DATABASE = VC
USER = MySQLUserName
PASSWORD = Password
例如你可以用下面的代码来安装:
odbcinst -i -d -f /etc/odbcinst.ini
odbcinst -i -s -l -f /etc/odbc.ini

使用下列命令测试连接,使用适当的用户名和密码来代替MySQLUserName和密码变量。

odbcinst -s –q
isql -v "VMware VirtualCenter" MySQLUserName Password

但还有更多的工作是必要的,它试图连接,但失败了。这最有可能是因为表的缺失。所以我决定尝试并获得表,并通过手工输入到MySQL之中。这需要一个新的SQL架构文件。

经过几个测试后,我认识到,存储过程在数据库视图模式元素将不能正常工作。因此,我联系到我的同事Oliver Reeh( oliver_reeh的VMTN社区论坛),请求援助。我们决定升级MySQL服务器到5.1版,它具有更好的支持存储过程。测试工作在这个级别的数据库。然后我上传MySQL-client-community-5.1.31-0.rhel5.i386.rpm以及MySQL-shared-community-5.1.31-0.rhel5.i386.rpm文件到vCenter的Linux虚拟机,并着手升级MySQL。要做到这一点,请使用以下命令:

rpm -e --nodeps mysql mysql-connector-odbc
rpm -ivh MySQL-client-community-5.1.31-0.rhel5.i386.rpm MySQL-shared-community-5.1.31-0.rhel5.i386.rpm mysql-connector-odbc-setup-5.1.5-0.i386.rpm mysql-connector-odbc-5.1.5-0.i386.rpm

现在我们必须再次修改ODBC文件-特别是/ etc / odbcinst.ini文件,删除旧的MySQL线和添加以下我们更新的驱动程序:

[MySQL]
Description = MySQL 5.1.5 ODBC Driver
Driver = /usr/lib/libmyodbc5.so
Setup = /usr/lib/libmyodbc5S.so
FileUsage = 1
CPTimeout =
CPReuse =
UsageCount = 2
通过以下输入进行安装:
odbcinst -i -d -f /etc/odbcinst.ini
odbcinst -i -s -l -f /etc/odbc.ini

然后用以下命令测试连接情况:

odbcinst -s –q
isql -v "VMware VirtualCenter" MySQLUserName Password

在本文的下半部分中,我们将介绍如何将微软SQL命令转换成MySQL命令。

在本文的上半部分中,我们介绍了如何Linux版VMware vCenter支持MySQL。在本文的下半部分中,我们将继续介绍如何将微软SQL命令转换成MySQL命令。

将微软SQL命令转换到MySQL命令

下一步,我通过SQL配置代码并做了下列变更。我们开始研究微软SQL的定义表格,使MySQL表最接近微软SQL表。以文件/usr/lib/vmware-vpx/VCDB_mssql.sql开始,我创建了一个后来VCDB_mysql.sql文件。

转换如下,然而这些变化将迫使vCenter只支持UTF - 8的字符串。你可以轻松地支持UTF - 16 ,但在规模指数为1000字节的MySQL,还是有一定限度的,并且有些类型的nvarchar领域会延伸并通过这个限制。

NTEXT类型转换为TEXT类型或BLOB类型 (如果你想支持UTF - 16 ) NVARCHAR类型转换为VARCHAR nvarchar类型转换为varchar
ACCESSIBLE和INTERVAL被视为MySQL的关键字所以他们需要使下面的转换:

INTERNAL to `INTERVAL`
ACCESSIBLE to `ACCESSIBLE`

最后,在Microsoft SQL Server和MySQL一些相同的功能,不会做同样的事情-特别是isnull函数。这是MySQL中的一个争论点,而不是等同于isnull函数的Microsoft SQL或Oracle的nvl函数。这一变化情况如下:

isnull change to ifnull
ISNULL changed to IFNULL

此外,与微软SQL相比,MySQL中的CAST函数有不同的参数。我不得不改变CAST,通过SIGNED类型而不是BIGINT ,来转换数字;因为在MySQL的CAST函数不支持BIGINT。此外,len不是一个有效的MySQL函数,所以我们还必须将上面提到的两个数据库声明修改为LENGTH,而不是LEN。

最后一个问题是大小写问题。一切在Linux是区分大小写的,包括MySQL的数据库名称,因此最后的变化是转换大小写。

vpx_sequence to VPX_SEQUENCE
vpx_object_type to VPX_OBJECT_TYPE
vpx_lock to VPX_LOCK
vpx_version to VPX_VERSION

使用以下命令提交新架构到MySQL数据库服务器。注意:你应该使用你的MySQL服务器的IP地址,替换IPOfMySQLServer 参数,你的MySQL用户名代替MySQLUserName参数 ,而且命令将要求输入密码。

mysql -p -h IPOfMySQLServer -u MySQLUserName < VCDB_mysql.sql

现在,剩下的所有都是解决一些STATS的存储程序,撤消和删除数据库。

但是,即使所有这些更新后, MySQL尝试仍然失败,因为vpxd服务不承认MySQL是一个有效的数据库。但是,通过Linux的一些具体的工具,我发现, PostgreSQL是一个有效的数据库,而且我会在下一篇文章中介绍它。

对于GNU / Linux的基于vCenter服务器来说,开源数据库的支持是必须的。

研究重点

那么这个研究告诉我们? MySQL数据库可以处理创造以及接口的存储过程,但你可以使用的UTF - 8字符的所有字符串变量是有限(这将影响亚洲vCenter用户) 。但是,如果一些变化了的基本表结构的UTF - 16 (多字节的Unicode )字符可以通过MySQL支持 。目前,虽然vCenter的Linux不接受使用MySQL ;将竭尽全力不让其使用。显然,仍有一些工作要做,但是最难的部分——找到合适的数据库版本,以及如何将ODBC连接到数据库、架构的端口和视图现在已经完成。
 (本文已被浏览 737 次)
 发布人:[标签:发布人]
 → 推荐给我的好友
上篇文章:Linux版VMware vCenter...
下篇文章:VMware HA实战攻略之三添加主机...
发表评论
  → 评论内容 (点击查看)   共0条评论,每页显示5条评论   浏览所有评论
(没有相关评论)
  → 发表我的评论 (点击发表)
热门文章
 保存webbrowser中的HTML内...
 用VB6.0设计简易赛车游戏
 MSFlexGrid使用技巧一例
 游戏对照表
 Win2003+Discuz!5.5+II...
 全部DLL下载
 添加红月装备的详细教程 (包括装备 武...
 在Delphi里播放Flash
 用vb6的ActiveX控件实现异步下...
 能否判断动态数组有没有被分配过
最新文章
 [ODBC SQL Server Driv...
 评论:115网盘的何去何从
 我科学家实现百公里量级自由空间量子隐形...
 中国智能手机出货量占全球27%居世界之...
 Gartner:2012 第二季度西欧 P...
 [多图]华山论剑:当今在世的智商最高的...
 三星获出租车服务系统专利 可快速查看驾...
 [多图]15项可能延续到2030年的科...
 分析称苹果三星专利大战输赢已成定论
 Google终获云操作系统专利
 网站留言· 友情链接·与我在线·网站地图联系我们·管理·TOP 
 陕ICP备14011112号  
 Copyright © 2012 Asp126.com Inc. All Rights Reserved.Processed in 0.000s, 8 queries, 35 Cache,0 Online