mysql源码安装分析_MySQL源码分析(0):编译安装及调试(转)

编译安装

为了实现MySQL的更高级别的性能调优,我们通常需要理解其内部实现机制,并对其进行优化调试。在下面的系列中,我们会分别介绍MySQL的部分内部实现机制。

首先我们介绍如何从源代码部署一台MySQL服务器。

1.下载MySQL Community Server源码

http://dev.mysql.com/downloads/ 本文中演示使用的是mysql-5.5.0-m2版本。

2.安装环境:

[root@localhost ~]# uname -a

Linux localhost.localdomain 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux

[root@localhost ~]# gcc -v

......

Gcc-4.1.2 x86_64-redhat-linux

Thread model: posix

gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)

3.编译安装(以下命令全部以root身份运行)

(1)添加运行MySQL程序的mysql用户:

groupadd mysql

useradd mysql –g mysql

CFLAGS="-g –O0" CXX=gcc CXXFLAGS="-g –O0 -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=Folder_you_want_to_install --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile  --enable-assembler --with-plugins=innobase --with-fast-mutexes

建议使用-O0选项,即不使用gcc优化代码,方便于在调试时可以直接看到代码。

--with-plugins=innobase,启用innodb存储引擎插件。

make && make install

此命令结束后应该能在安装目录下看到MySQL的文件了。

4.配置

配置MySQL的参数,可以support-files下配置文件的模板:

cp support-files/my-medium.cnf /etc/my.cnf

vi /etc/my.cnf

按照测试的需求修改,注意加上datadir和innodb等部分重要参数。

bin/mysql_install_db --user=mysql

这里安装必要的数据库文件,如MySQL的系统表,--user=mysql是用来运行mysql的用户。

5.测试

简单测试一下,运行mysqld_safe &

在RHEL系统上以root运行mysqld_safe时,会自动切换到mysql用户来运行mysqld程序。

查看mysqld进程,记录下启动时参数(斜体加粗部分),为今后的调试做准备。

[root@localhost ~]#ps aux | grep mysql

mysql    12261  0.0 13.0 1746120 200992 ?      Tl   Apr19   0:01 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --user=mysql --log-error=/usr/local/mysql/var/localhost.localdomain.err --pid-file=/usr/local/mysql/var/localhost.localdomain.pid --socket=/tmp/mysql.sock --port=3306

root     12286  0.0  0.1 109396  2276 pts/3    S+   Apr19   0:00 mysql

root     22624  0.0  0.0  61192   748 pts/6    S+   10:20   0:00 grep mysql

mysqladmin –u root –p shutdown

这条命令会关闭mysqld

调试程序

安装结束,进入正题调试环节。通常Linux下程序员倾向于使用强大的gdb(GNU Project Debugger)来调试程序,可以查看程序的内部结构、设置断点、查看调用堆栈等。在本文中,我们尝试使用kdbg,其本质上是带有图形界面的gdb,更方便直观,但依赖 KDE桌面环境。

1.安装

yum install kdbg

2.启动kdbg并选择可执行程序libexec/mysqld。不同版本的kdbg在界面上可能不同

e7619ced4a2356de2c4e31847d870fa8.png

3.在execution->arguments中输入前面记录mysqld的启动参数

4944bfac4bbb5fd7bc0790c9817c4e4e.png

4.设置断点,按F5开始运行调试

d9acf9015a4d947fb8ca72ee6c8d9ce9.png

5.当程序运行到断点时会暂停,此时可以查看输出、调用栈和当前的堆栈值等

39f4c44befd027c980ee94bea9953c10.png

ad26eac268b9a77e4264e5bbfaafaf5c.png

大小: 34.9 KB

ad7c30ca295031bec39b55e36becb799.png

大小: 54 KB

33c04bfd9d055b23ea4adf4509db4806.png

大小: 41.1 KB

a7ee05609aa649d6d1b014e8cc03acdf.png

大小: 120.6 KB

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2012-02-03 18:23

浏览 1528

分类:数据库

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值