Mysql的启动分析

一、Mysql启动配置文件的加载路径

# mysqldump --help| egrep -B2  "/etc/my.cnf" 或者

# mysqld --verbose --help |grep my.cnf

Default options are read from the following files in the given order:

/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

--后面的变量覆盖前面的变量

参数指定:

--defaults-file: 指定只读取该配置文件,不在读取其他的配置文件

--print-defaults 输出现在mysqld指定的参数

--defaults-extra-file :指定myqld读取完指定的配置文件之后,还需要读取用户指定的特殊的配置文件

# mysqld --print-defaults

mysqld would have been started with the following arguments:

--user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/mysql_3306 --port=3306 --socket=/tmp/mysql_3306.sock --event_scheduler=0 --interactive_timeout=300 --wait_timeout=300 --character-set-server=utf8 --open_files_limit=65535 --max_connections=100 --max_connect_errors=100000 --skip-name-resolve=1 --log-output=file --slow_query_log=1 --slow_query_log_file=slow.log --log-error=error.log --log_warnings=2 --pid-file=mysql.pid --long_query_time=1 --log-slow-slave-statements=1 --binlog_format=row --server-id=883306 --log-bin=mysql-bin --binlog_cache_size=4M --max_binlog_size=1G --max_binlog_cache_size=2G --sync_binlog=0 --expire_logs_days=10 --skip_slave_start=1 --max_relay_log_size=1G --relay_log_purge=1 --relay_log_recovery=1 --log_slave_updates --explicit_defaults_for_timestamp=true --table_open_cache=2048 --table_definition_cache=2048 --table_open_cache=2048 --max_heap_table_size=96M --sort_buffer_size=2M --join_buffer_size=2M --thread_cache_size=256 --query_cache_size=0 --query_cache_type=0 --query_cache_limit=256K --query_cache_min_res_unit=512 --thread_stack=192K --tmp_table_size=96M --key_buffer_size=8M --read_buffer_size=2M --read_rnd_buffer_size=16M --bulk_insert_buffer_size=32M --myisam_sort_buffer_size=128M --myisam_max_sort_file_size=100M --myisam_repair_threads=1 --innodb_buffer_pool_size=100M --innodb_buffer_pool_instances=1 --innodb_data_file_path=ibdata1:1G:autoextend --innodb_flush_log_at_trx_commit=2 --innodb_log_buffer_size=64M --innodb_log_file_size=500M --innodb_log_files_in_group=3 --innodb_max_dirty_pages_pct=50 --innodb_file_per_table=1 --innodb_rollback_on_timeout --innodb_status_file=1 --innodb_io_capacity=2000 --transaction_isolation=READ-COMMITTED --innodb_flush_method=O_DIRECT

二、Mysql的启动方式

1、标准方式

service mysqld start|stop|restart|status

或者/etc/init.d/mysqld  start|stop|restart|status

2、mysqld_safe --defaults-file=/path/my.cnf &

3、mysqld --defaults-file=/path/my.cnf &

4、mysqld_multi start 3306

mysql启动方式之间的关系

1、mysqld启动分析

# mysqld --verbose --help   #查看该版本相应的参数

mysqld是mysql的一个核心程序,用于管理MySQL数据库文件以及用户的请求操作,同时参数也是最多的,mysqld_safe,mysql.server,mysqld_multi最终都是调用mysqld命令

mysqld读取配置文件中[mysqld]部分的参数

启动方式

mysqld &

关闭

mysqladmin shutdown

2、mysqld_safe启动方式

可以读取配置部分[mysqld]、[mysqld_safe],[mysqld_safe]是最后加载的,[mysqld_safe] 参数的优先级是最高的,会覆盖[mysqld]的中部分

可以在[mysqld_safe]中用--mysqld,--mysqld-version指定调用的mysqld

[mysqld_safe]比较有用的参数

--mysqld  --mysqld-version

--open-file-limit

--nice=prority

--malloc-lib

malloc-lib=/path/libtcmallloc.so

启动方式:

mysqld_safe --defaults-file=/etc/my.cnf &

3、mysql.server

用于启动和关闭mysqld(单实例环境)

源码版本和二进制版本该文件在support-files目录,cp support-file/mysql.server /etc/init.d/mysqld

chkconfig  mysqld on

可以读取配置文件中的[mysql.server](不常见),[mysqld]这两部分配置

默认使用--user-mysqld-safe调用mysqld-safe启动mysqld

调用方式

service mysqld stop|start|restart

4、mysqld_multi启动方式

[mysqld_multi]

用于管理文件中[mysqld_multi],[mysqldN],N需要一个整数,建议用端口号表示,该部分配置会覆盖[mysqld]部分中的配置

[mysqld_multi]参考

basedir=/usr/local/mysql/

mysqld=/usr/local/mysql/bin/mysqld_safe

mysqladmin=/usr/local/mysql/bin/mysqladmin

user=multi-admin

password=multipass

定义一个用户,这个用户是可以连到mysql里面 ,mysqladmin shutdown/ping

[mysqld3306]

port=3306

server-id=883306

#binlog-do-db=database02

basedir= /usr/local/mysql

datadir = /data/mysql/mysql_3306

socket = /tmp/mysql_3306.sock

log-bin=/data/mysql_3306/logs/mysql-bin

调用方式

mysqld_multi {start|stop|reload|report} [GNR,[,GNR]...]

mysqld_multi start 1-3

mysqld_multi start 1,3,4,6

三、MySQL启动流程

启动过程

加载配置文件

检查权限(目录权限)

加载表空间(undo,redo),就绪

等待接客

分析关闭过程

关闭mysql的流程

mysqld 接到single 0的信号

清场处理,关闭所有连接,刷新内存里的数据

close

四、启动故障常见分析

启动过程分析

加载配置文件(启动初始化)

根据配置文件读取数据文件(就绪)

启动监听进程(开始接客)

1、加载配置文件,参数名写错了

2、文件或者目录的权限不对

3、文件大小不对,改了iddata

4、端口被占用

启动不起来,看错误日志

Mysql 5.6新特性之一

Easy Change innodb logfile(5.6.8 later)

关闭MySQL确认没有报错

更改配置文件innodb_log_file_size或是更改log文件个数:

innodb_log_file_in_group

启动MySQL即可

时间: 2024-10-03 13:03:50

Mysql的启动分析的相关文章

Tomcat启动分析(我们为什么要配置CATALINA_HOME环境变量)

原文:http://www.cnblogs.com/heshan664754022/archive/2013/03/27/2984357.html Tomcat启动分析(我们为什么要配置CATALINA_HOME环境变量) 用文本编辑工具打开用于启动Tomcat的批处理文件startup.bat,仔细阅读.在这个文件中,首先判断CATALINA_HOME环境变量是否为空,如果为空,就将当前目录设为CATALINA_HOME的值.接着判断当前目录下是否存在bin\catalina.bat,如果文件

mysql的启动

1.直接用mysqld手工启动 [[email protected] bin]# ./mysqld --defaults-file=../my.cnf 140328 10:04:37 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root! 140328 10:04:37 [ERROR] Aborting 140328 10:04:37

mysql sql语句分析

SELECT     a.id    ,b.order_id,b.attr  FROM    tourist_order a     LEFT JOIN order_attr b     ON a.id = b.order_id        AND b.attr='order_status'    WHERE     b.order_id IS NULL    AND a.create_type!=19    AND a.added_time>='2014-01-01'    AND a.si

破解windows下MySQL服务启动不了的情况下不能对其进行完全卸载的解决方案

以下的文章主要介绍的是在MySQL服务启动不了的情况下,不能对其进行完全卸载的实际解决办法的描述,以下就是对解决MySQL服务启动不了的情况下具体方案的描述,希望在你今后的学习中会对你有所帮助. MySQL 5.1 安装过程中报apply security setting错误的解决办法 1, 卸载MySQL 2, 删除目录 C:\Documents and Settings\All Users\Application Data\MySQL 3, 重新安装MySQL 就 OK 啦 [MySQL]

关于在安装MySQL时报错"本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止"的解决方法

首先将你下载的MySQL安装或者解压(对应安装版和解压版),下载地址http://dev.mysql.com/downloads/mysql/ 然后复制你安装目录中的my-default.ini,更改名字为my.ini 然后打开cmd,输入语句mysqld --initialize --user=mysql --console,(看到生成个data文件,是系统默认创建数据库的),此时还会生成一个临时的密码(解压版默认为空),记住,会用到的 然后就继续使用命令行到你的安装目录bin目录下启动你的M

XAMPP的MYSQL无法启动

昨天用各种方式试验MYSQL的数据库备份与恢复操作,恢复过程中,MYSQL就无法启动了. 提示如下: 22:59:43 [mysql] Attempting to start MySQL app... 22:59:43 [mysql] Status change detected: running 22:59:44 [mysql] Status change detected: stopped 22:59:44 [mysql] Error: MySQL shutdown unexpectedly

MySQL:解决MySQL无法启动的问题

MySQL无法启动的原因有多种,这里是我遇到的一种情况和解决方法. 起因: 最近项目需要使用MySQL,于是想在MAC上安装一个本地的数据库,但是其实忘了已经安装过一个版本了,结果发现新的服务器怎么也无法运行. 现象: 通过命令行启动MySQL:sudo /usr/local/mysql/support-files/mysql.server start Starting MySQL 一直得到这个错误: ERROR! The server quit without updating PID fil

mysql性能查看&分析

第一步.检测系统状态 通过系统自带工具检测系统状态,cpu.内存.交换空间.磁盘利用率,还有关注那些占用cpu和内存的进程. sar检测系统是否存在IO问题 yum -y install systat sar -u 2 10    每隔2秒执行一次,共执行10次 [email protected] zones]# sar -u 2 10 Linux 3.10.0-123.el7.x86_64 (cp-mysql04-new) 2016年01月07日 _x86_64_ (8 CPU) 15时03分

mysql无法启动,一直处于启动状态解决【Mac osx 】

最近,遇到一个问题,就是mac 使用homebrew 安装了mysql,今天使用mysql.server start,mysql无法启动了,restart还找不到pid,说明服务并没有启动! 错误如下: google一番,找到一个解决办法!简单的就是:按照启动报的错误,去相应文件夹下,删除所有的*.err文件,再创建没有的那个pid文件! 到这一步有可能问题就解决了,但是我的依旧报错,于是查看了一下是否还有mysql相关的进程在运行, 运行: ps -A |grep mysql,得如下结果 果断