Her zaman esneklik ve performans arasında bir denge olacaktır.
Ext4 üzerinde MySQL ile varsayılan = 1 engelleme yavaşlamaya neden olur, ancak ilk eylem günlük kaydını devre dışı bırakmak veya veri = geri yazma özelliğini açmak olmamalıdır.
Birincisi, esneklik büyük önem taşıyorsa, batarya destekli bir RAID kesinlikle buna değer.
Özellikle pil destekli olmayan RAID'de seçtiğim montaj seçenekleri şunlardır:
/dev/mapper/vg-mysql--data /var/lib/mysql/data ext4 defaults,noatime,nodiratime,barrier=1,data=ordered 0 0
Dosya sistemi bozulması "eski bir çökme ve günlük kurtarma sonra dosyalarda görünmesi" ile sonuçlanan dosya sistemi bozulma riskini istemiyorum çünkü bu kasıtlı olarak data = writeback kullanmıyor (alıntı olduğunu man mount
).
G / Ç ile ilgili ayarlar etrafında tam esneklik için my.cnf dosyasında ideal yapılandırma şunlardır:
[mysqld]
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1
Performansı artırmak için aşağıdaki takas dizisini seçtim:
sync_binlog = 0
: Bu tam esneklikten değiştirdiğim ilk MySQL yapılandırması. Bunun nedeni, özellikle binlog_format=row
(Jira için maalesef gerekli olduğunda) önemli bir performans artışı sağlamasıdır. Binlog bir güç kaybı senaryosu tarafından bozuk olacak olsaydı kümede yeterli MySQL kopyalarını kullanıyorum, ben başka bir çoğaltma ikili bir kopyasını yapacağım.
innodb_flush_log_at_trx_commit = 2
: Tam ACID uyumluluğu için 1 değeri gerekirken, 2 "değeri ile günlük arabelleği her komutta dosyaya yazılır, ancak diske yıkama işlemi gerçekleştirilmez. Ancak, günlük dosyası, değer 2 olduğunda da saniyede bir kez gerçekleşir. İşlem zamanlama sorunları nedeniyle saniyede bir kez yıkama işleminin her saniyede% 100 garanti edilmediğini unutmayın. " (MySQL dokümanlarından alıntı)
- Kullanılacak montaj seçeneklerini güncelleyin
data=writeback
. Kök dosya sisteminizse, bir çekirdek komut satırı seçeneğini de geçmeniz gerektiğini unutmayın. Kod duvarında birkaç adım bir araya getirdim .
- Çeşitli değerlerini test edin
innodb_flush_method
. O_DIRECT'in bazı iş yüklerindeki performansı artırdığı gösterilmiştir, ancak bunun ortamınızda çalışacağı belli değildir.
- Bu durumda da artırmak isteyeceksiniz, SSD'ler yükseltme
innodb_io_capacity
gibi ve ayar ayarları innodb_adaptive_flushing
, innodb_read_io_threads
, innodb_write_io_threads
, innodb_purge_threads
, ve diğer olası ayarlar.