我想每天将特定数据库的数据库大小存储到一个表中,这将有助于了解一段时间内数据库的增长。
SELECT table_schema AS "Database", ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" FROM information_schema.TABLES where table_schema = 'testdb' GROUP BY table_schema;
我得到上述查询的输出,比如 10456.3。
我需要将这个数字插入到一个应该包含三列的表中。数据库名称、日期和数据库大小。
我怎样才能每天通过自动化来做到这一点?
如果您将它存储到您正在测量的同一个数据库中,您可以使用 MySQL 计划事件在特定时间运行查询。
一个例子是:
如果它是不同的数据库,则需要使用某种 shell 脚本。
请记住,我远非 Linux 专家(并忽略围绕
permissions
,passwords in scripts
等的讨论SSL
),您可以按照以下方式做一些事情:从远程数据库中获取大小值,并将其
should
加载到本地数据库中的表中。我刚刚使用:
用于对此进行测试,但您可能需要一个
decimal
,integer
,float
数据类型,具体取决于您返回的数据以及您需要它的准确性。这也不包括
dbname
ortime
字段。您可以使用timeVal TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
which 为您提供时间戳字段。数据库名称很棘手,因为你需要携带两个变量,而我的脚本(上面)只允许一个(如果你只查看一个数据库,你可以直接在查询中输入它/设置一个默认值) .