资讯专栏INFORMATION COLUMN

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

IT那活儿 / 1049人阅读
MySQL5.7.38初始化参数datadir引发的相关问题
点击上方“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那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129115.html

相关文章

  • 剥开比原看代码01:始化时生成配置文件在哪儿

    摘要:所以这个文章系列叫作剥开比原看代码。所以我的问题是比原初始化时,产生了什么样的配置文件,放在了哪个目录下下面我将结合源代码,来回答这个问题。将用来确认数据目录是有效的,并且将根据传入的不同,来生成不同的内容写入到配置文件中。 作者:freewind 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee...

    felix0913 评论0 收藏0
  • Python标准库---17、内置异常

    摘要:关联值通常会作为参数被传递给异常类的构造器。所有内置异常的基类。此异常仅用于非限定名称。由内置函数和的方法所引发,用来表示该迭代器不能产生下一项。当一个或函数返回时,将引发一个新的实例,函数返回的值将被用作异常构造器的形参。 上一篇文章:Python标准库---16、内置类型:上下文管理器类型、其他、特殊属性下一篇文章:Python标准库---18、文本处理服务:string 常见的字...

    mylxsw 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<