[MySQL分享]MySQL启动以及my.cnf参数文件结构小结

105 篇文章 2 订阅
版权声明:声明:本文档可以转载,须署名原作者。 作者:无为 qq:490073687 周祥兴 zhou.xiangxing210@163.com

percona官方出的自动生成参数文件的地址
https://tools.percona.com/wizard/result
官方文档的数据库服务端管理
http://dev.mysql.com/doc/refman/5.1/en/server-administration.html

根据mysql[d] --help --verbose的输出可知 mysql客户端和服务端程序加载配置文件顺序和路径如下
/etc/my.cnf -->  /etc/mysql/my.cnf --> /usr/local/mysql/etc/my.cnf -->  ~/.my.cnf (--defaults-file= 自己指定的参数文件)


mysql采用集中式的配置文件,配置文件是分块的,以 [NAME] 独立行开始,到下一个[NAME] 独立行结束属于作用于NAME指定的程序的配置。
对于里面的具体参数有如下两点需要记住:
1.在同一块[NAME]中每个参数可以重复出现,对于这种重复的参数默认排在下面的参数覆盖上面的参数。
2.每个[NAME]块中的参数都是默认参数值,只有在NAME命令不带这些参数时才会生效。
比如 [mysql]中定义的port=3306,
当直接用mysql -uuser -ppasswd而不带-P端口参数时,默认连的端口就是3306;
当用mysql -uuser -ppasswd -P3307则不会去连接3306端口,而是连接3307端口。其他模块的参数以此类推。
3.默认情况下,MySQL只是使用恰好够用的资源启动。所以MySQL的这些默认值,一般情况下有些关键参数满足不了生产库的需求。
4.明确一点“没有一个适合所有场景的最佳配置文件”。


[client] 是所有mysql客户端程序读取的配置块。针对的是MySQL客户端(不包含mysql命令,指的是具体应用程序,比如java的jdbc,C的mysql驱动等等)
[server]是所有服务端如mysqld会读取的配置块。一般不用设置,完全由[mysqld]替换。
[mysqldump]则是只有 mysqldump命令才会读取的配置文件,
[mysql] 是mysql命令这个客户端程序的配置块,
[mysqld]是mysql服务端程序mysqld 和 mysqld_safe 。在多实例环境下[mysqld3306]和[mysqld3307]可能会覆盖[mysqld]中的参数。
[mysqld_safe]针对mysqld_safe命令生效。
[mysqldump]针对mysqldump命令生效
[mysqladmin]针对mysqladmin命令生效
[mysqld_multi]针对mysqld_multi,管理MySQL单机多实例。
[mysqld3306]mysqld_multi管理的3306实例启动时mysqld读取的参数(也会读[mysqld]的参数,可以被覆盖)
[mysqld3307]mysqld_multi管理的3307实例启动时mysqld读取的参数(也会读[mysqld]的参数,可以被覆盖)


mysqld_safe是个shell脚本,而且是mysqld的守护进程。当mysqld被kill掉之后,mysqld_safe会自动拉起一个mysqld。


1.用/etc/inint.d/mysqld启停脚本,service命令调用的也是/etc/inint.d/mysqld这个脚本.(其实这个脚本调用的也是mysqld_safe来拉起mysqld)
# service mysqld start|stop|restart (5.0版本是mysqld)
# /etc/inint.d/mysqld start|stop|restart
# service mysql start|stop|restart (5.5.7版本是mysql)
# /etc/inint.d/mysql start|stop|restart
备注:默认情况下/etc/inint.d/mysql脚本将日志输出到了/dev/null。在调试service mysql start启动不了MySQL时,可以用如下方法改日志输出的位置。
#$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/tmp/test_start_mysql.log 2>&1 &


2.用mysqld_safe
mysqld_safe --defaults-file=~/my.cnf --user=mysql &


3.直接用mysqld启动
mysqld --defaults-file=~/my.cnf --user=mysql &


4.mysqld_multi启动
mysqld_multi --defaults-extra-file=/etc/mysqld_multi.cnf report
全部启动
mysqld_multi --defaults-extra-file=/etc/mysqld_multi.cnf start
逐个启动
mysqld_multi --defaults-extra-file=/etc/mysqld_multi.cnf start 3306
mysqld_multi --defaults-extra-file=/etc/mysqld_multi.cnf start 3307


全部启动
mysqld_multi --defaults-file=/etc/my.cnf start 
逐个启动
mysqld_multi --defaults-file=/etc/my.cnf start 3306
mysqld_multi --defaults-file=/etc/my.cnf start 3307
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-无-为-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值