一、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即可