使用 XtraDB 为 OLTP 调整专用 Percona 服务器

Jes*_*sta 6 mysql innodb tuning percona-server xtradb

OLTP 数据库的硬件规格

  • 双四核至强超线程
  • 24GB 内存
  • 硬件 RAID10 BBU

软件规格

  • 使用默认 LVM 分区标准安装 Ubuntu 10.04LTS
  • 使用 XtraDB 安装 Percona 服务器

我的首要任务是数据完整性/保护,其次是性能。

问题

  • RAID卡中是否有应该设置或不应该设置的设置?既然有BBU,回写应该设置吧?
  • ext4 可以吗,还是应该为数据创建一个单独的 xfs 卷?
  • 内核调度程序应该设置成什么?不好?最后期限?
  • 我应该在硬件/操作系统/文件系统级别调整其他设置吗?

Rol*_*DBA 3

当我提到“Percona Server”这个词时,我首先想到的是:“数据库服务器有多个 CPU 吗?” 如今,这已被视为理所当然。不幸的是,大多数人忘记配置 MySQL 或 Percona Server 来调用这些多个 CPU。

带有 InnoDB 5.1 插件的 MySQL 5.1、MySQL 5.5 和 Percona Server 都有增加线程的选项。以下是您可能希望调整的这些选项以及其他 InnoDB 功能:

innodb_thread_concurrency设置 InnoDB 可以保持打开的并发线程数的上限。为此设置的最佳舍入数字是(2 X CPU 数量)+ 磁盘数量。正如我从 2011 年 5 月的 Percona NYC 会议上第一手了解到的那样,您应该将其设置为 0,以便提醒 InnoDB 存储引擎找到其运行环境的最佳线程数。

innodb_concurrency_tickets设置可以绕过并发检查而不受惩罚的线程数。达到该限制后,线程并发检查再次成为常态。

innodb_commit_concurrency设置可以提交的并发事务数。由于默认值为 0,因此不设置此值将允许同时提交任意数量的事务。

innodb_thread_sleep_delay设置 InnoDB 线程在重新进入 InnoDB 队列之前可以休眠的毫秒数。默认值为 10000(10 秒)。

innodb_read_io_threadsinnodb_write_io_threads(均自 MySQL 5.1.38 起)分配指定数量的线程用于读取和写入。默认值为 4,最大值为 64。

当达到 innodb_thread_concurrency 时,innodb_replication_delay在从属设备上施加线程延迟。

innodb_read_ahead_threshold允许在切换到异步读取之前线性读取设定数量的范围(64 页 [page = 16K])。

如果我说出更多的选择,时间就会溜走。您可以在MySQL 的文档中阅读有关它们的信息。

切换到 RAID:请坚持使用 RAID10。维护其他冗余设置更容易,尤其是 RAID5。。另外,请确保您的 RAID 卡具有最新的固件。否则,RAID 固件可能会与操作系统内核发生冲突,从而导致磁盘崩溃或总体吞吐量降低。

至于Is ext4 ok or should I create a separate xfs volume for the data?,请记住 ext3 对每个文件的最大大小限制为 2TB。如果您不处理 TB 级的数据,请不要担心使用 ext3 或 ext4。

单独的数据卷将提高磁盘性能,因为 mysqld 不会与操作系统竞争。