我使用以下命令备份一些普通数据库:
mysqldump --host=host --user=user --password=passwd --result-file=result.sql -R --single-transaction database_name
Run Code Online (Sandbox Code Playgroud)
我的问题是:我还需要转储“mysql”数据库吗?请注意,在“恢复”它们之后,我将为每个数据库创建新用户。所以我不需要用户信息的“mysql”数据库。
谢谢
在启动时,mysql 会使用一些内存。
一些内存是为“key_buffer”和“innodb_buffer_pool_size”(以及其他东西)预先分配的。
是否可以确定预先分配了多少内存(用于数据)以及已使用了多少内存?
谢谢
更新:
让我举个例子来解释我想问什么。在我启动 mysql 服务器后,它使用一些内存作为“密钥缓冲区”的一部分。比如说,我设置了 key_buffer=1G。可能在启动时,mysql 服务器预先分配了 200M 作为“密钥缓冲区”。然后当用户开始对该服务器进行查询时。服务器只能获得额外的 800M 作为“密钥缓冲区”。200 是我选择的随机数。显然除了 key_buffer 之外,还有其他东西(例如 innnodb buffer )我想知道的是确切的大小或计算它的方式。
希望我已经解释清楚了。
我abc在 mysql 服务器中有一个数据库。它只有一张名为test. test使用 innodb 引擎,我已经设置innodb_file_per_table为 true。
运行查询后delete from abc.test,我想计算abc. 这是我使用的查询:
SELECT
table_schema "name",
sum( IF(engine = "MyISAM", data_length + index_length - data_free,
data_length + index_length)) "size"
FROM information_schema.TABLES
where table_schema like "abc";
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我发现数据库大小根本没有减少,但是“测试”中的数据却不见了。
我做过很多次这种测试,这种奇怪的行为有时会发生。
我正在使用 percona mysql server 5.5.29-rel29.4.
谁能告诉我出了什么问题?
更新:
实际上,我使用另一个线程定期检查数据库大小。