【问题标题】:MySQL how to change innodb-log-file-sizeMySQL如何更改innodb-log-file-size
【发布时间】:2013-11-23 13:28:38
【问题描述】:

根据 mysql 文档 (Docs),为了在步骤 #4 中更改 innodb-log-file-size,我需要删除二进制日志。我对此有一些担忧和疑问。我当前的 innodb-log-file-size 值为 5MB。所以我假设我的二进制日志文件是每个 5MB(最大)。当我查看 bin-log 目录时,我有一堆文件名,如“mysql-bin.000001”、“mysql-bin.000002”等。我相信这些是二进制日志文件,但它们都是大于 5MB。有 2 个 5 MB 的文件(ib_logfile0、ib_logfile1)。所以我的问题是

  1. 哪些文件是我的“二进制日志”?
  2. 我需要删除哪些?

提前致谢

【问题讨论】:

    标签: mysql innodb


    【解决方案1】:

    InnoDB 日志位于 ib_logfile0 和 ib_logfile1 中。这些是innodb_log_file_size 大小的文件。

    要调整 InnoDB 日志的大小,您首先需要彻底关闭 mysqld。这将确保日志中的任何更改都已刷新到您的表空间中。干净关机很重要,因为如果您不执行此步骤,您很可能会丢失数据。

    在您彻底关闭 mysqld 之后,ib_logfiles 是多余的。你必须rm他们才能改变他们的大小。

    当您重新启动 mysqld 时,InnoDB 注意到文件丢失,并根据 my.cnf 文件中的 innodb_log_file_size 变量以新大小创建新文件。因此,请确保在重新启动之前编辑该文件,否则它只会创建新的 5MB 文件。

    MySQL 5.6 使这个过程更简单一些。您不需要rm 日志文件,但您确实需要重新启动 mysqld 以使新的日志文件大小生效。它在 5.6 中的工作方式是,如果这些文件的大小与配置变量不同,MySQL 会自动再次干净重启(以确保文件不包含任何未刷新的更改),然后 InnoDB 调整文件大小在最后一次启动时。

    其他文件(mysql-bin.000001等)是二进制日志。这些可能会增长到max_binlog_size(默认为1GB),但二进制日志的大小会有所不同,因为每当您重新启动mysqld或执行FLUSH LOGS时都会创建新日志。无论如何,它们与 InnoDB 日志无关。

    PS:您可能会喜欢这篇文章:How to calculate a good InnoDB log file size

    【讨论】:

    • 谢谢比尔 - 我已经阅读了那篇文章,我已经“准备好”改变尺寸了。我只是想确保在更改这些内容之前了解所有涉及的部分。 innodb_log_file_size 在 master 和 slave 上是否相同至关重要?
    • 不,没有严格要求主从上的日志文件大小相同。但它们处理的传入更改速率相同,因此它们的大小相似是有道理的。
    【解决方案2】:

    根据官方文档,它适用于 MySQL 5.7.30 要更改 InnoDB 重做日志文件的数量或大小,请执行以下步骤:

    • 停止 MySQL 服务器并确保它在没有错误的情况下关闭。
    • 编辑 my.cnf 以更改日志文件配置。要更改日志文件大小,请配置 innodb_log_file_size。要增加日志文件的数量,请配置 innodb_log_files_in_group。
    • 再次启动 MySQL 服务器。
    • 如果 InnoDB 检测到 innodb_log_file_size 与重做日志文件大小不同,它会写入日志检查点,关闭并删除旧日志文件,以请求的大小创建新日志文件,然后打开新日志文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-26
      • 2015-02-14
      • 2023-01-19
      • 2019-10-06
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 2013-04-25
      相关资源
      最近更新 更多