my.cnf配置详解

my.cnf配置详解

# my.cnf的地址为: /etc/下

client端

# client --->mysql客户端配置
[client]
# 开放端口
port = 3306

# 指定mysql.sock套接字文件的位置
socket = [路径]
# Mysql有两种连接方式:
# (1)TCP/IP
# (2)socket
# 对mysql.sock来说,其作用是mysql客户端程序mysql与mysql服务器端程序mysqlserver处于同一台机器,发起本地连接时可用。

# 指定默认字符集
default-character-set = utf8

[mysql]端

# 开启 tab 补全;
auto-rehash

# 不开启 tab 不全;
no-auto-rehash

# 指定默认字符集
default-character-set = utf8

[mysqld]端

# 监听指定ip主机的请求, 0.0.0.0为任意主机,本机为127.0.0.1;
bind-address = 0.0.0.0

# 指定开放端口
port = 3306

# 指定Mysql安装的绝对路径;
basedir = /usr/local/mysql

# 指定Mysql数据存放的绝对路径;
datadir = /data/mysqldata

# 指定mysql.sock套接字文件的位置
socket  = /data/mysqldata/mysql.sock

# 指定默认字符集
character-set-server = utf8

# 当MySQL实例启动时,会将自己的进程ID写入一个文件中——该文件即为pid文件。该文件可由参数pid_file控制,默认位于数据库目录下,文件名为[主机名].pid
pid = /data/mysqldata/10-27-12-131.pid

# table_cache主要用于设置table高速缓存的数量。由于每个客户端连接都会至少访问一个表,因此此参数的值与max_connections有关。
# 你可以通过命令show variables like '%open%'; 查看open_files_limit参数,大量使用MyISAM的环境里,应该保证open_files_limit表类型至少是table_cache的二到三倍,调到512-1024最佳。
table_open_cache=1024

# ---------------------------------------
#    mysql开启慢查询日志slow_query_log
# ---------------------------------------

# 指定满日志存放的形式 file/table,如果是table则慢查询信息会保存到mysql库下的slow_log表中, 默认值是None
log_output=file

# 用于指定是否打开慢查询日志 
slow_query_log = 1

# 超过多少秒的查询就写入日志 
long_query_time = 1

# 定义慢查询日志路径 
slow_query_log_file = /data/mysqllogs/slow/mysql.slow.log

# ---------------------------------------
#               查询缓存配置
# ---------------------------------------

# 查询的缓存大小设置;
query_cache_size = 64M

# 指定单个查询可以使用的缓冲区的大小,一般默认值是1M;
query_cache_limit = 4M

# 设置缓存的类型
# 设置成0,表示禁用缓存;
# 设置成1,表示缓存所有结果;
# 设置成2,表示只缓存在select语句中通过SQL_CACHE指定需要缓存的查询;
query_cache_type = 1

# 用于指定索引缓冲区的大小;
key_buffer_size = 2048M
# ---------------------------------------

# 设置一次消息传输的最大值
max_allowed_packet = 64M

# 通过增加该值的大小可以提高查询中使用“group by”和“order by”的性能;
sort_buffer_size = 4M

# 设置服务器读缓冲区的大小;
read_buffer_size = 4M

# 设置服务器随机读取缓冲区的大小;
read_rnd_buffer_size = 8M

#表示是本机的序号为1,唯一
server-id = 1


# ---------------------------------------
#           skip options 相关选项
# ---------------------------------------

# 禁止 MySQL 对外部连接进行 DNS 解析,使用这一选项可以消除 MySQL 进行 DNS 解析的时间。
# 但需要注意,如果开启该选项,则所有远程主机连接授权都要使用 IP 地址方式,否则 MySQL 将无法正常处理连接请求!
skip-name-resolve

# 不能使用连接文件,多个客户可能会访问同一个数据库,因此这防止外部客户锁定 MySQL 服务器。 该选项默认开启
skip-symbolic-links

# 不使用系统锁定,要使用 myisamchk,必须关闭服务器 ,避免 MySQL的外部锁定,减少出错几率增强稳定性。
skip-external-locking

# 启动 mysql,不启动复制
skip-slave-start

# 开启该选项可以彻底关闭 MySQL 的 TCP/IP 连接方式,
# 如果 WEB 服务器是以远程连接的方式访问 MySQL 数据库服务器则不要开启该选项!否则将无法正常连接! 如果所有的进程都是在同一台服务器连接到本地的 mysqld, 这样设置将是增强安全的方法
skip-networking


# ---------------------------------------
#             系统资源相关选项
# ---------------------------------------

# 接受队列,对于没建立 tcp 连接的请求队列放入缓存中,队列大小为 back_log,受限制与 OS 参数,试图设定 back_log 高于你的操作系统的限制将是无效的。默认值为 50。对于 Linux 系统推荐设置为小于512的整数。如果系统在一个短时间内有很多连接,则需要增大该参数的值
back_log = 50

# 指定MySQL允许的最大连接进程数。如果在访问数据库时经常出现"Too Many Connections"的错误提 示,则需要增大该参数值。
max_connections = 1000

# 如果某个用户发起的连接 error 超过该数值,则该用户的下次连接将被阻塞,直到管理员执行 flush hosts ; 命令或者服务重启, 防止黑客 , 非法的密码以及其他在链接时的错误会增加此值
max_connect_errors = 10000

# MySQL打开的文件描述符限制,默认最小1024;当open_files_limit没有被配置的时候,比较max_connections*5和ulimit-n的值,哪个大用哪个,当open_file_limit被配置的时候,比较open_files_limit和max_connections*5的值,哪个大用哪个。
open_files_limit = 10240 

# 连接超时之前的最大秒数,在 Linux 平台上,该超时也用作等待服务器首次回应的时间
connect-timeout = 10

# 等待关闭连接的时间
wait-timeout = 28800

# 关闭连接之前,允许 interactive_timeout(取代了wait_timeout)秒的不活动时间。客户端的会话 wait_timeout 变量被设为会话interactive_timeout 变量的值。如果前端程序采用短连接,建议缩短这2个值, 如果前端程序采用长连接,可直接注释掉这两个选项,默认配置(8小时) 
interactive-timeout = 28800

# 从服务器也能够处理网络连接中断。但是,只有从服务器超过slave_net_timeout 秒没有从主服务器收到数据才通知网络中断
slave-net-timeout = 600

# 从服务器读取信息的超时
net_read_timeout = 30 

#从服务器写入信息的超时
net_write_timeout = 60 

# 包消息缓冲区初始化为 net_buffer_length 字节,但需要时可以增长到 max_allowed_packet 字节
net_buffer_length = 16384

# 服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小(当与大的BLOB 字段一起工作时相当必要), 每个连接独立的大小.大小动态增加。 设置最大包,限制server接受的数据包大小,避免超长SQL的执行有问题 默认值为16M,当MySQL客户端或mysqld服务器收到大于 max_allowed_packet 字节的信息包时,将发出“信息包过大”错误,并关闭连接。对于某些客户端,如果通信信息包过大,在执行查询期间,可能会遇到“丢失与 MySQL 服务器的连接”错误。默认值 16M。
max_allowed_packet = 64M

# #此允许应用程序给予线程系统一个提示在同一时间给予渴望被运行的线程的数量.该参数取值为服务器逻辑CPU数量×2,在本例中,服务器有 2 颗物理CPU,而每颗物理CPU又支持H.T超线程,
#所以实际取值为 4 × 2 = 8.设置 thread_concurrency的值的正确与否, 对 mysql 的性能影响很大, 在多个 cpu(或多核)的情况下,错误设置了thread_concurrency 的值, 会导致 mysql 不能充分利用多 cpu(或多核),出现同一时刻只能一个 cpu(或核)在工作的情况。 thread_concurrency 应设为 CPU 核数的 2 倍.比如有一个双核的 CPU, 那么 thread_concurrency 的应该为 4; 2 个双核的 cpu,thread_concurrency 的值应为 8,属重点优化参数
thread_concurrency = 8

# 临时表的最大大小,如果超过该值,则结果放到磁盘中,此限制是针对单个表的,而不是总和.
tmp_table_size = 512M

# 我们在 cache 中保留多少线程用于重用.当一个客户端断开连接后,如果 cache 中的线程还少于 thread_cache_size,则客户端线程被放入 cache 中.这可以在你需要大量新连接的时候极大的减少线程创建的开销(一般来说如果你有好的线程模型的话,
# 这不会有明显的性能提升.)服务器线程缓存这个值表示可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,那么这个线程将被重新创建,
# 如果有很多新的线程,增加这个值可以改善系统性能.通过比较 Connections 和 Threads_created 状态的变量,可以看到这个变量的作用
# 根据物理内存设置规则如下:
# 1G  —> 8
# 2G  —> 16
# 3G  —> 32
# 大于3G  —> 64
thread_cache_size = 20

# ---------------------------------------
#             log相关选项
# ---------------------------------------

# 打开二进制日志功能.在复制(replication)配置中,作为 MASTER 主服务器必须打开此项.如果你需要从你最后的备份中做基于时间点的恢复,你也同样需要二进制日志.这些路径相对于 datadir
log-bin=/data/mysqllogs/bin-log/mysql-bin

# 错误日志路径
log-error =  /usr/local/mysql/log/mysql.err 

binlog_format=mixed

# MyISAM 设置恢复表之时使用的缓冲区的尺寸,当在REPAIR TABLE 或用 CREATE INDEX 创建索引或 ALTER TABLE 过程中排序 MyISAM 索引分配的缓冲区
myisam_sort_buffer_size = 64M

[mysqldump]

# 支持较大数据库的转储,在导出非常巨大的表时需要此项。增加该变量的值十分安全,这
# 是因为仅当需要时才会分配额外内存。例如,仅当你发出长查询或mysqld必须返回大的
# 结果行时mysqld才会分配更多内存。该变量之所以取较小默认值是一种预防措施,以捕获
# 客户端和服务器之间的错误信息包,并确保不会因偶然使用大的信息包而导致内存溢出。 
# 如果你正是用大的BLOB值,而且未为mysqld授予为处理查询而访问足够内存的权限,也
# 会遇到与大信息包有关的奇怪问题。如果怀疑出现了该情况,请尝试在mysqld_safe脚本
# 开始增加ulimit -d 256000,并重启mysqld。
quick

【找不到的参数可以参考】 https://www.cnblogs.com/LiuChang-blog/p/10468563.html
在此引用这位大佬的博客…

最强办法,首先知道错误…

解决一切mysql启动不了的错误头绪
# 在配置文件/etc/my.cnf添加错误日志参数,一切问题都解决 
[mysqld_safe]
log-error = /data/mysql/logs/error.log 

然后百度?

发布了26 篇原创文章 · 获赞 2 · 访问量 1415

猜你喜欢

转载自blog.csdn.net/weixin_43633797/article/details/102524499