MySQL 服务器最大化内存,Galera 集群

标签 mysql linux laravel memory-management galera

我将 PHP (Laravel 5.7) 应用程序连接到由 Galera 集群提供支持的数据库集群。我每晚都在运行 cron 作业以清除数据库表中成千上万的日志数据。我跑 Delete MySQL根据时间戳范围删除表中行的语句。

我的删除操作看起来像

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 错误。

或者这仅仅是因为我的数据库服务器(总共 3 个数据库服务器 在负载平衡器下并使用方铅矿同步)实时同步,所以当我尝试使用 cron 作业删除数千条记录时,服务器获取删除请求尝试删除和维护缓存以与其他数据库同步?我不确定发生了什么。请帮助我解决我的内存最大化问题。

我的架构:
一个负载均衡器(HA 代理下有三个数据库)和 galera 集群在这三个数据库之间同步数据。

最佳答案

你每晚都要删除一半的表?考虑每小时删除一个小时的值(value)。

你有 INDEX(created_at) 吗?这将有助于每小时清除一次,但可能不会每天清除一次。

此任务非常适合PARTITIONing

讨论了这些以及更多技术 here .

关于MySQL 服务器最大化内存,Galera 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53855998/

相关文章:

linux - 在 Amazon Linux 上获取或安装 HAProxy 1.6(EPEL 中只有 1.5)

linux - 如何连接到已注册的节点 (Erlang) 并从另一个 Erlang 应用程序使用它

php - Laravel SQL 按 WHERE IN Group By 更新行

php - 拉维尔 : Eager loading pivot table and sorting on pivot table field

c# - 在 64 位 Linux 环境中使用嵌入式 firebird 获取 Mono

mysql - 将列值放入 mysql 中的单个变量的语法?

php - openssl 扩展丢失(Composer 安装 openSUSE)

php - 如何在 Laravel 中将查询写为原始查询?

mysql - 如何使用 INNER JOIN 在 UPDATE 上多次添加值?

php - 选择时间戳早于