Linux版VMware vCenter对PostgreSQL的支持研究

日期: 2009-06-01 翻译:于富春 来源:TechTarget中国 英文

当VMware公司发布了vCenter服务器的Linux技术预览版本时,此次发布指出,它支持的只有甲骨文公司的Oracle数据库。我决定尝试对数据库架构进行修改,看我是否能使得PostgreSQL数据库与Linux版的vCenter 共同工作(第一部分中,我们讨论Linux 版的vCenter对MySQL技术的研究)。在这里,我们讨论关于Linux版本的VMware vCenter服务器,对支持PostgreSQL数据库的研究。   PostgreSQL是一个有效的,但不被支持的数据库   在我这个阶段的研究开始之前,我从一个全新的Linux 版vCenter程序开始。

由于该设备在CentOS……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

当VMware公司发布了vCenter服务器的Linux技术预览版本时,此次发布指出,它支持的只有甲骨文公司的Oracle数据库。我决定尝试对数据库架构进行修改,看我是否能使得PostgreSQL数据库与Linux版的vCenter 共同工作(第一部分中,我们讨论Linux 版的vCenter对MySQL技术的研究)。在这里,我们讨论关于Linux版本的VMware vCenter服务器,对支持PostgreSQL数据库的研究。

  PostgreSQL是一个有效的,但不被支持的数据库

  在我这个阶段的研究开始之前,我从一个全新的Linux 版vCenter程序开始。由于该设备在CentOS 5上运行 ,我去了CentOS 5网站并下载了以下的RPMS包:postgresql –odbc -08.01.0200 - 3.1.i386.rpm。之后把它们上传到了在Linux上的VMware vCenter VM,我安装它们是使用的下列命令:rpm -ivh postgresql-odbc-08.01.0200-3.1.i386.rpm postgresql-8.1.11-1.el5_1.1.i386.rpm

  我也下载了Oracle开放式数据库连接( ODBC )和基本instantclient ZIP文件并上传到系统,这些都是在vCenter上的Linux安装Oracle所需要的。重新启动Linux版本的vCenter。在重新启动Linux的vCenter 过程中,将要求你配置Oracle的ODBC封装,我已经开始做了,甚至我还附加了一个PostgreSQL服务器。在进入数据库名称,主机名称,用户名和密码后,要注意的是设置将会失败,并询问我是否想继续下去。无论失败与否我都会继续,因为这一进程有助于建立必要的文件,我们将修改如下。

  现在我们必须修改创建的ODBC文件。首先,我们需要添加PostgreSQL的连接信息到/ etc / odbcinst.ini文件。添加以下行:

[pgsql]
Description = PSQL ODBC for PostgreSQL 8.3.02
Driver = /usr/lib/psqlodbc.so
Setup =
FileUsage = 1
CPTimeout =
CPReuse =
UsageCount = 2

  然后我改变了/ etc / odbc.ini文件中的DSN,因为现有的VMware vCenter条目是VMware vCenter Oracle,并增加以下几行。请务必包括你的IP地址的数据库,参数名称为IPofDatabaseServer ,你数据库的用户名—参数名称为PostgreSQLUserName,你的数据库密码—参数名称为password,把你的数据库名称用VC代替。

[VMware VirtualCenter]
Description = PostgreSQL
Driver = pgsql
DSN = VMware VirtualCenter
Trace = No
Database = VC
ServerName = IPofDatabaseServer
Username = PostgreSQLUserName
Password = Password
Port = 5432
Protocol = 6.4
ReadOnly = No
RowVersioning = No
ShowOidColumn = No
FakeOidInded = No
ConnSettings = No
UpdatableCursors = No

  有以下命令进行安装:

odbcinst -i -d -f /etc/odbcinst.ini
odbcinst -i -s -l -f /etc/odbc.ini

  在数据库服务器上创建一个名为VC的表,新增用户VC到这个数据库,然后使用下列命令测试连接情况。

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

  现在,这一工作,我们准备建立数据库。这个时候,我们是以Oracle自定义的表开始的,因为PostgreSQL的表与此表最相似。以文件/usr/lib/vmware-vpx/VCDB_oracle.sql开始。我随后创建了一个VCDB_postgresql.sql文件。

  转换如下。但是,正如在第一部分的MySQL转换中讨论的那样,这些变化将迫使vCenter只支持UTF - 8的字符串。

  • NVARCHAR2转换为VARCHAR
  • VARCHAR2转换为VARCHAR
  • NCLOB转换为TEXT
  • NUMBER转换为NUMERIC(注意不要改变TO_NUMBER将TO_NUMERIC)

  我们还需要SQL语句作一些修改,如下:

  • 删除所有提及“组织索引” ,因为它不存在于postgresql之中 。
  • NVL转换为COALESCE,但你需要确定这两个函数的类型是相同的。这两个值需要从1转换至'1.' 。
  • TO_NUMBER采取了第二个参数的'9999999999999999 '
  • insert into vpx_device select 1,null from dual; to insert into vpx_device VALUES(1,null); ;
  • select vpx_device_seq.nextval from dual; to select nexval('VPX_DEVICE_SEQ');

  使用以下的命令,搭建PostgreSQL数据库服务器的新架构。注意:你可以使用你的PostgreSQL服务器的IP地址代替IPOfDatabaseServer 参数,用你的PostgreSQL用户名代替PostgreSQLUserName参数 ,并且这个命令将要求输入密码。

pgsql -p -h IPOfDatabaseServer -u PostgreSQLUserName < VCDB_postgresql.sql

  重新启动LinuxvCenter,日志文件中显示了unixODBC错误, vCenter无法连接到该数据库。因此,我改变了/ etc / odbcinst.ini文件,使用PostgreSQL中ODBC驱动程序附带的unixODBC等。

[pgsql]
Description = PSQL ODBC for PostgreSQL 8.3
Driver = /usr/lib/libodbcpsql.so
Setup = /usr/lib/libodbcpsqlS.so
FileUsage = 1
CPTimeout =
CPReuse =
UsageCount = 3

  用以下命令安装:

odbcinst -i -d -f /etc/odbcinst.ini
odbcinst -i -s -l -f /etc/odbc.ini

  在数据库服务器上创建一个名为Vc的表,添加用户VC到这个数据库,然后使用下列命令测试连接。

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

  然后我重新启动Linux上的vCenter和连接的同时, vCenter与它发现的数据库不兼容。我们碰到下面的错误信息。

  [ 2009年3月1日13:09:31.384 '应用' 1767104错误] [ VpxdVdb ]初始化init tableDef失败:在表VPX_VERSION中栏VER_ID中不存在 。数据库的版本可能不兼容。

  我认为这是有关PostgreSQL的编码方式是所有声明为小写,但将表和字段名修改为大写的结果依然是无法找到表。只将版本名称修改为大写也不起作用。因此,其他一些问题正发生在vCenter服务器的代码,它阻止了正常工作。我使用以下命令确实确认当前栏和数据库是存在的,这显示字段确实是存在的。

VMware vCenter
 
  此外,当我们将字段' ver_id '修改成大写,同样我们又得到类似如下所示的结果和以前相同的错误。

PostgreSQL

  研究结果

  那么这个研究告诉我们?MySQL和PostgreSQL可以处理数据库的新建,以及存储过程的端口,但你被限制在所有字符串变量都以UTF - 8字符格式存储(这将影响到亚洲的vCenter用户) 。但是,如果一些变化为UTF - 16的基本表结构的(多字节的Unicode )字符可以被MySQL支持。目前,虽然Linux版的vCente的不兼容MySQL ;它将竭尽全力不让其使用。 PostgreSQL没有被完全否认,但它作为一个数据库不会与vCenter很好的工作是由于其他错误。显然,仍有一些工作要做,但其中一些艰难的部分已经完成,如:找到了合适的数据库版本,以及如何将ODBC安装到数据库,模式和视图端口。

相关推荐