暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL5.7.38初始化参数datadir引发的相关问题

IT那活儿 2022-12-17
896
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

MySQL5.7.38初始化参数datadir引发的相关问题

1. datadir参数用于数据库初始化时指定数据文件存放位置。log_error指定错误日志名及其存放位置。
初始化测试,datadir=/data,log_error=/data/error.log,初始化成功并自动创建了/data文件夹。/data/error.log记录初始化生成的临时文件。
日常生产环境中,需要将日志与数据分开文件夹保存,有利于日常运维管理。
示例测试datadir=/data,log_error=/logs/error.log。
提示错误Could not open file,实际情况是/logs文件夹不存在,创建/logs文件夹重新初始化。初始化成功并在error.log中生产随机密码。
综上所述,初始化会自动生成数据目录,配置文件中指定日志文件存放位置不会自动生成,需要在初始化之前提前创建好。
2. 接下来说一下遇到过的一次特殊情况。将日志存放在数据目录下的文件夹中。
示例测试datadir=/data,log_error=/data/logs/error.log
经过了上一次的测试我们知道了日志存放位置需要存在,否则初始化将失败。创建/data/logs/目录之后在初始化看看会发生什么。
初始化失败,这是因为初始化时需要数据目录为空。查看官方文档,从MySQL 5.7.11开始,如果每个条目的名称都以句点(.)开头或使用--ignore-db-dir选项命名,则允许现有数据目录为非空。下面我们来测试一下。
将/data/logs改为以(.)开头的隐藏文件,修改datadir地址为/logs,查看初始化结果。
初始化成功,并且在/logs目录下生成错误日志。这说明数据文件下除了以(.)开头的隐藏文件之外不能有其他内容。
--ignore-db-dir选项自MySQL5.7.16以来一直被弃用,所以这种方法也不适用。
经笔者验证一个方法,初始化成功之后修改配置文件日志文件位置如log_error    =/data/logs/error.log,将初始化后的/logs/error.log移动到/data目录下,启动MySQL服务不会报错,最后测试配置文件中日志所在位置与实际位置相符就不会报错。可以在新建数据库的时候采用此方法来修改日志文件位置。
综上所述,MySQL初始化时数据目录下只能放以(.)开头的隐藏文件,存放日志文件的目录必须存在。


本文作者:何中鑫(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论