1. 程式人生 > >vcenter內嵌和外鏈數據庫的解析

vcenter內嵌和外鏈數據庫的解析

內嵌 外鏈

vcenter支持內嵌和外鏈數據庫,也是其兩種常見的部署模式。

vcenter支持內嵌,內嵌的數據庫默認是vpostgresql.

技術分享

內嵌數據庫適合小型部署,安裝簡單方便,無需配置ODBC

小規模時可以選擇嵌入式數據庫,但大規模時通常選擇Oracle數據庫。

另一點就是PSC,小規模也是內嵌,但大規模、多VC最好使用單獨的一個psc

技術分享

還有就是VCNEGER是部署在windows系統上的,後面一般是SQL SERVER 數據庫。sql2008 R2可以用於小型部署(最多5個主機和 50 個虛擬機)的捆綁數據庫。

如果VCENTER部署的VCENTER SERVER APPLIANCE,則在

vCenter Server Appliance 5.0.1 版本後對嵌入式數據庫使用的是 PostgreSQL, 而非 IBM DB2(IBM DB2 在 vCenter Server Appliance 5.0 中使用)。

外部的數據庫一般多是oracle,需要在windows的VCENTER中配置ODBC和啟用VCENTER相關服務.如果是vCenter Server Appliance就不用了。

vCenter Server Appliance 6.0以下不支持 IPv6,6.5是支持的。

技術分享

技術分享

註意:

vCenter Server Appliance 5嵌入式數據庫配置為管理包含 5 臺以上主機和 50 個以上虛擬機的清單。如果將嵌入式數據庫與 vCenter Server Appliance 配合使用,則超出這些限制會引起許多問題,包括導致 vCenter Server 停止響應。


vCenterServer 6.0默認捆綁的PostgreSQL數據庫適用於最多包含20 個主機和200個虛擬機的環境。對於vCenterServer Appliance,可在最多包含1,000個主機和10,000個虛擬機的環境中使用嵌入式PostgreSQL數據庫,但嵌入的數據庫卸載就隨VC APPLIANCE沒了,我們生產都是外接的oracle數據庫。


在5.5版本中,即使是外鏈的ORACLE數據庫,也不能超過50GB、表行數超8億,否則升級到6.0時超滿,需要做清理才能升。

技術分享

補充清理數據庫的語句:

use vcdb;--vcdb是vCenter數據庫的名稱,如果是其它名稱,請將腳本中所有的vcdb更換成實際的名稱。

deletefrom dbo.VPX_EVENT_ARG;--刪除事件日誌表

12.

deletefromdbo.VPX_EVENT;--刪除事件日誌表


droptable dbo.VPX_HIST_STAT1;--刪除表dbo.VPX_HIST_STAT1;

16.

droptable dbo.VPX_HIST_STAT2;--刪除表dbo.VPX_HIST_STAT2;

17.

droptable dbo.VPX_HIST_STAT3;--刪除表dbo.VPX_HIST_STAT3;

18.

droptable dbo.VPX_HIST_STAT4;--刪除表dbo.VPX_HIST_STAT4;


USE [VCDB]

/****** 重建表對象:Table [dbo].[VPX_HIST_STAT1]腳本日期: 12/17/2013 15:32:57 ******/


SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

CREATETABLE [dbo].[VPX_HIST_STAT1](

[COUNTER_ID] [bigint] NOTNULL,

[TIME_ID] [bigint] NOTNULL,

[STAT_VAL] [bigint] NOTNULL

)ON [PRIMARY]

/****** 重建表對象:Table [dbo].[VPX_HIST_STAT1]完成******/

USE [VCDB]


/****** 重建表對象:Table [dbo].[VPX_HIST_STAT2]腳本日期: 12/17/2013 15:33:30 ******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

CREATETABLE [dbo].[VPX_HIST_STAT2](

[COUNTER_ID] [bigint] NOTNULL,

[TIME_ID] [bigint] NOTNULL,

[STAT_VAL] [bigint] NOTNULL

)ON [PRIMARY]

/****** 重建表對象:Table [dbo].[VPX_HIST_STAT2]完成腳本日期: 12/17/2013 15:33:30 ******/


USE [VCDB]

GO


/****** 重建表對象:Table [dbo].[VPX_HIST_STAT3]腳本日期: 12/17/2013 15:34:20 ******/


SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

CREATETABLE [dbo].[VPX_HIST_STAT3](

[COUNTER_ID] [bigint] NOTNULL,

[TIME_ID] [bigint] NOTNULL,

[STAT_VAL] [bigint] NOTNULL

)ON [PRIMARY]


/****** 重建表對象:Table [dbo].[VPX_HIST_STAT3]完成 ******/


USE [VCDB]

GO

/****** 重建表對象:Table [dbo].[VPX_HIST_STAT4]腳本日期: 12/17/2013 15:34:57 ******/


SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

CREATETABLE [dbo].[VPX_HIST_STAT4](

[COUNTER_ID] [bigint] NOTNULL,

[TIME_ID] [bigint] NOTNULL,

[STAT_VAL] [bigint] NOTNULL

)ON [PRIMARY]



/****** 重建表對象:Table [dbo].[VPX_HIST_STAT4]完成 ******/


/****** 收縮數據庫 ******/


USE [VCDB]

GO

DBCC SHRINKDATABASE(N‘VCDB‘)

GO

/****** 收縮數據庫 ******/



到了6.5版本,功能更強,內嵌和外鏈的數據庫規模差別就不大了。

技術分享


另一個問題

如何讓Linux版VMware vCenter支持MySQL

研究微軟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服務器來說,開源數據庫的支持是必須的。


本文出自 “滴水穿石孫傑” 博客,請務必保留此出處http://xjsunjie.blog.51cto.com/999372/1972593

vcenter內嵌和外鏈數據庫的解析