`
BucketLi
  • 浏览: 195152 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
5a76a659-f8e6-3bf3-b39a-8ae8f7a0f9d9
Percolator与分布...
浏览量:5674
社区版块
存档分类
最新评论

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

阅读更多
原文地址:http://software.intel.com/zh-cn/blogs/2010/08/20/mysql0/

编译安装
为了实现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在界面上可能不同



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



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



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


  • 大小: 34.9 KB
  • 大小: 54 KB
  • 大小: 41.1 KB
  • 大小: 120.6 KB
分享到:
评论

相关推荐

    mysql源码编译工具

    MySQL源码编译工具是开发和调试MySQL数据库服务器的核心组件之一。在源码级别的操作,开发者可以深入理解MySQL的工作原理,进行自定义配置,优化性能,或者修复特定问题。本篇将详细介绍如何准备和使用这些工具来...

    mysql-5.5.28 源码 vc2008可以完整编译

    通过编译MySQL源码,开发者不仅可以深入了解MySQL的内部工作原理,还可以根据实际需求进行定制,提高数据库系统的性能和安全性。这对于数据库管理员、软件开发者以及研究者来说都是一项重要的技能。在VC2008中编译...

    MySQL源码分析代码结构与基本流程完美版资料.ppt

    MySQL源码分析代码结构与基本流程完美版资料 MySQL源码分析是指对MySQL数据库管理系统的源代码进行分析和研究,以了解其内部工作机制和实现原理。 MySQL源码分析代码结构与基本流程完美版资料是MySQL源码分析的详细...

    MySQL编译安装1

    MySQL编译安装是一个复杂但必要的过程,特别是在你需要特定存储引擎或者自定义配置的情况下。下面将详细解释这个过程。 首先,我们需要准备编译环境。这里提到的是使用`cmake`作为跨平台的编译工具。安装`cmake`的...

    深入mysql源码结构的图书

    最后,本书可能会涉及MySQL的配置、安装、编译和调试技巧,帮助读者在实际环境中部署和维护MySQL服务器。这部分知识对于系统管理员和开发者来说都十分实用。 总而言之,《深入MySQL源码结构》是MySQL开发者的宝贵...

    mysql-8.0.12源码安装包

    2. **依赖库**:安装MySQL源码前,需要确保系统已安装了必要的依赖库,如OpenSSL、zlib、ncurses、libaio等。这些库为MySQL提供了加密、压缩、终端交互等功能支持。 3. **配置阶段**:运行`configure`脚本来检查...

    mysql-5.0.45源代码(可以编译通过)

    12. **调试与测试**:源代码还允许进行调试和单元测试,以确保编译后的二进制文件功能正常,性能优良。 综上所述,MySQL 5.0.45源代码提供了丰富的功能和灵活性,是学习数据库原理、数据库管理、以及进行特定需求...

    MySQL源码初探_mysql源码_piezca_MYSQL_

    在《MySQL源码初探》中,我们将探讨MySQL的核心功能、架构设计以及源码解析的关键点。 首先,MySQL的核心功能包括数据存储、查询处理、事务管理、并发控制等。源码分析可以从以下几个层面展开: 1. **数据存储**:...

    小龟app反编译教程+源码+后端文件+对接cms文档

    以下我们将深入探讨反编译、源码分析以及后端文件对接CMS(内容管理系统)的相关知识点。 1. 反编译基础: 反编译是将已编译的可执行程序或库转换回源代码的过程。这通常涉及到使用工具如Apktool、dex2jar、JD-GUI...

    【24】基于Centos7.5源码编译LAMP架构.docx

    3. **便于维护**:对于开发者和运维人员而言,源码编译的软件更容易进行调试和维护,因为它们通常会包含详细的编译和配置记录。 #### LAMP与Nginx的对比 - **安全性**:LAMP架构因其成熟的使用历史和技术积累,相对...

    mysql-5.6.28源码包

    编译MySQL源码需要遵循以下步骤: 1. **解压源码**:使用`tar -zxvf mysql-5.6.28.tar.gz`命令解压缩源码包。 2. **配置**:运行`./configure`检查依赖项并生成Makefile。 3. **编译**:执行`make`命令进行编译。 4...

    分享MySQL的自动化安装部署的方法

    - `WITH_DEBUG`: 是否编译调试版本,这里设为OFF以减小体积。 - `WITH_VALGRIND`: 是否为Valgrind工具集优化。 - `ENABLE_DEBUG_SYNC`: 是否启用调试同步。 - `WITH_EXTRA_CHARSETS`: 支持的字符集,这里设为所有...

    jsp+mysql 博客源码

    总结,JSP+MySQL博客源码是一个基于Java和MySQL的动态网站示例,涵盖了用户管理、文章发布和评论互动等核心功能。开发者可以借此学习到Web开发的基本流程,从数据库设计到前后端交互,再到项目部署的全过程。

    mysql-connector-c-6.1.11-src

    MySQL Connector/C是MySQL数据库系统与C语言应用程序之间的一个接口,它允许C编程语言的应用程序连接到MySQL服务器...通过编译和分析源码,开发者不仅可以增强对MySQL数据库接口的理解,还能提升软件开发和维护的能力。

    mysql安装文档

    综上所述,MySQL 的安装过程包括了安装必要的依赖包、创建 MySQL 用户组和用户、编译安装 CMake 和 Percona Server 5.6,并进行相关的配置工作,以及最后的安全性和权限管理设置。此外,还介绍了如何配置 MySQL 的...

    mysql源码包

    分析MySQL 5.6.12的源码,你可以了解这些特性的实现细节,包括内部数据结构、算法以及与操作系统和硬件的交互方式。这对于理解数据库工作原理、开发插件、优化查询性能或调试问题都极其有价值。 此外,源码安装的...

    CentOS5.5_MySql_5.1.49的安装、优化及安全设置

    ### CentOS 5.5 MySQL 5.1.49 的安装、优化及安全设置 #### 一、前言 在 Linux 系统中部署数据库服务器是很多应用的基础工作之一。对于 CentOS 5.5 系统,安装 MySQL 5.1.49 并进行必要的优化和安全设置是非常重要...

    易语言源码MYSQL操作源码.rar

    本压缩包“易语言源码MYSQL操作源码.rar”提供了易语言环境下对MySQL数据库进行操作的源代码,非常适合初学者学习和参考。 在该压缩包中,有以下几个关键文件: 1. **测试.e**:这是易语言编写的源代码文件,很...

    MySQL的jar包以及源码

    源码分析可以帮助我们了解数据库连接、查询执行、结果集处理等过程的具体实现,这对于优化性能、解决兼容性问题或开发自定义驱动都是很有帮助的。 总之,这个资源对于学习和使用Java与MySQL数据库交互的开发者来说...

    lnmp编译安装文档.zip

    14_Mysql的数据初始化及管理.docx介绍了MySQL的安装和数据初始化。编译MySQL时,需要配置--prefix指定安装路径,--with-extra-charsets包含额外字符集。安装后,创建root用户,初始化数据库,设置权限,并了解如何...

Global site tag (gtag.js) - Google Analytics