MySQL源码分析(0):编译安装及调试
2012-03-31 23:42
399 查看
作者: Yuan
Zhou (Intel) (7 篇文章) 日期: 八月 20, 2010 在 12:13 下午
编译安装为了实现MySQL的更高级别的性能调优,我们通常需要理解其内部实现机制,并对其进行优化调试。在下面的系列中,我们会分别介绍MySQL的部分内部实现机制。
首先我们介绍如何从源代码部署一台MySQL服务器。
下载MySQL Community Server源码
http://dev.mysql.com/downloads/ 本文中演示使用的是mysql-5.5.0-m2版本。
安装环境:
[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)
编译安装(以下命令全部以root身份运行)
添加运行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的文件了。
配置
配置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的用户。
测试
简单测试一下,运行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桌面环境。
安装
yum install kdbg
启动kdbg并选择可执行程序libexec/mysqld。
不同版本的kdbg在界面上可能不同。
在execution->arguments中输入前面记录mysqld的启动参数。
设置断点,按F5开始运行调试。
当程序运行到断点时会暂停,此时可以查看输出、调用栈和当前的堆栈值等。
相关文章推荐
- Linux下源码编译MySQL 5.5 与安装过程全记录
- linux上MySQL源码编译安装
- CentOS6.8 x64+Nginx1.3.8/Apache-httpd 2.4.3+PHP5.4.8(php-fpm)+MySQL5.5.28+CoreSeek4.1源码编译安装
- Linux(6.4)+Nginx(1.4.1)+Mysql(5.6.12)+Php(5.5.0)源码编译安装 推荐
- Linux源码安装mysql 5.5.13 (cmake编译)
- 源码编译安装 MySQL5.1.68
- mysql源码编译安装时error: No curses
- 源码编译安装mysql
- CentOS6.4编译源码安装mysql-5.0.41
- 源码编译安装 MySQL 5.5.x
- 源码编译安装 MySQL 5.5.x 实践
- Linux系统下MySQL源码安装,完整编译支持所有字符集和默认字符集
- Centos 7 源码编译安装mysql 5.6.22(整理篇)
- Mysql 源码编译安装 ( 5.5 、5.6 共存 )
- 最小化CentOS系统下源码编译安装MySQL
- 源码编译安装MySQL
- CentOS 7源码编译安装PHP5.6和Nginx1.7.9及MySQL(搭建LNMP环境)
- fedora 20 源码编译安装最新版 mysql apache2 php
- Mysql5.5.22源码编译安装
- WdOS源码编译安装MySQL 5.5.25a