4核4g装mysql_在新4核服务器上安装低版本的Mysql 的问题-案例分享

服务器:DELL T710 (-Intel(R) Quad Core E5506 Xeon(R) CPU, 2.13GHz, 4M Cache, 4.86 GT/s QPI)

OS: Slackware 12.x

MYSQL: 4.0.17

故障:编译Mysql出错.

# ./configure –prefix=/usr/local/mysql

checking “LinuxThreads”… “Not found”

configure: error: This is a linux system and Linuxthreads was not

found. On linux Linuxthreads should be used. Please install Linuxthreads

(or a new glibc) and try again. See the Installation chapter in the

Reference Manual for more information.

看來 MySQL 4.0 不支援新核心使用了 NTPL 這種新的線程,最後用了這個方法解決:

# cp /usr/include/pthread.h /usr/include/pthread.h.bak

# echo ‘/* Linuxthreads */’ >> /usr/include/pthread.h

然後重新編譯及加入 –with-pthread 及 –with-named-thread-lib 兩個參數:

# ./configure –prefix=/usr/local/mysql –with-pthread –with-named-thread-lib=-lpthread

# make && make install

這樣就可以正常編譯及安裝 MySQL 4.0 了

以上解决,由我同事搞定的。在此仅当收藏和推荐!

BTW:

在网上随便搜一下关键字“Linuxthreads was not found”可以找到很多相关的帖子,但大多都没有提供完整解决方案。

下面来分析一下上面的出错情况,并就此提供一个解决方案。

从上面的出错可以很明显的看出是说系统缺少线程库。

没有线程,Linux可以运行吗?呵呵,那当然不行。

既然没有linuxthread那现在用的是什么呢?

答案是NPTL。

NPTL即native posix thread library与 LinuxThreads 相比,NPTL 具有很多优点(将在本文最后介绍)。

作为去除过时的 LinuxThreads 库的一个步骤,在 Fedora Core 5 test1 中编译和连接的代码现在自动使用 NPTL 头文件和库。

在过去的版本中,从 Red Hat Linux 9 开始,默认的线程模型是LnuxThreads,因为接口是最通用的。NPTL 接口的优点在于,线程取消的处理更快 (使用 -fexception 参数时,即使在 C 代码中)。现在附加的接口也已可用,不需要特殊的编译器和连接器参数。

NPTL与 LinuxThreads 相比的优点[/b]

NPTL 没有使用管理线程。管理线程的一些需求,例如向作为进程一部分的所有线程发送终止信号,是并不需要的;因为内核本身就可以实现这些功能。内核还会处理每个线程堆栈所使用的内存的回收工作。它甚至还通过在清除父线程之前进行等待,从而实现对所有线程结束的管理,这样可以避免僵尸进程的问题。

由于 NPTL 没有使用管理线程,因此其线程模型在 NUMA 和 SMP 系统上具有更好的可伸缩性和同步机制。

使用 NPTL 线程库与新内核实现,就可以避免使用信号来对线程进行同步了。为了这个目的,NPTL 引入了一种名为 futex 的新机制。futex 在共享内存区域上进行工作,因此可以在进程之间进行共享,这样就可以提供进程间 POSIX 同步机制。我们也可以在进程之间共享一个 futex。这种行为使得进程间同步成为可能。实际上,NPTL 包含了一个 PTHREAD_PROCESS_SHARED 宏,使得开发人员可以让用户级进程在不同进程的线程之间共享互斥锁。

由于 NPTL 是 POSIX 兼容的,因此它对信号的处理是按照每进程的原则进行的;getpid() 会为所有的线程返回相同的进程 ID。例如,如果发送了 SIGSTOP 信号,那么整个进程都会停止;使用 LinuxThreads,只有接收到这个信号的线程才会停止。这样可以在基于 NPTL 的应用程序上更好地利用调试器,例如 GDB。

由于在 NPTL 中所有线程都具有一个父进程,因此对父进程汇报的资源使用情况(例如 CPU 和内存百分比)都是对整个进程进行统计的,而不是对一个线程进行统计的。

NPTL 线程库所引入的一个实现特性是对 ABI(应用程序二进制接口)的支持。这帮助实现了与 LinuxThreads 的向后兼容性。

T1xGtpXixsXXb1upjX.jpg

var alimama_pid= "mm_14656179_0_0"; var alimama_uniteid= "10050490"; var alimama_type= "1000"; var alimama_mode= "42"; var alimama_titlecolor= "0000FF"; var alimama_bgcolor="FFFFFF"; var alimama_bordercolor="E6E6E6"; var alimama_shopcat="1048";

var alimama_pid= "mm_14656179_0_0"; var alimama_uniteid= "10839504"; var alimama_type= "1000"; var alimama_mode= "42"; var alimama_titlecolor= "0000FF"; var alimama_bgcolor="FFFFFF"; var alimama_bordercolor="E6E6E6"; var alimama_shopcat="1048";

精典收藏:SQL Server 2008 集群+SAN集成方案:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值