Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL服务器内存耗尽,Galera群集_Mysql_Linux_Laravel_Memory Management_Galera - Fatal编程技术网

MySQL服务器内存耗尽,Galera群集

MySQL服务器内存耗尽,Galera群集,mysql,linux,laravel,memory-management,galera,Mysql,Linux,Laravel,Memory Management,Galera,我将PHP(Laravel 5.7)应用程序连接到Galera cluster支持的DBs集群。我每天晚上运行cron作业来清除数据库表中成千上万的日志数据。我运行MySQL的Delete语句,根据时间戳范围删除表中的行 我的删除操作看起来像 DB::delete('DELETE FROM incoming_logs WHERE created_at < DATE_SUB(NOW(), INTERVAL 1 DAY)'); DB::delete('DELETE FROM provision

我将PHP(Laravel 5.7)应用程序连接到Galera cluster支持的DBs集群。我每天晚上运行cron作业来清除数据库表中成千上万的日志数据。我运行MySQL的
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)');
我需要知道为什么缓存没有被自动重新声明,或者为什么在cron作业之后我的内存耗尽,以及我在MySQL上遇到了连接太多的问题

或者这仅仅是因为我的数据库服务器(负载均衡器下总共3个数据库服务器并使用galena进行同步)实时同步,所以当我尝试使用cron作业删除数千条记录时,收到删除请求的服务器尝试删除并维护缓存以与其他数据库同步?我不知道发生了什么事。请帮我解决我的记忆最大化问题

我的架构:

一个负载平衡器(HA代理下有三个数据库)和galera cluster来同步这三个数据库之间的数据。

您每晚删除一半的表?考虑每小时删除一小时的值。

您是否有索引(创建于)?这将有助于每小时清洗,尽管可能不是每天清洗

对于
分区
,此任务是一个非常好的任务


这些,还有更多的技术,

是的,我可以每小时删除一次,但问题是一小时内会删除数千条记录,当我启动delete语句时,一个db会通过HA代理接收该请求,该db会缓存这些请求,并尝试与集群上的其他db建立连接,以最大化内存,并在sql问题上为我提供最大连接。谢谢你的链接,让我试试所有的可能性then@webDev-每分钟删除一次怎么样?好的,让我先每小时删除一次,看看有多少死锁问题。谢谢让我继续发帖吧。我想如果我能够实现你所发链接上讨论的所有技术,我的问题就会解决。非常感谢你的链接。当我完成文档中提到的所有工作时,我会将此标记为答案。@webDev-至于Galera为什么会出现这种问题-我认为答案是,一次完成较小的工作块会更好。(因此,我的答案是。)
sync; echo 1 > /proc/sys/vm/drop_caches