免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 807 | 回复: 0
打印 上一主题 下一主题

RHEL4.0下编译安装MySQL5.0.33 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-17 16:54 |只看该作者 |倒序浏览
MySQL社区版二进制包的发布频率降低了,比如现在的5.0.33版就是只提供源码包。怎么办?自己动手,丰衣足食。在开源世界混的人不学会编译咋行呢?
我的编译配置选项:
CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors \
   -fno-exceptions -fno-rtti" ./configure  \
   --prefix=/usr/local/Buddha --enable-assembler \
   --with-server-suffix=Buddha \
   --with-unix-socket-path=/tmp/Buddha_mysql.sock
当然了,主要都是INSTALL-SOURCE里拷出来的。
去掉了静态链接的选项--with-mysqld-ldflags=-all-static,这个选项是我奋斗了两天以后决定去掉的,还没有测试,不一定是正确的选择。
使用这个选项的问题是,编译出的mysqld不会链接nptl的线程库,而链接linuxthreads-0.10。一个明显的特点就是,用ps(不加看线程的参数)能看到很多mysqld的“进程”。
这有一篇相关文章和讨论让我获益非浅:
http://www.xaprb.com/blog/2006/07/16/how-we-enabled-threading-in-mysql/
当使用动态链接时,mysqld会链接/lib/tls的线程库,即nptl(native posix thread libaray)。有说法说nptl比linux下旧的线程库效率高很多。此时编译链接出来的MySQL,安装以后,不论有多少个数据库连接,只能看到一个进程。
这样到底比静态链接的性能是好是坏呢?还没来得及测试,但我看了一下几个用rpm安装的MySQL5.0,也是动态链接的:
[gulei@ARCHITECT mysql-5.0.33]$ ldd /usr/sbin/mysqld
        librt.so.1 => /lib/tls/librt.so.1 (0x00851000)
        libpthread.so.0 => /lib/tls/libpthread.so.0 (0x00c1b000)
        libdl.so.2 => /lib/libdl.so.2 (0x00b3a000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x007f2000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x00822000)
        libm.so.6 => /lib/tls/libm.so.6 (0x00b15000)
        libc.so.6 => /lib/tls/libc.so.6 (0x009ea000)
        /lib/ld-linux.so.2 (0x009cd000)
configure有几个选项是我自己加的:
--prefix=/usr/local/Buddha
--with-server-suffix=Buddha
--with-unix-socket-path=/tmp/Buddha_mysql.sock
这是为了增加趣味性。记得在一个电视节目里看到哈佛大学有个实验室被称为zoo。原因是实验室中的每台电脑的都被命名为一种动物。这显得很有生气,并且显示出了一种自由创新和有亲和力的文化,让我羡慕不已。
因此,我把本次编译安装的MySQL起名为Buddha。
--prefix=/usr/local/Buddha是指定安装目录
--with-server-suffix=Buddha是给产品加个后缀名,这个名字在用mysql登录的时候在版本号的后面可以看到
--with-unix-socket-path=/tmp/Buddha_mysql.sock是指定用于本地连接的socket文件名字和位置,当一台机器上有多个MySQL安装时(尽管不一定都同时运行),可以区分出来是哪个MySQL的socket文件。
configure完成之后就是make和make install了,不必多言。
基本的顺序完全参照INSTALL-SOURCE里的内容。
比较特别的是,建一个/usr/local/Buddha/etc目录,之后要编辑一个my.cnf文件,把它放在这个目录下。
运行mysql_install_db时,可能要指定用哪个my.cnf,比如我这样做:
bin/mysql_install_db /usr/local/Buddha/etc/my.cnf --user=mysql
如果不指定的话,/etc/my.cnf也会起作用。如果不指定my.cnf,以上述安装来说,/etc/my.cnf和/usr/local/Buddha/etc/my.cnf会同时起作用,如果两个文件中有重复的参数设置,该参数在后者中的设置会生效。可能会引发一些错误。
接来来是修改目录权限,暂且不表。
最后是启动服务:
/usr/local/Buddha/libexec/mysqld --defaults-file=/usr/local/Buddha/etc/my.cnf --user=mysql &
好了,大功告成,登录一下。
[root@ARCHITECT Buddha]# mysql --socket=/tmp/Buddha_mysql.sock
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 5.0.33Buddha-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
看到5.0.33后面的Buddha了吧。
好了,我的Buddha MySQL就此安装完毕。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/25477/showart_233630.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP