启动mysqld,并进入listen阶段
 
函数调用栈:
mysqld_main():  
     my_init();初始化变量,锁,错误串
     my_thread_global_init(): 初始化互斥锁,信号量,线程独享变量
     load_defaults();查找my.cnf
     sys_var_init();初始化system variables
     init_common_variables:初始化mutex,status变量
     init_signals:初始化信号量处理
     init_server_components:装载innodb引擎
     network_init: 初始化网络组件
     start_signal_handler:处理信号的线程
     execute_ddl_log_recovery:执行innodb的recovery
     handle_connections_sockets:开始处理connection请求
 
my_init():
     文件/目录 umask
     结构化标准IO的文件handler:MYSQL_FILE
     init_glob_errs():初始化global错误文本数组
     获取home环境变量
 
 my_thread_global_init():
     1. 线程独享变量:
          [pthread_key]THR_KEY_mysys来控制线程独享结构体变量[st_my_thread_var:包含线程ID,error,锁等信息],后续都通过              
                                     pthread_getspecific在线程内进行获取。
      2. init全局互斥锁:THR_LOCK_malloc,THR_LOCK_open,THR_LOCK_charset,THR_LOCK_threads,THR_LOCK_lock,
                              THR_LOCK_isam,
                                   THR_LOCK_myisam,THR_LOCK_myisam_mmap,THR_LOCK_heap,THR_LOCK_net,
      3. init全局信号量:THR_COND_threads
      4. 创建一个样本thread,随即就结束【dummy_thread】
 
  
load_defaults():
     获取my.cnf的候选目录包括:/etc/my.cnf  /etc/mysql/my.cnf  $MYSQL_HOME/my.cnf  ~/my.cnf ./my.cnf
 
 
sys_var_init():
     系统中所有的system variables都实例化成继承类[sys_var]的static对象,并加入到链表中sys_var_chain all_sys_vars中,
     最后通过链接全部加入到[system_variable_hash]hash表中。
     
init_common_variables():
     init了大量的mutex和condition:还没有看明白是啥用途
     初始化mysqld.cc定义的全局变量
     初始化默认storage engine
     所有show status 需要的变量加入到all_status_vars
  
init_server_components():
     初始化user_state,client_state,thread_state.
     装载innodb引擎
     
network_init():
     初始化网络接口,建立socket,并开始listener。
 
start_signal_handler():
     创建处理signal的一个独立线程
 
handle_connections_sockets:
     开始处理connection请求,使用epoll socket描述符的方式listen connect request,
并对没有请求连接创建一个THD对象,并作为一个新thread的参数。

MySQL源码之mysqld启动的更多相关文章

  1. 【MySQL源码】源码安装和启动mysql

    --[MySQL源码]源码安装和启动mysql --------------------------------------2014/08/19 本机环境:ubuntu12.04,fedora-17 ...

  2. mysql源码分析-启动过程

    mysql源码分析-启动过程 概要 # sql/mysqld.cc, 不包含psi的初始化过程 mysqld_main: // 加载my.cnf和my.cnf.d,还有命令行参数 if (load_d ...

  3. mysql源码解读之配置文件

    要研究mysql,最好的资源莫过于源码了,所以本人打算通过调试源码的方式来深入理解mysql的点点滴滴.搭建mysql调试环境很简单,从官方下载mysql源码,利用cmake工具生成工程即可.为了方便 ...

  4. MySQL源码分析以及目录结构 2

    原文地址:MySQL源码分析以及目录结构作者:jacky民工 主要模块及数据流经过多年的发展,mysql的主要模块已经稳定,基本不会有大的修改.本文将对MySQL的整体架构及重要目录进行讲述. 源码结 ...

  5. MySQL源码分析以及目录结构

    原文地址:MySQL源码分析以及目录结构作者:jacky民工 主要模块及数据流经过多年的发展,mysql的主要模块已经稳定,基本不会有大的修改.本文将对MySQL的整体架构及重要目录进行讲述. 源码结 ...

  6. mysql 源码调试方法

     http://blog.itpub.net/29254281/viewspace-1847415/ 其中吕海波老师分享的内容是 <调试Oracle二三例:调试技术在日常运维中的应用>其中 ...

  7. 【转】Ubuntu编译安装mysql源码

    主要参考了下面两篇文章 http://forum.ubuntu.org.cn/viewtopic.php?t=330121 http://www.linuxidc.com/Linux/2011-09/ ...

  8. Mysql 源码编译教程贴

    题外话:这是一篇教程贴,不仅学的是mysql的编译,还是一些编译的知识.我也是一个菜鸟,写一些感悟和心得,有什么问题可以批评指正,谢谢! 如果只是为了安装请移到我的另一篇安装贴: Mysql安装贴 环 ...

  9. mysql源码安装(5.1)

    下载mysql源码包并解压.wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.73.tar.gztar -zxvf mysql-5 ...

随机推荐

  1. J2EE、J2SE、J2ME

    http://developer.51cto.com/art/200906/130453.htm 本文介绍Java的三大块:J2EE.J2SE和J2ME.J2SE就是Java2的标准版,主要用于桌面应 ...

  2. HTML解析引擎:Jumony 开源项目

    Jumony Core首先提供了一个近乎完美的HTML解析引擎,其解析结果无限逼近浏览器的解析结果.不论是无结束标签的元素,可选结束标签的元素,或是标记属性,或是CSS选择器和样式,一切合法的,不合法 ...

  3. (一)初识Android

    第一节:手机操作系统简介 目前的主流智能操作系统有:Android , IOS , windows mobile ; Android 开源,属于谷歌公司,市场份额较大,前景广阔: IOS 属于苹果公司 ...

  4. 【失败】制作CentOS镜像

    1.在vmware上安装centos虚拟机,安装过程中设置CPU时,点选 虚拟化Intel VT-x~ 和 虚拟化CPU性能计数器,网络使用NAT模式 2.#mkdir /opt/iso,上传镜像(用 ...

  5. Struts2配置文件_常量属性_独立测试分析

    <constant name="struts.devMode" value="true" /> 设置开发模式,可以了解详细信息,该属性指定视图标签默 ...

  6. mysql SELECT INTO OUTFILE ,can't create file (转)

    原文  http://blog.sina.com.cn/s/blog_6a5e34ad0100zfbi.html (转) 命令行模式进入mysql #mysql -uroot -p12345 #sel ...

  7. ubuntu server 安装

    http://tigerlchen.iteye.com/blog/1765765  解决CDROM找不到的bug

  8. jQuery查看dom元素上绑定的事件列表

        jQuery API提供了一种能够查看元素已绑定事件的列表,这个功能在进行功能调试的时候特别有用,尤其确定在代码执行过程中元素绑定的事件是否被更改. 1: jQuery( elem ).dat ...

  9. Java调用.Net WebService参数为空解决办法 (远程)调试webservice方法 转

    Java调用.Net WebService参数为空解决办法 (远程)调试webservice方法   同事遇到一个很囧的问题,java调,netwebservice的时候,调用无参数方法成功,调用有参 ...

  10. 2016年1月编程语言排行榜:Java荣获2015年度冠军

    Java因于2015年人气增幅最大(+ 5.94%),故获得2015年的TIOBE指数的编程语言奖,同时成为15年年度冠军, Visual Basic.NET(+ 1.51%)和Python(+ 1. ...