且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

高性能的MySQL(8)优化服务器配置一安全与稳定

更新时间:2021-08-26 04:43:05

在前面的章节已经介绍了一些选项,还有一些剩余的也很重要的选项,我们继续说明一下:


一、基本配置

tmp_table_size 和 max_heap_table_size

这2个设置控制使用Memory引擎的内存临时表能使用多大的内存。如果隐士内存临时表的大小超过这2个设置,将会被转换为磁盘临时表。隐士临时表是一种并非自己创建,而是服务器创建,由于保存执行中的查询的中间结果的表。

临时表***呆在内存里,但是如果它很大,实际上还是使用磁盘比较好,否则可能会内存溢出。

可以使用show status 来查看临时表使用频率。

高性能的MySQL(8)优化服务器配置一安全与稳定


max_connections

这个设置的作用,以保证服务器不会因为应用程序激增的链接而不堪重负。

thread_cache_size

线程缓存大小,可以观察Threads_connected状态变量找到一般情况下的最大和最小值。也可以观察Threads_created,如果这个值很大或者一直增大,告诉你可能需要调大thread_cache_size。查看threads_cached看有多少线程已经在缓存中了。

高性能的MySQL(8)优化服务器配置一安全与稳定


table_cache_size

这个应该设置的足够大,以避免总是需要重新打开和重新解析表的定义。可以通过观察open_tables的值的变化来检查该变量。如果看到opened_tables每秒的变化很大,那么table_cache的值可能不够大。


二、安全稳定配置

如果希望启用一些使服务器更安全和更可靠的设置,虽然会影响一些性能,但是有时候是有必要的,看看下面的配置:

expire_logs_days

二进制日志,可以让服务器在指定的天数之后清理旧的二进制日志,尽可能多的保留,当恢复的时候你会发现很有用。

max_allowed_packet

服务器发送或者接收包的最大值。

max_connect_errors

太多的连接错误,将会列入黑名单。

skip_name_resolve

打开的话,验证连接时基于主机名的帐号将会被禁用,只能使用IP地址来连接。

以下的选项可以控制复制行为,并且对防止从库出问题很有帮助:

read_only 

禁止么有特权的用户在从库做变更,只接受主库传输过来的变更,不接受从应用来的变更,强烈建议打开。

skip_slave_start

阻止MySQL试图自动启动复制。因为在不安全的崩溃或其他问题后,启动复制是不安全的,最后人工干预确认后,手动启动。

slave_net_timeout

控制从库发现跟主机的连接已经失败并且需要重连之前等待的时间。默认一个小时太长,设置1分钟或者更短。


三、InnoDB高级设置

对新版的InnoDB,有一些新的选项可以用,对服务器性能相当重要,也有安全和稳定的选项,如下所示:

innodb

非常重要,如果设置为force,只有在InnoDB可以启动的时候,服务器才会启动。如果InnoDB是默认的存储引擎,这一点是你期望的。整个服务器失败,强制你去检测错误,而不是以为服务器正常启动了。

innodb_autoinc_lock_mode

控制InnoDB如何生成自增主键值,高并发插入时自增主键会成为瓶颈,因为很多事务都在等待自增锁。详细用法参考手册把。

innodb_buffer_pool_instances

MySQL5.5以后的版本出现的,可以把缓冲池分为多段,但是目前还不广泛使用,Percona Server5.5版本已经可以用了,多缓冲区和更细粒度的锁。

innodb_io_capacity

告诉InnoDB服务器的I/O能力,根据服务器调整。

innodb_read_io_threads 和 innodb_write_io_threads

控制有多少后台线程可以被I/O操作使用。默认都是4,对大部分服务器足够了,除非并发很高。

innodb_strict_mode

这个设置让MySQL在某些条件下把警告改成抛错。

innodb_old_blocks_time

InnoDB有两段缓冲池LRU链表,设计的目的是防止换出长期使用很多次的页面。两段LRU链表将阻止此页取代很长一段时间内都需要用到的页面被放入“年轻(Young)"子链表,并且只在它被浏览了很多次后移动到“年老(Old)”子链表。

这个变量指定一个页面从LRU的“年轻”部分转移到“年老”部分之前必须经过的毫秒数,默认为0。






















本文转自shayang8851CTO博客,原文链接:http://blog.51cto.com/janephp/1321846,如需转载请自行联系原作者