如果要做成即允许mysql里允许使用主机名来分配客户端连接权限,又要做到不要让mysql去做dns解析,可以在mysql所在主机端的/etc/hosts文件中写上客户端的主机名,因为当客户端连接连上来时,mysql反向查找客户端连接时的域名解析的步骤是:首先查找 /etc/hosts 文件,搜索域名和IP的对应关系 。但是这样做也有一个问题,那就是如果你有多个客户端多个mysql主从关系,哪到你要把mysql做成一个dns解析器吗?因此推荐设成1
如果不配的后果:
mysql server每一次会对客户端连接使用反向dns解析,经常会出现客户端连上后有timeout现象 。配置实例:
skip_name_resolve=17)max_connections
推荐设置:
20,000作用:
最大连接数,以微品会:前端3万的tps并发,假设redis命中失效50%(这是灾难),那么后端mysql单个主或从开启连接数为:20,000,我们公司在前端并发曾达到过6万,80%被waf、vanish、缓存挡掉,落在db上的qps最高一次为20,000连接,再按照mysql官方,max_connections值受系统os最大打开连接数限制,因此我们需要做以下2步操作:
1)在 /etc/security/limits.conf 底部增加2行
mysql hard nofile 65535mysql soft nofile 655352)在/usr/lib/systemd/system/mysqld.service(视如何安装mysql所决定,用编译安装和yum安装会产生path路径不同 。)文件最后添加:LimitNOFILE=65535LimitNPROC=65535$ systemctl daemon-reload$ systemctl restart mysqld.service如不生效重服务器 。如果不配的后果:
默认只有150配置实例:
max_connections = 20,0008)max_connect_errors
推荐设置:
生产上设10作用:
开发测试上使用默认-100
生产上开启成10次,开发测试上使用默认即不设 。
max_connect_errors是一个MySQL中与安全有关的计数器值,它负责阻止过多尝试失败的客户端以防止暴力破解密码的情况 。如果需要设置此数值,手动添加 。当此值设置为10时,意味着如果某一客户端尝试连接此MySQL服务器,但是失败(如密码错误等等)10次,则MySQL会无条件强制阻止此客户端连接 。相关的登录错误信息会记录到performance_schema.host_cache表中 。如果希望重置此计数器的值,则必须重启MySQL服务器或者执行
Mysql> FLUSH HOSTS;1 Mysql> FLUSH HOSTS;
当这一客户端成功连接一次MySQL服务器后,针对此客户端的max_connect_errors会清零 。可以在防火墙上做策略限制某些ip的远程连接 。
如果不配的后果:
默认为100配置实例:
max_connect_errors =109)innodb_flush_log_at_trx_commit
推荐设置:
2作用:
(核心交易系统设置为1,默认为1,其他2或者0),
0代表:log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行 。该模式下在事务提交的时候,不会主动触发写入磁盘的操作 。
1代表:每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去,该模式为系统默认(因此会保留每一份redo日志)
2代表:每次事务提交时MySQL都会把log buffer的数据写入log file,但是flush(刷到磁盘)操作并不会同时进行 。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作 。该模式速度较快,也比0安全,只有在操作系统崩溃或者系统断电的情况下,上一秒钟所有事务数据才可能丢失 。
除非你用的是小型机或者是超大规模mysql集群一类如:游戏行业,那么需要保留每一秒的事务,否则请设成2,要不然会严重影响系统性能 。这个参数是5.6所没有的 。
如果不配的后果:
默认为1,影响系统写性能 。配置实例:
innodb_flush_log_at_trx_commit=210)transaction_isolation
推荐设置:
READ-COMMITTED作用:
- 此参数直接决定了mysql的性能,oracle中的事务默认级别就是read-commited,而mysql的默认级别是:repeatable-read,它利用自身独有的Gap Lock解决了"幻读" 。但也因为Gap Lock的缘故,相比于READ-COMMITTED级别的Record Lock,REPEATABLE-READ的事务并发插入性能受到很大的限制 。离级别的选择取决于实际的业务需求(安全与性能的权衡),如果不是金融、电信等事务级别要求很高的业务,完全可以设置成transaction_isolation=READ-COMMITTED 。
推荐阅读
- 淘宝店铺好评率如何快速提升 淘宝好评率低于多少有影响
- 高性能网络通信框架 HP-Socket v5.7.2
- 多云架构的3个常见性能挑战和解决方案
- 2分钟学会,提升你气质的20个小习惯
- 淘宝店的物流服务怎么提升 如何提高物流时效
- 淘宝新店铺怎么刷销量 淘宝店铺怎么提升流量和销量
- 在桌面上创建一个关机快捷方式,只需一条命令,关机速度大幅提升
- 月经期间女性能做瑜伽吗?
- 淘宝每天转化率百分之多少最好 淘宝怎么提升转化率
- 淘宝客单价高的产品怎么刷 淘宝货单价怎么提升
