Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

ZFS Dosya Sistemi Üzerinde MySQL Çalıştırmanın Avantajları: Snapshot, Sıkıştırma ve ARC

websterx

Üye
Katılım
14 Mart 2026
Mesajlar
19
Merhaba arkadaşlar, bugün sizlere özellikle veritabanı sunucularında işleri bir üst seviyeye taşıyacak bir konudan bahsedeceğim: ZFS üzerinde MySQL çalıştırmak. Benim yönetiminde olduğu birçok yüksek trafikli veritabanı sunucusunda bu ikiliyi kullanıyorum ve sağladığı güvenlik, performans ve yönetim kolaylığı gerçekten muazzam. Eğer sunucularınızda hala ext4 veya XFS ile yetiniyorsanız, bu rehber size yeni bir dünyanın kapılarını açacak.

📁 Neden ZFS ve MySQL İkilisi?

Geleneksel dosya sistemleri veritabanı iş yükü için iyidir, ancak ZFS bu işi bir "veri yöneticisi" seviyesine çıkarır. ZFS, bir dosya sistemi ve birim yöneticisinin akıllı bir birleşimi gibidir. MySQL için en büyük avantajları ise anlık yedekler (snapshot), şeffaf sıkıştırma ve devasa bir önbellek mekanizması (ARC) sunmasıdır. Bu özellikler, hem performansı artırır hem de olası bir insan hatası veya yazılım hatası durumunda veri kaybını neredeyse sıfıra indirir.

⚙️ Kurulum ve Temel Havuz (Pool) Yapılandırması

Öncelikle ZFS'nin kurulu olduğundan emin olun. Ubuntu/Debian için:

Bash:
sudo apt install zfsutils-linux

MySQL verilerinizi tutacağınız bir ZFS havuzu (pool) oluşturalım. Diyelim ki `/dev/sdb` ve `/dev/sdc` diskleriniz var. RAID-Z1 (single parity) ile bir havuz oluşturmak için:

Bash:
sudo zpool create -f datapool raidz1 /dev/sdb /dev/sdc

Havuzumuzu oluşturduk. Şimdi MySQL'in veri dizini olacak bir dataset oluşturalım. Bu, havuz içinde mantıksal bir bölümlemedir.

Bash:
sudo zfs create datapool/mysql
sudo zfs set mountpoint=/var/lib/mysql datapool/mysql

Artık /var/lib/mysql dizini, ZFS'in yönetimine geçti. MySQL'i kurmadan önce birkaç kritik özelliği ayarlayalım.

🔧 MySQL için Kritik ZFS Ayarları: Sıkıştırma ve Kayıt Boyutu (Recordsize)

ZFS'in şeffaf sıkıştırma özelliği, özellikle metin ağırlıklı veritabanları için disk alanında muazzam tasarruf sağlar. `lz4` algoritması hızlı ve CPU dostudur.

Bash:
sudo zfs set compression=lz4 datapool/mysql

En önemli ayarlardan biri `recordsize`'dır. Varsayılan 128K, MySQL'in tipik 16K InnoDB sayfa boyutu için verimsiz olabilir. Bunu InnoDB sayfa boyutuna (genelde 16K) uyacak şekilde ayarlamak, performansı ve önbellek verimliliğini ciddi oranda artırır.

Bash:
sudo zfs set recordsize=16K datapool/mysql

Bu ayarı dataset oluşturulduktan SONRA, veri yüklenmeden ÖNCE yapmak çok önemli. Aksi halde mevcut veriler bu boyuta göre yeniden hizalanmaz.

⚠️ Dikkat Edilmesi Gerekenler (Önemli!)

ZFS, performans için müthiş bir bellek önbelleği (ARC) kullanır. Sunucunuzda yeterli RAM yoksa veya ARC için ayrılan RAM, MySQL'in kendisi için yetersiz kalırsa sistem çöker. Kaba bir hesapla, sunucu RAM'inizin %20-40'ını ARC'nin kullanmasına izin verebilirsiniz, kalanını MySQL'e bırakın.

Ayrıca, ZFS yazma işlemlerini geciktirebilir (transaction delay). Bu, güvenlik için iyidir ancak yüksek yazma hızı gerektiren sistemlerde `sync=disabled` gibi tehlikeli ayarlara yönelmeyin! Bunun yerine, bir ZIL (ZFS Intent Log) cihazı olarak hızlı bir SSD (NVMe gibi) eklemek çok daha akıllıca ve güvenli bir çözümdür.

💾 Hayat Kurtarıcı: Anlık Yedekler (Snapshots) ve Geri Yükleme

İşte en sevdiğim özellik! Bir sorguyu yanlışlıkla çalıştırdınız ve tablolarınız silindi. Panik yok. Hemen bir snapshot alalım (örneğin yedek öncesi):

Bash:
sudo zfs snapshot datapool/mysql@yedek_oncesi

Snapshot'lar anında oluşur ve neredeyse hiç yer kaplamaz (yalnızca değişen veriler yer işgal eder). Bir hata durumunda, tüm dataset'i snapshot anına geri alabilirsiniz:

Bash:
sudo zfs rollback datapool/mysql@yedek_oncesi

MySQL servisini durdurup başlatmanız gerekebilir, ancak verileriniz büyük bir hızla kurtarılmış olur. Bu, geleneksel yedekleme yöntemlerine kıyasla devrim niteliğindedir.

🚀 Performans İzleme: ARC ve Cache İstatistikleri

ZFS'in ne kadar RAM kullandığını ve önbelleğin ne kadar verimli olduğunu izlemek önemlidir. Aşağıdaki komutlar size fikir verecektir:

Bash:
# ARC istatistikleri
cat /proc/spl/kstat/zfs/arcstats

# Dataset bazında IO istatistikleri
zfs iostat datapool/mysql 1

ARC hit ratio'nuzun (%90'ın üzerinde) yüksek olması, disk I/O yükünüzü azalttığınız anlamına gelir. Bu da MySQL sorgularınızın daha hızlı çalışması demektir.

Sonuç olarak, ZFS üzerinde MySQL çalıştırmak biraz daha fazla planlama ve donanım kaynağı gerektirse de, sağladığı veri bütünlüğü, kolay yedekleme/geri yükleme ve potansiyel performans artışı bu çabaya değer. Benim sunucularımda kritik tüm veritabanları artık ZFS üzerinde koşuyor ve uykuyu çok daha rahat uyuyorum.

Peki ya siz? Bu konfigürasyonu kendi sunucularınızda denediniz mi veya nasıl bir kurulum kullanıyorsunuz? ZFS ile ilgili tecrübelerinizi veya sorularınızı aşağıya yazmaktan çekinmeyin. Hep birlikte öğrenelim!
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri