jdb2 mysql io_linux – IO等等导致如此大的减速(EXT4 JDB2在99%IO)在Mysql Commit期间

弹性和性能之间总是存在折衷.

对于ext4上的MySQL,barrier = 1默认确实会导致速度减慢,但是第一个操作不应该是禁用日记或打开data = writeback.

首先,如果弹性非常重要,那么备用电池的RAID肯定是值得的.

我选择的挂载选项,尤其是非备用电池的RAID是:

/dev/mapper/vg-mysql--data /var/lib/mysql/data ext4 defaults,noatime,nodiratime,barrier=1,data=ordered 0 0

这是故意不使用data = writeback,因为我不想冒文件系统损坏的风险,导致“崩溃和日志恢复后”旧数据出现在文件中“(引用来自man mount).

my.cnf中关于I / O相关设置的完全弹性的理想配置是:

[mysqld]

sync_binlog = 1

innodb_flush_log_at_trx_commit = 1

我选择了以下一系列权衡以提高性能:

> sync_binlog = 0:这是我改变完全弹性的第一个MySQL配置.这样做的原因是它提供了显着的性能改进,特别是在binlog_format = row(不幸的是Jira需要)的情况下.我在群集中使用了足够多的MySQL副本,如果binlog被断电情况损坏,我会从另一个副本执行二进制副本.

> innodb_flush_log_at_trx_commit = 2:完全ACID合规性需要值1,值为2“日志缓冲区在每次提交时写入文件,但不对其执行刷新到磁盘操作.但是,当值为2时,日志文件上的刷新也会每秒发生一次.请注意,由于进程调度问题,每秒一次的刷新不会100%保证每秒发生一次.“ (引自MySQL文档)

>更新mount选项以使用data = writeback.请注意,如果这是您的根文件系统,则还需要传递内核命令行选项.我在coderwall处整理了几个步骤.>测试innodb_flush_method的各种值.显示O_DIRECT可以提高某些工作负载的性能,但这并不能说明它在您的环境中有效.>升级到SSD,在这种情况下,您还需要增加innodb_io_capacity,并调整innodb_adaptive_flushing,innodb_read_io_threads,innodb_write_io_threads,innodb_purge_threads和其他可能设置等设置.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值