理解MySQL启动过程及常见启动故障处理

Mysql启动配置文件加载路径

Mysql启动的方式

Mysql启动的内部流程

常见启动故障及分析过程

 Mysql可以读取到的配置文件路径顺序

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

 *后面配置文件会覆盖前面配置文件设置的参数

如果/etc/my.cnf配置文件定义了innodb_buffer_pool_size=100M /etc/mysql/my.cnf配置文件定义了innodb_buffer_pool_size=200M 则会加载200M的参数

 查看方法:

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


--defaults-file参数指定读取配置文件参数

 Strace跟踪mysql的启动过程

strace /usr/local/mysql/bin/mysqld 2>&1 |tee /data/1.log


可以看到直接找了/etc/my.cnf下的配置文件 只读


3个配置文件也依次找了 但是没找到

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


MySQL启动方式

标准启动方式

Service mysqld start

/etc/ini.d/mysqld start

说明mysqld来自

Cp /usr/local/mysql/support-file/mysql.server /etc/ini.d/mysqld

 多实例启动方式

/usr/local/mysql/bin/mysqld_safe --defaults-file=/path/my.cnf &

 /usr/local/mysql/bin/mysqld  --defaults-file=/path/my.cnf &

 /usr/local/mysql/bin/mysqld_multi start 3306

 几种启动方式关系

Service mysqld start 调用 mysqld_safe 调用 mysqld

 Mysqld_multi既可以直接调用mysql_safe 也可以直接调用mysqld

示意图:


mysqld_safe启动分析

可以读取的配置部分mysqldservermysqld_safe

操作系统文件数限制参数配置


Open files max_user_processes参数修改 一个连接占用一个线程

/etc/security/limits.conf

 Mysqld_multi 用于管理多实例启动的一个脚本

读取配置文件中的[mysqld_multi],[mysqldN] N需要是一个整数,建议使用端口号表示,这部分的配置在配置文件里面会覆盖[mysqld]部分中的配置

[mysqld_multi]

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

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

user=root

password=wangxin@sl

log=/data/mysql/mysqld_muti.log

 #(这里的userpassword自己指定,该账号需要有shutdown权限)

 [mysqld3306]

port=3306

datadir=/data/mysql/mysql3306/data

socket/tmp/mysql3306.sock

server-id=203306

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

 调用方式

mysqld_multi start|stop|reload|report  {port}

*mysqld_multi只能识别的配置文件就是在my.cnf,其他配置文件不能识别

 环境演示:mysql多实例3306 3307 3308

/etc/my.cnf






使用mysqld_muiti关闭实例BUG修复,不能正常关机

my_print_defaults 参数



*发现问题 密码不能识别,密码不能传递

 vim /usr/local/mysql/bin/mysqld_multi

my_print_defaults 后面添加-s参数


可以正常关闭多实例



*Mysql遇到启动错误的第一时间记得看error.log

 常见启动错误:

1、权限错误

故障模拟:

mysqld_multi stop 3306

chown root:root mysql3306/ -R

开始启动3306实例 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf &

 这个时候发现并起不来,直接退出了


使用strace命令进行追踪

strace /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf  2>&1|tee log


再将权限改回来 很简单 就是一个排查的思路 记得使用strace

Chown mysql:mysql /data/mysql/mysql3306/  -R

 2、参数配置错误导致MySQL起不来

   查看error.log都能找到原因

 

*确保getenforcedisabled状态

perror查看代码错误信息




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值