目录

E.1. 调试MySQL服务器
E.1.1. 针对调试编译MySQL
E.1.2. 创建跟踪文件
E.1.3. 在gdb环境下调试mysqld
E.1.4. 使用堆栈跟踪
E.1.5. 使用日志文件找出mysqld出错原因
E.1.6. 如果出现表格崩溃,请生成测试案例
E.2. 测试MySQL 客户端
E.3. DBUG 软件包
E.4. 关于RTS线程的注释
E.5. 线程软件包之间的差异

这个附录帮助你把MySQL移植到其它操作系统。请先查看一下当前支持操作系统列表。请参阅http://www.mysql.com/),推荐给其它的用户。

注意:如果你创建一个新的MySQL移植,你可以在GPL许可证下任意复制和发布它,但这不能使你成为MySQL的版权持有者。

这个服务器需要一个正在工作的POSIX 线程库在。在Solaris 2.5 上我们使用Sun PThreads (在2.4版和更早的版本上,原生线程支持得不是很好),在Linux上,我们使用Xavier Leroy<Xavier.Leroy@inria.fr>的LinuxThreads。

对于那些对原生线程支持不好的新Unix变体,移植到其上的艰难部分大概就是移植MIT-pthreads包。请参阅mit-pthreads/README 和Programming POSIX Threads (http://www.humanfactor.com/pthreads/)。

直到MySQL 4.0.2版,MySQL发布包包括来自MIT经过补丁的Chris Provenzano的Pthreads(请参阅MIT Pthreads 网页http://www.mit.edu/afs/sipb/project/pthreads/ 以及http://www.mit.edu:8001/people/proven/IAP_2000/上的编程指导)。对于某些没有POSIX线程的操作系统可能有用。请参阅2.8.5节,“MIT-pthreads 注意事项”

也可能会用到另一个名为 FSU Pthreads的用户级线程软件包(请参阅http://moss.csc.ncsu.edu/~mueller/pthreads/)。 这个工具被用来到SCO的移植。

参阅 mysys目录下的thr_lock.c 和thr_alarm.c 程序获取一些关于这些问题的测试/例子。

服务器和客户端需要一个能用的C++编译器。我们在很多平台上使用gcc。其它编译器,据了解,可用的编译器是SPARCworks, Sun Forte, Irix cc, HP-UX aCC, IBM AIX xlC_r), Intel ecc/icc 和 Compaq cxx)。

要仅编译客户端,请使用./configure --without-server.

现在不支持仅编译服务器,也不能加这个功能,除非有人找出一个好的理由。

如果你想/需要改变任何Makefile 或配置脚本,你也会需要到GNU Automake 和 Autoconf。请参阅2.8.3节 ,“从开发源树安装”

所有步骤需要从最基本的文件重新生成(remake)所有东西。

/bin/rm */.deps/*.P
/bin/rm -f config.cache
aclocal
autoheader
aclocal
automake
autoconf
./configure --with-debug=full --prefix='your installation directory'

# The makefiles generated above need GNU make 3.75 or newer.
# (called gmake below)
gmake clean all install init-db

如果在新移植MySQL上遇到问题,最好做一些调试!请参阅E.1节,“调试MySQL服务器”

注意:在你开始调试mysqld之前,首先要让测试程序mysys/thr_alarmmysys/thr_lock工作。这会确保你的线程安装只有非常小的机会能运行!