ITEEDU

2.12.1.2. Linux二进制分发版说明

MySQL的Linux-Intel二进制和RPM发布配置为最高的可能速度。我们一直在尝试使用可用的最快的稳定的编译器。

二进制发布用-staticis连接,说明一般情况你不需要关心系统库的版本。你也不需要安装LinuxThreads。用-staticis连接的程序稍微大于动态连接程序,但也稍微快一些(3-5%)。但是,静态连接程序的一个问题是你不能使用用户定义函数(UDF)。如果你将要写或使用UDF(只适用于C或C++ 编程人员),你必须使用动态链接自己编译MySQL。

二进制分发版的一个已知问题是在使用libc的旧的Linux系统(例如Red Hat 4.x或Slackware)上,你会遇到一些(非致命)主机名解析问题。如果系统使用libc没有使用glibc2,你可能会遇到一些主机名解析和getpwnam()问题。这是因为glibc依靠一些外部库来执行主机名解析和getpwent(), 即使用-staticis编译也如此。这些问题出现在两个方面:

·         当运行mysql_install_db时,你会看见下面的错误消息:

·                Sorry, the host 'xxxx' could not be looked up

你可以通过执行mysql_install_db --force来解决该问题,并不在mysql_install_db中执行resolveip测试。不利方面是 你不能在授权表中使用主机名:除了localhost,必须使用IP号。如果你正使用不支持—force的旧版本MySQL,必须使用文本编辑器手动卸载mysql_install中的resolveip测试。

·         当你尝试用--user选项运行mysqld时你还会看见下面的错误:

·                getpwnam: No such file or directory

要解决该问题,使用su命令启动mysqld,不要指定--user选项。这样使系统自己更改mysqld进程的用户ID,mysqld不再需要这样做。

另一个解决办法可以解决两个问题,即不使用二进制分发版。获得MySQL源码分发版(RPM或tar.gz格式)并安装。

在一些Linux 2.2版本中,当客户端通过TCP/IP建立大量与mysqld服务器的新连接时,你可能会遇到错误Resource temporarily unavailable。该问题是Linux在你关闭TCP/IP套接字的时间和系统实际释放该套接字的时间之间有一个延迟。只有有限数目的TCP/IP时段有空间,因此如果客户端试图在短时间内建立许多新TCP/IP连接时,你会遇到源不可用错误。例如,当你通过TCP/IP运行MySQL test-connect基准测试时你会看见该错误。

我们已经多次向不同的 Linux 邮件列表询问该问题,但是一直没有找到合适的解决办法。唯一知道的“解决办法”是客户端使用永久连接,或,如果你在同一机器上运行数据库服务器和客户端,使用Unix套接字文件来连接,不要使用TCP/IP连接。