gpt4 book ai didi

mysql - 加快从 MyISAM 到 InnoDB 的转换

转载 作者:IT老高 更新时间:2023-10-28 23:58:05 26 4
gpt4 key购买 nike

我有一个 MySQL 1.5 GB MyISAM 表(1.0 GB 数据,0.5 GB 索引)正在生产中,我即将转换为 InnoDB。

由于该表用于生产,我希望尽可能缩短停机时间。

我的问题:

  • 应该调整哪些 MySQL 配置选项以加快 ALTER TABLE table_name ENGINE=InnoDB;

  • 还可以使用哪些其他技巧来加快生产数据库表从 MyISAM 到 InnoDB 的转换?

最佳答案

  • 设置较大的 innodb_buffer_pool_size(2GB 或更多)
  • 使用 shell 命令预读旧的 myisam 数据/索引文件
  • 增加 innodb_log_file_size (256 MB)
  • 在 X 个并行线程中执行 alter table,其中 X 是服务器上 CPU 内核的数量
  • 仅用于转换的其他细微调整(innodb_doublewrite=0、innodb_flush_log_at_trx_commit=0)

将 innodb_buffer_pool_size 设置得尽可能高是加速 innodb 表创建的典型方法 - 您的数据集看起来可以放入 2GB 的 innodb 缓冲池中,因此任何体面的 64 位服务器都应该允许这样做。 alter table type=innodb 也比 dump+reimport 方案更快,并且易于并行运行。

还要确保您已将 innodb_log_file_size 从默认的 5Mb 增加到 128 或 256MB。小心点,它需要彻底关闭 + 删除旧的 ib_logfile*。

如果您的服务器有类似 8GB 的​​内存,并且您运行 64 位版本的 mysql,我建议您使用 2GB 的 innodb_buffer_pool,您甚至可以在关闭停机前预读旧的 MYD 和 MYI 文件,这样它们就会当真正的工作开始时,在操作系统的页面缓存中。

如果您还进行了一些小的调整,请记住,您需要在转换后撤消它们(另一个小的停机时间)以确保您的数据安全,但我怀疑它们对于这么小的数据集是否值得。

祝你好运。

关于mysql - 加快从 MyISAM 到 InnoDB 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2081823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com