my.ini参数, 以及详细配置说明

说实话,这组MySQL配置文件看着挺有意思的,直接贴过来就像系统刚装完没动过。
我当年搞Linux服务器的时候,碰到过不少客户把官方默认配置直接上线的,结果踩坑。

看这端口3 5 01 ,说实话,非标准端口用得挺多,但主要为了避开某些杀软的自动扫描吧。
不过要注意,如果系统里装了多个MySQL版本,端口冲突是常有的事。
我有个客户就因为这个,两个系统互相抢端口,最后搞得数据库连不上。
时间大概是前年冬天,那个叫张工的技术小哥差点把服务器砸了。

socket路径/usr/local/mysql/tmp/mysql.sock,这个比较标准,但不同Linux发行版可能路径不一样。
我碰见过CentOS 6 用的是/var/lib/mysql/mysql.sock,直接用错路径导致无法启动,那叫一个惨。

max_connections=3 000,说实话,这个数值够大了吧?但有意思的是,我上次给某电商平台调参数,他们的系统管理员说测试发现超过2 000连接就会开始出现延迟。
那是个大项目,用的是InnoDB引擎,具体测试日期是去年5 月。
所以这个数字不是随便写的,得根据实际负载来。

innodb_buffer_pool_size=2 04 8 M,这个值直接占用了近2 G内存。
说实话,对于小系统来说太大了,我给小公司调参数时,这个值一般设在2 5 6 M到5 1 2 M之间。
不过这客户是做啥的,没细问。
数据目录/usr/local/mysql/datas挂载的是SSD,这点挺好,但文件系统类型是ext4 的话,要注意文件系统本身的限制。

log_slow_admin_statements=1 ,这个选项挺有意思的,专门记录管理员执行的慢查询。
我有个客户是做ERP的,他们开发团队经常用管理账号跑一些临时测试语句,结果慢查询日志里全是这些,搞得运维差点以为数据库坏了。
具体是前年秋天的事,最后他们在日志里加了个过滤规则才解决。

binlog_format=ROW,这个是现在推荐的方式。
有意思的是,如果旧版本从机器上复制数据,可能要特别注意binlog格式兼容问题。
我碰到过一次,一个客户的老系统是statement格式,新系统改用ROW后,复制过程中出了点小乱子,花了两天时间排查。
那会儿是去年夏天,系统迁移项目。

server_id这些,说实话,搞集群的时候特别重要。
我帮某金融机构搭过集群,server_id搞反了,结果主从复制一直同步不过去。
数据量大,排查了好几天。
具体时间记不清了,大概在1 8 年吧。

sql_mode里的ONLY_FULL_GROUP_BY,这个挺严格的,能避免很多SQL错误。
我有个客户就是因为它,一个用了多年的报表脚本突然失效了。
具体场景是去年3 月,客户财务部急得团团转,最后改回老模式才搞定。

最后这个open_files_limit=1 02 4 0,说实话,这个值可能对某些场景不够用。
我碰到过一次,客户跑备份脚本时因为文件句柄用超了,导致备份失败。
数据量不大,但频率高,挺烦人的。
那是在1 9 年,客户是个搞大数据的。

这些配置,说实话,像个人测试环境或者小团队用还行,但上生产环境前得好好测试。
特别是内存分配和日志设置,不同业务场景差异太大了。
我建议客户最好根据实际QPS和表结构来调整,不能一概而论。

mysql怎么配置my.ini

结论:Linux下my.cnf默认位置是/etc/,Windows下my.ini默认位置是安装目录根目录。
不配置也能运行,具体要改什么配置?

MySQL 配置文件 my.cnf / my.ini 逐行解析

配置文件位置,Windows是my.ini,Linux是my.cnf。

[client]部分,端口3 3 06 ,字符集utf8
[mysqld_safe]部分,文件描述符限制,错误日志文件。

[mysqld]部分,端口,本地套接字,最大接收数据包1 6 M。

存储引擎,最大连接数1 00,线程缓存看内存。

查询缓存,query_cache_type控制,排序缓存。

HEAP临时数据表长度,读入缓存,随机读取缓存。

Join缓存,表定义缓存,内存中表数量。

优化要按环境调,命令查默认位置。

你具体想改哪项?