23

我在 MySQL 服务器中遇到了脏页刷新问题。这会占用大量 CPU 资源,并且我的站点由于服务器中剩余的资源不足而关闭。我在数据库中有 1000 万条记录,而且还会进一步增长。我的表在 innodb 中运行,并且由于其基于事务的站点,我需要 innodb。迁移到 Percona 服务器会消除我的脏页刷新问题。一般来说,迁移或坚持使用 MySQL 更好吗?

一旦我移动到 percona,如果我想恢复到 Mysql,我可以将备份从 percona 恢复到 mysql 吗?

4

4 回答 4

30

Percona Server 对刷新有很多改进。但是在这样一个小型数据库上,很可能出现问题,例如缓冲池和日志文件大小为默认值,而不是为生产工作负载配置。我同意其他发帖者的观点,即您需要先衡量和理解问题,然后再尝试一些东西,看看它是否能解决问题。但是,我不同意将迁移到 Percona Server 视为一项冒险且耗时的举动。您可以简单地将 /usr/sbin/mysqld 替换为您从 Percona Server 的 tarball 中提取的文件,如果您不喜欢它,请将旧的二进制文件放回去。Percona Server 只是带有一些非破坏性改进的 MySQL,您可以确信切换到/从它将正常工作。(顺便说一下,我为 Percona 工作。)

于 2011-11-02T13:57:47.593 回答
5

Percona Server 确实比“vanilla”mysql 提供了很多性能优势。它具有一些专门为提高刷新性能而设计的功能,尤其是在 SSD 服务器上。

如果 Percona Server 不适合您,您可以回滚到正常的 mysql。有一些默认情况下未启用的“额外”功能会破坏向后兼容性。只是不要改变那些(记录在 Percona Server 文档中),你会没事的。

我的公司在高端 SSD 服务器上使用 Percona Server 5.5 和 XtraDB,我们在这方面的经验非常丰富。

于 2011-11-02T00:23:59.073 回答
0

MariaDB 或 Percona Server 也会发生脏页刷新。您必须了解为什么以及何时会出现脏页刷新峰值。通常一个太小的 InnoDB 日志文件大小是问题。你有没有检查过这个。一个更高级的主题是 MySQL 的刷新率(默认限制为 200 页/秒)。但是为此,您需要很好地测量您的系统......

于 2011-11-02T07:31:08.060 回答
0

请执行下列操作:

  1. 在非生产硬件上重现性能问题,但在您的实验室中重现生产级硬件
  2. 升级到 Percona 服务器,或进行其他更改,并测量性能以确定它是否修复它。
  3. 假设您的结果很好,对您的应用程序执行大规模功能回归测试,以检查迁移到 Percona 服务器时是否没有引入回归。
  4. 对您的应用程序执行浸泡和压力测试 - 在您的非生产系统上使用生产规模的数据(或更大)。
  5. 测试回滚计划,验证是否真的可以成功回滚到 MySQL
  6. 如果您对以上所有的结果都非常满意,那么您可以计划发布到生产环境。

但老实说,如果您不想做这些事情,请考虑寻找另一种解决方法。也许有一种方法可以修复您的应用程序以存储更少的数据,减少修改数据的频率等。

也许您可以添加更强大的硬件?

1000 万条记录绝对是很小的,即使是最小的服务器(比如 16G 内存)也应该能够将整个数据库保存在内存中。所以除非你做大量的更新,

你能找到一种风险较小的方法吗?

于 2011-11-02T07:38:15.397 回答