背景
旧的数据库服务器是CentOS 7.9,已经停止维护更新,当初划分磁盘空间也不够,导致经常存储空间紧张,需要手动清理。
安装新的linux,并把mysql从8.0升级到了8.4。
问题
之前配置每天凌晨备份完数据库,会重启服务器,应用服务会自动重连。升级到8.4就会出现错误:
Host ‘192.168.0.1’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’
解决方案
初版
网上的解决方案
1、配置max_connect_errors,试了配置10000;没有效果,不再尝试;
2、mysql进入sql界面,执行sql: flush hosts;报错1064,查看8.4文档flush命令已经不再支持hosts参数;
3、mysqladmin命令行,执行: mysqladmin -u root -p flush-hosts;可行,但需要人工每天手动执行;
终版
仔细阅读官方文档(参考网址3)部分的说明"To flush the host cache, use any of these methods:",主要就是三种方案:
1、通过提供 SUPER 权限,你可以更改 host_cache_size 系统变量的值。
2、通过赋予 DROP 权限,截断host_cache 表。你可以使用 TRUNCATE TABLE 语句来完成。
3、使用 mysqladmin -u username -p password flush-hosts; 清除 host_cache 表。根据以上方案,考虑从2入手,走ETL方式。