Percona 的 xtrabackup 实用程序有一个 --throttle 选项,可以减少备份作业的 IO 负载。
文档说传递的值是每秒读/写对的数量。1000/秒在现代硬件上是合适的值吗?5 怎么样?我找不到这些值的任何有意义的参考框架。
作为参考 - 我正在从同一个驱动器阵列 (10k SAS) 读取和写入数据。使用 --throttle=20 的 55gb 备份作业大约运行了一个小时,在非高峰时段对系统没有明显的压力。但老实说,我不知道这是节流阀的高值还是低值。
答案1
一切都取决于情况,但你可以用这种方法来估计一些东西:看一下iostat并查看磁盘上的 iops/sec。如果您有典型的数据库,那么您很可能受到每秒随机寻道次数的限制,而不是带宽。
- 在维护窗口中 - 运行 xtrabackup 而不进行限制,然后再次查看系统可以生成多少 iops/sec。假设它是 x。
- 之后看看非高峰时段系统的典型 iops/sec 数量。假设它是 y。
基于此,估算一下您可以将多少 iops/sec 专用于备份工作。我会将其计算为 x - 2 * y 或 x - 3 * y,以便为峰值留出一些空间。
我认为 xtrabackup 的参数将与 iops/sec 成线性比例但不相等 - 因此在最后一步使用反复试验来调整节流值,以便 iostat 显示所需的每秒操作数。
或者使用 ionice [ 稍微了解一下这里],给你的备份工作低优先级,不要限制它。我这样做是为了rdiff-备份工作 - 运行良好。请注意,ionice [据我所知] 仅适用于 Linux 中的某些 io 调度程序。