我在MySQL服务器上遇到了脏页刷新问题。这占用了大量的CPU资源,由于服务器剩余资源不足,导致我的网站变得不可用。我数据库中有1000万条记录,并且它将进一步增长。我的表正在运行innodb,并且由于它是基于事务的站点,所以我需要它。迁移到Percona服务器是否会消除我的脏页刷新问题?一般来说,是迁移好还是坚持使用MySQL更好?
一旦我转移到percona,如果我想恢复到Mysql,我能否从percona恢复备份到mysql?
Percona Server 有许多改进的刷新功能。但在这么小的数据库中,很可能出现问题,比如缓冲池和日志文件大小未配置为生产工作负载而是维持默认值。我同意其他发帖者的看法,在尝试解决问题之前,您需要测量并了解问题。然而,我不认为将迁移到 Percona Server 视为风险大和耗时的操作。您只需用 Percona Server 的 tarball 中提取的替换 /usr/sbin/mysqld,并且如果您不喜欢它,可以将旧的二进制文件放回去。Percona Server 只是 MySQL 带有一些非破坏性的改进,您可以放心地在其之间切换。(顺便说一下,我是 Percona 的员工。)
脏页刷新也会在MariaDB或Percona Server中发生。您必须了解为什么以及何时会出现脏页刷新的峰值。 通常,InnoDB日志文件大小过小是问题所在。您已经检查过了吗?更高级的话题是MySQL的刷新速率(默认情况下限制为每秒200页)。但是,为此您需要非常好地测量您的系统...
请按照以下步骤操作:
但是,如果您不想执行这些操作,请考虑找到另一种解决方法。也许您可以通过减少存储的数据、较少修改数据等方式来修复应用程序。
也许您可以添加更强大的硬件?
1000万条记录绝对是微不足道的,即使是最小的服务器(比如16G内存)也应该能够将整个数据库保存在内存中。因此,除非您正在进行大量更新,否则您不能找到一种风险更小的方法吗?