MySQL'i ağır bir InnoDB iş yükü için nasıl ayarlıyorsunuz?


39

Ağırlıklı olarak InnoDB tabloları olan bir üretim OLTP sistemi varsayarsak

  • Buğulu / yanlış yapılandırılmış bir sistemin ortak belirtileri nelerdir?
  • Varsayılan olarak en çok hangi yapılandırma parametrelerini değiştirirsiniz?
  • Bir problem yaşanmadan önce potansiyel darboğazları nasıl tespit edersiniz?
  • Aktif sorunları nasıl tanır ve nasıl giderirsiniz?

Belirli statusdeğişkenleri ve teşhisi ayrıntılandıran herhangi bir fıkra takdir edilecektir.


2
Bu soru çok geniş. 4 soruya ayırabilir misin? (Ve madde imli sorularınız bile inanılmaz derecede geniştir. Onları özel problemlerinizle başlatabilir misiniz?)
Brian Ballsun-Stanton

Yanıtlar:


16

İşte Sun'ın Jenny Chen dan InnoDB'nin kalibrajını iyi bir yazı - o bir kısmı Solaris özgüdür MySQL, hakkında çok şey blogları (örn kullanarak DTrace ) tüm blog ilginç çerez dolu ama.


4
Jenny Chen kim?
Pacerier

19

İlginç bir şekilde, MySQL 5.5'te, artık birden fazla innodb arabellek havuzuna sahip olabilirsiniz.

Önemsediğiniz parametreler

Yaklaşık bir ay içinde, bir müşteriye 112 innodb tampon havuzu uygulayacağım. Nasıl geçtiğini size bildiririm.

GÜNCELLEME 2011-02-27 21:57 EDT

İnnodb_buffer_pool_instances için maksimum değeri 64 olduğunu öğrendim: 144 GB yapılandırmaya karar verdim, bu yüzden innodb_buffer_pool_instances'i 18'e ve innodb_buffer_pool_size'yi 8'e ayarladım. Sunucuyu 450GB ile yüklüyorum

GÜNCELLEME 2011-04-28 13:44 EDT

Birden fazla InnoDB Buffer Pools'u denedim. Çok fazla diş çekme ve çekişme vardı. Tek bir 162GB Tampon Havuzu + ayarını read_io_threads ve write_io_threads değerlerini 64 olarak değiştirdim (maksimum değer). Bu daha iyi çalıştı.

GÜNCELLEME 2012-07-03 17:27 EDT

MySQL hakkında harika bir şey öğrendim. Toplam Monte Edilen Fiziksel İşlemci Sayısına Göre Daha Büyük Tek Bir Monolitik InnoDB Tampon Havuzu tahsis ederseniz , işletim sisteminizi, dolu bir InnoDB Tampon Havuzu nedeniyle takas alan düzenli aralıklarla hafızayı teşvik edeceksiniz. MySQL 5.5'in innodb_buffer_pool_instances olarak bilinen seçeneği , tampon havuzunu ayırmak için kullanılabilir. Dün, bunu geçen yıl cevabımda belirttiğim müşteri için doğru şekilde uyguladım. Müşterinin Tampon Havuzu için hâlâ 162GB'm var. Sunucunun innodb_buffer_pool_instances seçeneğini 2 olarak ayarladım, çünkü her DB Sunucusu çift hexacore. 12'ye ayarlamayı düşünüyordum ama sonra bir meslektaşım Jeremy Cole'dan MySQL ve Swappiness hakkında bir blog gösterdi. Okuduktan sonra müşterim için hemen uygulamaya koyuyorum. Bu komutu koştum

numactl --hardware

Her bir fiziksel çekirdeğe 192 GB sunucu RAM'in 96 GB olarak eşlendiğini gördüm. Bu nedenle, innodb_buffer_pool_instances değerini 2 olarak ayarlıyorum. İşler şu anda iyi görünüyor. Bunun sonraki 2 ay boyunca hafızayı değiştirmeyi nasıl etkilediğini görmek için cevabımı güncelleyeceğim.


merhaba @RolandoMySQLDBA, jeremy bloglarından innodb örneğini ayarlayan fiziksel CPU sayısına eşdeğer herhangi bir bağlantı veya sonucu bulamıyorum sorunu çözeceğim. Birden fazla innodb örneği, numactl --interleave = all ayarını yapmadan, Linux’un arabellek önbelleklerini yıkayarak ya da işletim sistemini InnoDB arabellek havuzunu tahsis etmeye zorlamadan bellek düğümleri arasında otomatik olarak denge kurar mı?
Wen Ren

@ Rolando, Güzel 2x100 GB koç. Hangi müşteri?
Pacerier

"Örneklerin" uygulandığını sanıyordum: (blok numarası) MOD (num örnekleri) -> (bloğu yerleştirecek olan örnek). Bunun NUMA ile ilgisi yok.
Rick James,


4

Öncelikle my.cnf'de varsayılan InnoDB Buffer Pool Size değerini artırın (varsayılan olarak 8 MB'a inanıyorum)

Muhtemelen bunu RAM boyutunun% 75'ine ayarlamanız gerekir (genel olarak)


-1

Varsayılan olarak en çok hangi yapılandırma parametrelerini değiştirirsiniz?

bellek yapılandırması


Daha açıklayıcı bir cevap verebilir misiniz? Peki onlar ne değiştirir? Bu değişiklikleri neden yapıyorsun? Bu değişikliklerden sonra beklenen gözlemleriniz nelerdir? Onları neyin değiştireceğini nereden biliyorsun?
jcolebrand

Kutu dışından mysql konfigürasyonu, myisam tablolarını hızlı bir şekilde ayarlamak için hazırlanmıştır (çoğu kullanıcı bu şekilde kullanmaktadır), bunun yanı sıra, iyi optimize edilmiş bir sunucuya sahip olmak için "birincil" motoru kullanmanız gerekir (innodb veya mysql). kabin motorları için mükemmel performans için veri tabanı yapılandırması zor, mysql, myisam ve innodb motorları için ayrı tamponlara sahip
sbczk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.