CWP Panel'de MariaDB/MySQL servisinin sürekli durması ve veritabanı bağlantı sorunları, genellikle kaynak yetersizliği, yapılandırma hataları, veri bozulması veya dış etkenlerden kaynaklanabilir. 20 yıllık tecrübemle bu tür sorunları adım adım nasıl çözeceğini anlatacağım.
MariaDB/MySQL Servisinin Durma Nedenlerini Anlama ve Çözme
Öncelikle, sorunun temel nedenini tespit etmek için bazı adımları izlemeliyiz.
1. Servis Durumunu Kontrol Etme ve Logları İnceleme
En doğru bilgi genellikle servis loglarından elde edilir. MariaDB/MySQL'in neden durduğunu anlamak için log dosyalarını incelemek şart.
Adım 1: Servis Durumunu Kontrol Etme
SSH ile sunucunuza bağlandıktan sonra aşağıdaki komutla MariaDB/MySQL servisinin mevcut durumunu kontrol edebilirsin:
systemctl status mariadb
veya eğer MySQL kullanıyorsan:
systemctl status mysql
Bu komut, servisin aktif olup olmadığını, son çalıştırma zamanını ve herhangi bir hata mesajını gösterecektir. Eğer servis durmuşsa, burada bir ipucu bulabilirsin.
Adım 2: Hata Loglarını İnceleme
MariaDB/MySQL'in hata logları genellikle şu yollardadır:
- MariaDB: /var/log/mariadb/mariadb.log veya /var/lib/mysql/hostname.err
- MySQL: /var/log/mysql/error.log veya /var/lib/mysql/hostname.err
Bu dosyalara aşağıdaki komutla bakabilirsin:
tail -n 100 /var/log/mariadb/mariadb.log
veya ilgili diğer log dosyası için komutu güncelleyerek kullan.
Loglarda "out of memory", "segmentation fault", "killed process", "too many connections" gibi ifadeler aramalısın. Bu ifadeler sorunun kaynağına dair sana yol gösterecektir.
2. Kaynak Yetersizliğini Değerlendirme
MariaDB/MySQL servisinin durmasının en yaygın nedenlerinden biri sunucunun RAM veya CPU gibi kaynaklarının yetersiz olmasıdır. Yoğun ziyaretçi trafiği veya veritabanı üzerinde çalışan yoğun işlemler bu duruma yol açabilir.
Adım 1: Sunucu Kaynak Kullanımını İzleme
SSH üzerinden top veya htop komutları ile sunucunun anlık kaynak kullanımını izleyebilirsin. MariaDB/mysqld işlemlerinin aşırı CPU veya RAM tükettiğini görüyorsan, kaynak yetersizliği olası bir nedendir.
top
veya
htop
Adım 2: MySQL/MariaDB Yapılandırma Ayarlarını Optimize Etme
Eğer kaynaklar yeterliyse ama yine de sorun yaşıyorsan, my.cnf veya my.ini dosyasındaki ayarlar yetersiz veya aşırı olabilir. CWP panelinde genellikle bu dosyalar şu yollarda bulunur:
- /etc/my.cnf
- /etc/my.cnf.d/server.cnf
- /etc/mysql/my.cnf (veya mariadb için)
Dikkat: Yapılandırma dosyasında değişiklik yapmadan önce mutlaka yedeğini al.
cp /etc/my.cnf /etc/my.cnf.bak
Aşağıdaki parametreler, bellek kullanımını ve performansını doğrudan etkiler:
- innodb_buffer_pool_size: InnoDB motorunun kullandığı önbellek boyutudur. Sunucu RAM'inin %50-75'i kadar ayarlanabilir.
- key_buffer_size: MyISAM motorunun kullandığı önbellek boyutudur.
- max_connections: Veritabanına aynı anda bağlanabilecek maksimum istemci sayısıdır. Aşırı değerler sunucuyu zorlayabilir.
- query_cache_size: Sorgu önbelleği. (MySQL 8 ve sonrası için kaldırılmıştır, MariaDB'de farklı çalışır.)
Örneğin, 4GB RAM'li bir sunucu için innodb_buffer_pool_size'ı 2GB-3GB civarına ayarlayabilirsin. Ayarları değiştirdikten sonra MariaDB/MySQL servisini yeniden başlat:
systemctl restart mariadb
veya
systemctl restart mysql
CWP panelinin kendi veritabanı ayarları bölümü varsa orayı da kontrol etmen faydalı olabilir.
3. Veritabanı Büyüklüğü ve İndeks Sorunları
Çok büyük veritabanları veya eksik/bozuk indeksler, sorguların çok uzun sürmesine ve veritabanı sunucusunun kaynaklarını tüketmesine neden olabilir.
Adım 1: Veritabanı Boyutlarını Kontrol Etme
CWP panelinden veya SSH ile hangi veritabanlarının ne kadar yer kapladığını görebilirsin:
mysql -u root -p -e "SHOW DATABASES;"
Ardından her bir veritabanı için tablo boyutlarını sorgulayabilirsin:
mysql -u root -p -D your_database_name -e "SHOW TABLE STATUS\G"
Aşırı büyüyen tabloları veya veritabanlarını incelemelisin.
Adım 2: Veritabanı İndekslerini Kontrol Etme ve Optimizasyon
Yavaş çalışan sorgular genellikle indeks eksikliğinden kaynaklanır. pt-query-digest gibi araçlarla yavaş sorguları tespit edebilir ve gerekli indeksleri ekleyebilirsin. Ancak bu biraz daha ileri seviye bir adımdır.
Daha basit bir yöntem olarak, veritabanı optimizasyonunu deneyebilirsin:
mysqlcheck -c -u root -p --all-databases
Bu komut, tabloları kontrol eder ve gerekirse onarım yapar.
Ayrıca, OPTIMIZE TABLE table_name; komutu ile tekil tabloları da optimize edebilirsin.
4. Bozuk Veritabanı Dosyaları veya Tablolar
Bazen veritabanı dosyaları bozulabilir ve bu da servisin çökmesine neden olur.
Adım 1: Tablo Onarımı
Eğer loglarda belirli bir tablonun bozuk olduğuna dair bir işaret varsa, o tabloyu onarmayı deneyebilirsin. Önce tabloyu kilitledikten sonra onarım komutunu çalıştır:
mysql -u root -p -e "FLUSH TABLES WITH READ LOCK;"
Ardından, başka bir SSH terminalinden (veya bu işlemi bitirdikten sonra):
REPAIR TABLE your_table_name;
İşlem bittikten sonra kilidi kaldır:
mysql -u root -p -e "UNLOCK TABLES;"
Eğer bu işe yaramazsa, bozuk tablonun yedeğini alıp silerek tekrar eklemeyi veya mysqldump ile tüm veritabanını dışarı aktarıp tekrar içeri aktarmayı düşünebilirsin.
5. CWP Panel ve Yazılım Güncellemeleri
Bazen kullanılan yazılım sürümleri (php, Apache, MariaDB/MySQL) veya CWP'nin kendisi arasındaki uyumsuzluklar sorunlara yol açabilir.
Adım 1: CWP Panel Güncellemesi
CWP kontrol panelinin web arayüzünden veya SSH üzerinden güncellemeleri kontrol et ve uygula:
/scripts/update_cwp
Adım 2: PHP ve Diğer Servis Sürümlerini Kontrol Etme
CWP panelinizde kurulu olan PHP sürümlerini ve diğer servisleri gözden geçirin. Nadiren de olsa eski veya uyumsuz sürümler sorun çıkarabilir. Gerekirse PHP sürümlerini CWP panelinden güncellemeyi deneyebilirsin.
6. Ağ ve Bağlantı Sorunları
Doğrudan MariaDB/MySQL servisinin kendisiyle ilgili olmasa da, veritabanı bağlantı sorunları ağ katmanında da kaynaklanabilir.
Adım 1: Güvenlik Duvarı (Firewall) Kontrolü
Sunucunun güvenlik duvarı (iptables, firewalld veya CSF/LFD) MariaDB/MySQL portunu (varsayılan olarak 3306) engelliyor olabilir. CWP panelinde güvenlik duvarı ayarlarını kontrol et.
Adım 2: Bağlantı Limitleri ve MySQL Kullanıcı Yetkileri
Veritabanı kullanıcılarının `max_user_connections` gibi limitleri aşması da bağlantı sorunlarına yol açabilir. CWP panelinde veya MySQL komut satırından kullanıcıların bağlantı limitlerini kontrol edebilirsin.
SHOW VARIABLES LIKE 'max_connections';SHOW VARIABLES LIKE 'max_user_connections';
Özet ve İleri Adımlar
Bu adımları takip ederek sorunun büyük bir kısmını çözebileceğine inanıyorum. Eğer sorun devam ederse, log dosyalarındaki spesifik hata mesajlarını ve sunucunun detaylı kaynak kullanım bilgilerini paylaşman, sorunu daha hızlı tespit etmemi sağlar.
Unutma, her zaman değişiklik yapmadan önce yedek almak en güvenli yoldur.