
liunx上安装MySQL没有默认my.cnf文件解决方案
配置文件使用:在5.7.18及以上版本中,默认配置已经足够使用,但若需要特定功能(如慢查询、主从复制等),需自行编辑my.cnf文件并只复制相关部分。 避免全面复制:不要将示例文件全部复制到实际环境中,以免导致服务无法启动。 参数调整:根据实际需求调整配置参数,建议参考MySQL官方文档进行优化。
发布日期:2025-04-11 00:24:47
浏览次数:7
分类:精选文章
本文共 7399 字,大约阅读时间需要 24 分钟。
从MySQL 5.7.18版本开始,默认的my-default.cnf配置文件不再包含在二进制包中。这意味着安装时无需手动配置my.cnf文件即可正常运行。以下是关于MySQL 5.7.18及以上版本的配置说明和注意事项:
配置变化解释
在5.7.18版本中,使用tar.gz安装时,默认配置已经包含必要的设置,无需额外配置my.cnf文件即可启动。然而,如果需要启用特定功能(如慢查询、主从复制等),仍需在/etc目录下配置my.cnf文件,但只需复制与功能相关的配置部分即可,避免全部复制以免导致启动失败。
示例配置说明
以下是示例my-default.cnf文件的默认配置内容:
# For advice on how to change settings please see# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html[mysqld]# Remove leading # and set to the amount of RAM for the most important data# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.innodb_buffer_pool_size = 128M# Remove leading # to turn on a very important data integrity option: logging# changes to the binary log between backups.log_bin# These are commonly set, remove the # and set as required.basedir = ......datadir = ......port = ......server_id = ......socket = ......# Remove leading # to set options mainly useful for reporting servers.# The server defaults are faster for transactions and fast SELECTs.join_buffer_size = 128Msort_buffer_size = 2Mread_rnd_buffer_size = 2Msql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
注意事项
完整配置示例
以下是一个完整的my.cnf配置示例,仅供参考:
[client]port = 3306socket = /tmp/mysql.sockdefault-character-set=utf8[mysqld]# 可以免密码登录skip-grant-tables###############################基础设置######################################Mysql服务的唯一编号,每个mysql服务Id需唯一server-id = 1# 服务端口号,默认3306port = 3306default_storage_engine=InnoDBskip-name-resolve# mysql安装根目录basedir = /usr/local/mysql# mysql数据文件所在位置datadir = /usr/local/mysql/data# 临时目录tmpdir = /tmp# 设置socke文件所在目录socket = /tmp/mysql.sock# 主要用于MyISAM存储引擎,如果多台服务器连接一个数据库则建议注释下面内容skip-external-locking# 只能用IP地址检查客户端的登录,不用主机名skip_name_resolve = 1# 事务隔离级别,默认为可重复读transaction_isolation = READ-COMMITTED# 数据库默认字符集character-set-server = utf8mb4# 数据库字符集对应一些排序等规则collation-server = utf8mb4_general_ci# 设置client连接mysql时的字符集,防止乱码#init_connect=‘SET NAMES utf8mb4’# 是否对sql语句大小写敏感,1表示不敏感lower_case_table_names = 1# 最大连接数max_connections = 400# 最大错误连接数max_connect_errors = 1000# TIMESTAMP如果没有显示声明NOT NULL,允许NULL值explicit_defaults_for_timestamp = true# SQL数据包发送的大小,如果有BLOB对象建议修改成1Gmax_allowed_packet = 128M# MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭# MySQL默认的wait_timeout值为8个小时,interactive_timeout参数需要同时配置才能生效interactive_timeout = 2880000wait_timeout = 2880000# 内部内存临时表的最大值,设置成128M。比如大数据量的group by,order by时可能用到临时表,# 超过了这个值将写入磁盘,系统IO压力增大tmp_table_size = 134217728max_heap_table_size = 134217728# 禁用mysql的缓存查询结果集功能# 后期根据业务情况测试决定是否开启# 大部分情况下关闭下面两项query_cache_size = 0query_cache_type = 0# MySQL5.7 group by新特性,报错1055,具体需要根据本身情况进行设定,没有固定值sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION#####################用户进程分配到的内存设置###############################每个session将会分配参数设置的内存大小# 用于表的顺序扫描,读出的数据暂存于read_buffer_size中,当buff满时或读完,将数据返回上层调用者# 一般在128kb ~ 256kb,用于MyISAMread_buffer_size = 131072# 用于表的随机读取,当按照一个非索引字段排序读取时会用到,# 一般在128kb ~ 256kb,用于MyISAMread_rnd_buffer_size = 262144# order by或group by时用到# 建议先调整为2M,后期观察调整sort_buffer_size = 2097152# 一般数据库中没什么大的事务,设成1~2M,默认32kbbinlog_cache_size = 524288########################用户进程分配到的内存设置#############################在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中# 官方建议back_log = 50 + (max_connections / 5),封顶数为900back_log = 130############################日志设置############################################数据库错误日志文件log_error = error.log# 慢查询sql日志设置slow_query_log = 1slow_query_log_file = slow.log# 检查未使用到索引的sqllog_queries_not_using_indexes = 1# 针对log_queries_not_using_indexes开启后,记录慢sql的频次、每分钟记录的条数log_throttle_queries_not_using_indexes = 5# 作为从库时生效,从库复制中如何有慢sql也将被记录log_slow_slave_statements = 1# 慢查询执行的秒数,必须达到此值可被记录long_query_time = 8# 检索的行数必须达到此值才可被记为慢查询min_examined_row_limit = 100# mysql binlog日志文件保存的过期时间,过期后自动删除expire_logs_days = 5############################主从复制设置######################################开启mysql binlog功能log-bin = mysql-bin# binlog记录内容的方式,记录被操作的每一行binlog_format = ROW# 对于binlog_format = ROW模式时,减少记录日志的内容,只记录受影响的列binlog_row_image = minimal# master status and connection information输出到表mysql.slave_master_info中master_info_repository = TABLE# the slave‘s position in the relay logs输出到表mysql.slave_relay_log_info中relay_log_info_repository = TABLE# 作为从库时生效,想进行级联复制,则需要此参数log_slave_updates# 作为从库时生效,中继日志relay-log可以自我修复relay_log_recovery = 1# 作为从库时生效,主从复制时忽略的错误slave_skip_errors = ddl_exist_errors############################ redo log和binlog的关系设置############################# 步骤1) prepare dml相关的SQL操作,然后将redo log buff中的缓存持久化到磁盘# 步骤2) 如果前面prepare成功,那么再继续将事务日志持久化到binlog# 步骤3) 如果前面成功,那么在redo log里面写上一个commit记录# (步骤1) prepare dml相关的SQL操作,然后将redo log buff中的缓存持久化到磁盘# (步骤2) 如果前面prepare成功,那么再继续将事务日志持久化到binlog# (步骤3) 如果前面成功,那么在redo log里面写上一个commit记录# 当innodb_flush_log_at_trx_commit和sync_binlog都为1时是最安全的,但性能上压力也是最大# 当innodb_flush_log_at_trx_commit设置为0,mysqld进程的崩溃会导致上一秒钟所有事务数据的丢失# 当innodb_flush_log_at_trx_commit设置为2,只有在操作系统崩溃或者系统掉电的情况下,上一秒钟所有事务数据才可能丢失innodb_flush_log_at_trx_commit = 2# commit事务时,控制写入mysql binlog日志的模式,默认为0sync_binlog = 1############################ InnoDB设置#######################################数据块的单位8k,默认是16k,16kCPU压力稍小,8k对select的吞吐量大innodb_page_size = 8192# 一般设置物理存储的60% ~ 70%innodb_buffer_pool_size = 1G# 5.7.6之后默认16Minnodb_log_buffer_size = 16777216# 该参数针对unix、linux,window上直接注释该参数,默认值为NULL# O_DIRECT减少操作系统级别VFS的缓存和Innodb本身的buffer缓存之间的冲突innodb_flush_method = O_DIRECT# 此格式支持压缩, 5.7.7之后为默认值innodb_file_format = Barracuda# CPU多核处理能力设置,假设CPU是2颗4核的,设置如下# 读多,写少可以设成2:6的比例innodb_write_io_threads = 4innodb_read_io_threads = 4# 提高刷新脏页数量和合并插入数量,改善磁盘I/O处理能力# 默认值200(单位:页)innodb_io_capacity = 500# 为了获取被锁定的资源最大等待时间,默认50秒,超过该时间会报如下错误:# ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transactioninnodb_lock_wait_timeout = 30# 调整buffer pool中最近使用的页读取并dump的百分比,通过设置该参数可以减少转储的page数innodb_buffer_pool_dump_pct = 40# 设置redoLog文件所在目录,redoLog记录事务具体操作内容innodb_log_group_home_dir = /data/mysql/data/# 设置undoLog文件所在目录,undoLog用于事务回滚操作innodb_undo_directory = /data/mysql/undo/# 在innodb_log_group_home_dir中的redoLog文件数,redoLog文件内容是循环覆盖写入innodb_log_files_in_group = 3# MySql5.7官方建议尽量设置的大些,可以接近innodb_buffer_pool_size的大小# 之前设置该值较大时可能导致mysql宕机恢复时间过长,现在恢复已经加快很多了# 该值减少脏数据刷新到磁盘的频次# 最大值innodb_log_file_size * innodb_log_files_in_group ≤ 512GB,单文件≤256GBinnodb_log_file_size = 1024M# 设置undoLog文件所占空间可以回收innodb_undo_log_truncate = 1# innodb_undo_tablespaces = 3# innodb_undo_logs = 128# 5.7.7默认开启该参数 控制单列索引长度最大达到3072innodb_large_prefix = 1# 5.7.8默认为4个, Inodb后台清理工作的线程数innodb_purge_threads = 4# 通过设置配置参数innodb_thread_concurrency来限制并发线程的数量,# 一旦执行线程的数量达到这个限制,额外的线程在被放置到对队列中之前,会睡眠数微秒,# 可以通过设定参数innodb_thread_sleep_delay来配置睡眠时间# 该值默认为0,在官方doc上,对于innodb_thread_concurrency的使用,也给出了一些建议:# (1) 如果一个工作负载中,并发用户线程的数量小于64,建议设置innodb_thread_concurrency=0# (2) 如果工作负载一直较为严重甚至偶尔达到顶峰,建议先设置innodb_thread_concurrency=128# ### 并通过不断的降低这个参数,96, 80, 64等等,直到发现能够提供最佳性能的线程数# innodb_thread_concurrency = 0# 强所有发生的死锁错误信息记录到error.log中,之前通过命令行只能查看最近一次死锁信息innodb_print_all_deadlocks = 1############################其他设置####################################[mysqldump]quickmax_allowed_packet = 128M[mysql]no-auto-rehash[myisamchk]key_buffer_size = 20Msort_buffer_size = 256kread_buffer = 2Mwrite_buffer = 2M[mysqlhotcopy]interactive-timeout[mysqld_safe]# 增加每个进程的可打开文件数量open-files-limit = 28192
提示
上述文件不建议全部复制使用,当需要哪块时单独复制是最好的,因为每台服务器的需求都不一样。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年05月17日 10时55分28秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
loadrunner创建测试脚本运行无响应 不记录脚本
2023-02-06
LoadRunner压力测试方法
2023-02-06
Loadrunner和JMeter、Locust三款性能测试工具全面对比
2023-02-06
LoadRunner回放出错
2023-02-06
Loadrunner在Java Vuser当中常用的一些Web函数
2023-02-06
loadRunner安装及使用步骤
2023-02-06
loadrunner录制时可以打开浏览器,加载不出网页
2023-02-06
LoadRunner性能测试基本步骤
2023-02-06
loadrunner手动生成脚本函数
2023-02-06
loadrunner支持https协议的操作方法-经验总结
2023-02-06
LoadRunner测试下载文件
2023-02-06
Loadrunner脚本编程(4)-数据类型操作和字符串操作
2023-02-06
LoadRunner运行中的mmdrv和mdrv
2023-02-06
load和DOMContenLoaded的区别
2023-02-06
Lobe-Chat Docker重启后注册选项自动启用?一键脚本部署后的解决方法
2023-02-06
Lobe-Chat无法使用英伟达DeepSeek模型的解决方法
2023-02-06
LobeChat 通过环境变量实现配置功能控制指南
2023-02-06
LobeChat如何通过URL链接分享配置参数教程
2023-02-06
LobeChat设置自动更新,告别手动更新烦恼
2023-02-06
LobeChat配置OPENAI_PROXY_URL返回空值,如何解决?
2023-02-06