Cómo hacer que VMware vCenter en Linux sea compatible con MySQL
Convertir comandos de Microsoft SQL a comandos de MySQL
A continuación, configuré el código a través de SQL e hice los siguientes cambios. Comenzamos a estudiar las tablas de definición de Microsoft SQL para acercar las tablas de MySQL a las tablas de Microsoft SQL. Comenzando con el archivo /usr/lib/vmware-vpx/VCDB_mssql.sql, creé un archivo llamado VCDB_mysql.sql.
Las conversiones son las siguientes; sin embargo, estos cambios obligarán a vCenter a admitir solo cadenas UTF-8. Puede admitir fácilmente UTF-16, pero con el índice de tamaño de 1000 bytes en MySQL, hay un límite y algunos tipos de campos nvarchar superarán ese límite.
Tipo NTEXT convertido a tipo TEXT o tipo BLOB (si desea admitir UTF-16) Tipo NVARCHAR convertido a VARCHAR Tipo nvarchar convertido a varchar
ACCESSIBLE e INTERVAL se tratan como MySQL palabra clave por lo que necesitan realizar la siguiente conversión:
INTERNAL a `INTERVAL`
ACCESSIBLE a `ACCESSIBLE`
Finalmente, algunos en Microsoft SQL Server y MySQL Las mismas funciones, no hacen lo mismo, especialmente la función isnull. Este es un punto de discordia en MySQL, no en la función nvl de Microsoft SQL u Oracle, que es equivalente a la función isnull. Este cambio es el siguiente:
cambio de isnull a ifnull
ISNULL cambió a IFNULL
Además, en comparación con Microsoft SQL, la función CAST en MySQL es diferente parámetros. Tuve que cambiar CAST para convertir el número por tipo SIGNED en lugar de BIGINT porque la función CAST en MySQL no es compatible con BIGINT. Además, len no es una función MySQL válida, por lo que también debemos modificar las dos declaraciones de base de datos mencionadas anteriormente a LENGTH en lugar de LEN.
El último problema es la capitalización. Todo en Linux distingue entre mayúsculas y minúsculas, incluidos los nombres de las bases de datos MySQL, por lo que el cambio final es convertir mayúsculas y minúsculas.
vpx_sequence a VPX_SEQUENCE
vpx_object_type a VPX_OBJECT_TYPE
vpx_lock a VPX_LOCK
vpx_version a VPX_VERSION
Utilice lo siguiente comando Envíe el nuevo esquema al servidor de base de datos MySQL. NOTA: Debe reemplazar el parámetro IPOfMySQLServer con la dirección IP de su servidor MySQL, reemplazar el parámetro MySQLUserName con su nombre de usuario MySQL y el comando le pedirá una contraseña.
mysql -p -h IPOfMySQLServer -u MySQLUserName lt; VCDB_mysql.sql
Ahora solo queda resolver algunos procedimientos almacenados STATS, deshacer y eliminar la base de datos.
Sin embargo, incluso después de todas estas actualizaciones, el intento de MySQL todavía falla porque el servicio vpxd no reconoce MySQL como una base de datos válida.
Sin embargo, a través de algunas herramientas específicas de Linux, descubrí que PostgreSQL es una base de datos válida y la presentaré en el próximo artículo.
Para servidores vCenter basados en GNU/Linux, la compatibilidad con bases de datos de código abierto es imprescindible.