我在 MySQL 服务器中遇到了脏页刷新问题。这会占用大量 CPU 资源,并且我的站点由于服务器中剩余的资源不足而关闭。我在数据库中有 1000 万条记录,而且还会进一步增长。我的表在 innodb 中运行,并且由于其基于事务的站点,我需要 innodb。迁移到 Percona 服务器会消除我的脏页刷新问题。一般来说,迁移或坚持使用 MySQL 更好吗?
一旦我移动到 percona,如果我想恢复到 Mysql,我可以将备份从 percona 恢复到 mysql 吗?
Percona Server 对刷新有很多改进。但是在这样一个小型数据库上,很可能出现问题,例如缓冲池和日志文件大小为默认值,而不是为生产工作负载配置。我同意其他发帖者的观点,即您需要先衡量和理解问题,然后再尝试一些东西,看看它是否能解决问题。但是,我不同意将迁移到 Percona Server 视为一项冒险且耗时的举动。您可以简单地将 /usr/sbin/mysqld 替换为您从 Percona Server 的 tarball 中提取的文件,如果您不喜欢它,请将旧的二进制文件放回去。Percona Server 只是带有一些非破坏性改进的 MySQL,您可以确信切换到/从它将正常工作。(顺便说一下,我为 Percona 工作。)
Percona Server 确实比“vanilla”mysql 提供了很多性能优势。它具有一些专门为提高刷新性能而设计的功能,尤其是在 SSD 服务器上。
如果 Percona Server 不适合您,您可以回滚到正常的 mysql。有一些默认情况下未启用的“额外”功能会破坏向后兼容性。只是不要改变那些(记录在 Percona Server 文档中),你会没事的。
我的公司在高端 SSD 服务器上使用 Percona Server 5.5 和 XtraDB,我们在这方面的经验非常丰富。
MariaDB 或 Percona Server 也会发生脏页刷新。您必须了解为什么以及何时会出现脏页刷新峰值。通常一个太小的 InnoDB 日志文件大小是问题。你有没有检查过这个。一个更高级的主题是 MySQL 的刷新率(默认限制为 200 页/秒)。但是为此,您需要很好地测量您的系统......
请执行下列操作:
但老实说,如果您不想做这些事情,请考虑寻找另一种解决方法。也许有一种方法可以修复您的应用程序以存储更少的数据,减少修改数据的频率等。
也许您可以添加更强大的硬件?
1000 万条记录绝对是很小的,即使是最小的服务器(比如 16G 内存)也应该能够将整个数据库保存在内存中。所以除非你做大量的更新,
你能找到一种风险较小的方法吗?