Chinaunix首页 | 论坛 | 博客
  • 博客访问: 407433
  • 博文数量: 101
  • 博客积分: 2207
  • 博客等级: 大尉
  • 技术积分: 2508
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-19 20:45
文章分类

全部博文(101)

文章存档

2013年(15)

2012年(86)

我的朋友

分类: LINUX

2012-07-20 15:05:29

 转载自http://software.intel.com/zh-cn/blogs/2010/08/20/mysql0/

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

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

  1. 下载MySQL Community Server源码
  2. http://dev.mysql.com/downloads/ 本文中演示使用的是mysql-5.5.0-m2版本。

  3. 安装环境:
  4. [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)

  5. 编译安装(以下命令全部以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的文件了。
  6. 配置
  7. 配置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的用户。

  8. 测试
  9. 简单测试一下,运行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)来调试程序,可以查看程序的内部结构、设置断点、查看调用堆栈等

阅读(688) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~