码迷,mamicode.com
首页 > 数据库 > 详细

Mysql的启动分析

时间:2015-12-08 07:18:39      阅读:362      评论:0      收藏:0      [点我收藏+]

标签: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即可


本文出自 “小鱼的博客” 博客,转载请与作者联系!

Mysql的启动分析

标签:mysql启动

原文地址:http://395469372.blog.51cto.com/1150982/1720557

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!