首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >改变innodb_temporary的位置

改变innodb_temporary的位置
EN

Database Administration用户
提问于 2022-04-19 16:36:39
回答 2查看 381关注 0票数 1

我想更改ibtmp1存储在debian 11上MySQL8.0.25中的路径。我看到:

代码语言:javascript
复制
mysql> SELECT * FROM INFORMATION_SCHEMA.FILES WHERE TABLESPACE_NAME='innodb_temporary'\G
*************************** 1. row ***************************
             FILE_ID: 4294967293
             FILE_NAME: ./ibtmp1

我更改了mysqld.cnf

代码语言:javascript
复制
[mysqld]
innodb_tmpdir=/$newDir/
innodb_temporary=/$newDir/
innodb_temp_tablespaces_dir=/$newDir/
innodb_temp_data_file_path=/$newDir/

重新启动mysqld,但这并没有改变任何事情。同样适用于:

代码语言:javascript
复制
mysql> SELECT @@innodb_temp_data_file_path;
+------------------------------+
| @@innodb_temp_data_file_path |
+------------------------------+
| ibtmp1:12M:autoextend        |
+------------------------------+

只有当我更改init.d脚本时:

mysqld_safe --innodb-tmpdir=/$newDir/

我在mysql> SELECT @@innodb_tmpdir;中看到路径是设置的(不幸的是,这不会影响ibtmp1的路径。

我不确定是否正确读取了mysqld.cnf,但是/usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"显示其中一个文件是正确的。

有没有办法通过mysql语句来做到这一点?看起来怎么样?最简单的方法,就是在文件系统中建立一个符号链接,现在已经不起作用了。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2022-04-22 15:20:11

里克·詹姆斯( Rick )的回答让我意识到(为什么) conf文件没有被读取。所以我把/etc/mysql/mysql.conf.d/mysqld.cnf复制到了/etc/mysql/my.cnf上。那一条读起来很好。然后,我不得不定义(在my.cnf中):

代码语言:javascript
复制
[mysqld]
innodb_tmpdir=$yourNewTmpPath
innodb_temp_data_file_path=$yourNewTmpPath/ibtmp1:50M:autoextend:max:50G
innodb_temp_tablespaces_dir=$yourNewTmpPath
...

用新的临时目录替换$yourNewTmpPath。(根据需要采用innodb_temp_data_file_path参数(autoextend可能不需要50G ))。

重新启动mysqld

您可以评估这些设置是否由下列人员正确使用:

代码语言:javascript
复制
mysql> SELECT @@innodb_temp_data_file_path;
+----------------------------------------------------------+
| @@innodb_temp_data_file_path                             |
+----------------------------------------------------------+
| $yourNewTmpPath/ibtmp1:50M:autoextend:max:50G |
+----------------------------------------------------------+

现在我可以用... CONVERT TO CHARACTER SET utf8mb4;修改一个160 Now的表了。在我的NFS挂载上,它会生成一些临时的.nfs0000...文件,这些文件会不时地被移除并再次创建。我想他们一次最多只需要50 at左右。我还观察了mysqld的IO操作(使用iotop -oPa),这意味着写入操作的IO操作超过1TB,读取操作的IO操作也超过1TB。

因此,这里的关键是将配置文件复制到确实使用它的位置,并为它们使用适当的变量和值。

票数 0
EN

Database Administration用户

发布于 2022-04-19 18:47:19

代码语言:javascript
复制
mysqld --help --verbose

在第13行,它将说明配置文件在哪里。它可能不像你拼写的那样拼写。我的说

代码语言:javascript
复制
...
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf 
...
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/311116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档