mysql服务器内存耗尽,galera集群

aij0ehis  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(416)

我将php(laravel5.7)应用程序连接到galera集群支持的dbs集群。我每天晚上都运行cron job来清除数据库表中成千上万的日志数据。我跑了 Delete 语句根据时间戳范围删除表中的行。
我的删除操作看起来像

DB::delete('DELETE FROM incoming_logs WHERE created_at < DATE_SUB(NOW(), INTERVAL 1 DAY)');
DB::delete('DELETE FROM provisioning_logs WHERE created_at < DATE_SUB(NOW(), INTERVAL '.Config::get('app.keep_provisioning_logs') .' DAY)');

注意:这些是在laravel控制台命令和那些在laravel任务中调度的命令中定义的。
问题:每次运行cron作业后删除大量数据: Main memory 当我使用下面的命令手动清除缓存时,我得到 Main Memory 免费的。

sync; echo 1 > /proc/sys/vm/drop_caches

我需要知道为什么缓存没有被自动重新声明,或者为什么在cron作业之后我的内存耗尽,以及我面临的问题 too many connection mysql出错。
或者这仅仅是因为我的db服务器(负载均衡器下的总共3个db服务器,使用galena同步)实时同步,所以当我尝试使用cron job删除数千条记录时,得到该删除请求的服务器尝试删除并维护缓存以与其他db同步?我不知道发生了什么事。请帮我解决我的记忆力耗尽的问题。
我的架构:
一个负载均衡器(ha代理下有三个数据库)和galera集群,用于在这三个数据库之间同步数据。

41zrol4v

41zrol4v1#

你每晚都要删除一半的table?考虑每小时删除一小时的价值。
你有 INDEX(created_at) ? 这将有助于每小时的清洗,虽然也许不是每天清洗。
这项任务对我来说是一项极好的任务 PARTITIONing .
这里将讨论这些以及更多的技术。

相关问题