您的位置:首页 > 数据库 > MySQL

MySQL的启动流程及启动时常见错误分析

2015-12-07 22:18 816 查看
一、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指定的参数
# 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启动方式之间的关系



mysqld_multi调用mysqld_safe或者mysqld,mysqld_safe调用mysqld

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_safe --help
--mysqld=FILE Use the specified file as mysqld
--mysqld-version=VERSION Use "mysqld-VERSION" as mysqld
--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

定义一个用户,一般需要super的权限,这个用户是可以连到mysql里面 ,可以关闭数据库,
mysqladmin shutdown/ping
e.g.
[mysqld3306]

port=3306
server-id=883306
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启动流程
启动过程
1、加载配置文件,启动初始化
2、根据配置文件读取数据文件和目录,检查权限
3、加载表空间(undo,redo),就绪
4、启动监听进程,等待客户端连接

分析关闭过程,关闭mysql的流程
1、mysqld 接到single 0的信号
2、清场处理,关闭所有连接,刷新内存里的数据
3、close

四、启动故障常见分析
常见错误:

1、加载配置文件,参数名写错了
2、文件或者目录的权限不对
3、文件大小不对,改了ibdata
4、端口被占用
5、启动不起来,看错误日志,按着错误日志里面的提示一般都能解决

五、Mysql 5.6新特性之一
Easy Change innodb logfile(5.6.8 later)
1、关闭MySQL确认没有报错
2、更改配置文件innodb_log_file_size或是更改log文件个数:innodb_log_file_in_group
3、启动MySQL即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息