El binario para Linux-Intel y los releases RPM de MySQL están configurados para funcionar a la mayor velocidad posible. Quienes desarrollan MySQL siempre tratan de emplear el compilador estable más rápido disponible.
El release binario se enlaza con -static
,
lo cual significa que normalmente no habrá que preocuparse
por la versión de las bibliotecas del sistema que se tenga.
Un programa enlazado con -static
es
ligeramente más rápido (3-5%). Sin embargo, un problema con
los programas enlazados estáticamente es que no se pueden
emplear funciones definidas por el usuario (FDU o UDF, por sus
siglas en inglés). Si se van a escribir o emplear FDUs (esto
es sólo para programadores de C o C++), habría que
recompilar MySQL empleando enlazado dinámico.
Un problema con las distribuciones binarias es que en sistemas
Linux antiguos que utilizan libc
(tal como
Red Hat 4.x o Slackware), se tendrán algunos problemas (no
fatales) con la resolución del nombre de host. Si el sistema
emplea libc
en lugar de
glibc2
, probablemente se encontrarán
algunas dificultades con la resolución de nombres de host y
getpwnam()
. Esto ocurre porque
glibc
(desafortunadamente) depende de
algunas bibliotecas externas para implementar la resolución
de nombres de host y getpwent()
, incluso
cuando se compila con -static
. Estos
problemas se manifiestan de dos maneras:
Ver el siguiente mensaje de error al ejecutar mysql_install_db:
Sorry, the host 'xxxx
' could not be looked up
Esto puede solventarse mediante la ejecución de
mysql_install_db --force, lo cual evita
que se ejecute la prueba de resolveip
en mysql_install_db. La contraparte de
esto es que no se pueden utilizar nombres de host en las
tablas de permisos: excepto localhost
,
se deben usar números d eIP en su lugar. Si se está
utilizando una versión de MySQL que no soporta la opción
--force
, se debe quitar manualmente la
prueba resolveip
de
mysql_install
empleando un editor de
textos.
También se puede hallar el siguiente error cuando se
ejecuta mysqld con la opción
--user
:
getpwnam: No such file or directory
Para resolver esto, iniciar mysqld
mediante el comando su
en lugar de
especificar la opción --user
. Esto
provoca que el sistema cambie el ID de usuario del proceso
mysqld, así no debe hacerlo
mysqld.
Otra solución, que resuelve ambos problemas, es no usar una
distribución binaria. En su lugar se debe obtener una
distribución de código fuente de MySQL (en formatos RPM o
tar.gz
).
En algunas versiones 2.2 de Linux puede producirse el error
Resource temporarily unavailable
cuando los
clientes establezcan un número elevado de nuevas conexiones
TCP/IP al servidor mysqld. La razón es que
Linux tiene un retraso entre el momento en que se cierra un
socket TCP/IP y el momento en que el sistema lo libera
realmente. Sólo hay capacidad para una cantidad limitada de
conexiones, por eso se produce el error de recursos no
disponibles (resource-unavailable) si los clientes intentan
realizar demasiadas conexiones TCP/IP en un período corto de
tiempo. Por ejemplo, este error puede verse cuando se ejecuta
la prueba de rendimiento test-connect
sobre TCP/IP.
Se ha indagado sobre este problema en diferentes listas de correo de Linux pero nunca se ha obtenido una solución convincente. El único “fix” conocido es para clientes que emplean conexiones persistentes, o, si se están ejecutando el servidor y los clientes en el mismo ordenador, emplear conexiones a través de ficheros socket de Unix en lugar de conexiones TCP/IP.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.