Blog'a Dön

MySQL Veritabanı Yönetimi ve Optimizasyon Rehberi (2026)

MySQL temel komutları, performans optimizasyonu, index yönetimi, yedekleme stratejileri ve yaygın hata çözümleri.

mysqlveritabanımariadbsqlyedeklemeperformans

MySQL veritabanı yönetimi, her web geliştirici ve sunucu yöneticisi için temel bir beceridir. WordPress'ten e-ticaret sitelerine, forumlardan özel uygulamalara kadar neredeyse her web projesi veritabanı kullanır. Bu rehberde MySQL'in temellerini, performans optimizasyonunu ve yedekleme stratejilerini öğreneceksiniz.

MySQL Nedir?

MySQL, dünyada en yaygın kullanılan açık kaynaklı ilişkisel veritabanı yönetim sistemidir (RDBMS). Veriler tablolarda satır ve sütun olarak saklanır, SQL (Structured Query Language) ile yönetilir.

MySQL vs MariaDB vs PostgreSQL

ÖzellikMySQLMariaDBPostgreSQL
LisansGPL + TicariGPL (tamamen açık)BSD (en özgür)
WordPress UyumuTamTamSınırlı
Performans (Read)Çok iyiÇok iyiİyi
Performans (Write)İyiİyiÇok iyi
JSON Desteği5.7+10.2+Kapsamlı
cPanel DesteğiEvetEvetHayır

Temel MySQL Komutları

Bağlantı ve Veritabanı İşlemleri

# MySQL'e bağlan
mysql -u root -p

# Veritabanlarını listele
SHOW DATABASES;

# Yeni veritabanı oluştur
CREATE DATABASE site_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

# Veritabanını seç
USE site_db;

# Veritabanını sil
DROP DATABASE eski_db;

Kullanıcı Yönetimi

# Yeni kullanıcı oluştur
CREATE USER 'site_user'@'localhost' IDENTIFIED BY 'GuvenliSifre123!';

# Yetki ver
GRANT ALL PRIVILEGES ON site_db.* TO 'site_user'@'localhost';

# Yetkileri uygula
FLUSH PRIVILEGES;

# Kullanıcı yetkilerini görüntüle
SHOW GRANTS FOR 'site_user'@'localhost';

Tablo İşlemleri

# Tabloları listele
SHOW TABLES;

# Tablo yapısını görüntüle
DESCRIBE kullanicilar;

# Veri sorgulama
SELECT * FROM kullanicilar WHERE durum = 'aktif' LIMIT 10;

# Veri ekleme
INSERT INTO kullanicilar (ad, email) VALUES ('Ahmet', '[email protected]');

# Veri güncelleme
UPDATE kullanicilar SET durum = 'pasif' WHERE id = 5;

# Veri silme
DELETE FROM kullanicilar WHERE durum = 'pasif' AND son_giris < '2025-01-01';

MySQL Performans Optimizasyonu

1. my.cnf Ayarları

SSH ile sunucunuza bağlanıp /etc/mysql/my.cnf dosyasını düzenleyin:

[mysqld]
# InnoDB Buffer Pool — toplam RAM'in %60-70'i kadar
innodb_buffer_pool_size = 2G

# Sorgu cache (MySQL 8.0'da kaldırıldı, MariaDB'de aktif)
query_cache_type = 1
query_cache_size = 128M

# Bağlantı limitleri
max_connections = 200
wait_timeout = 300
interactive_timeout = 300

# Slow query log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

2. Index (Dizin) Optimizasyonu

Sorguların hızlı çalışması için doğru index'ler oluşturun:

# Mevcut index'leri kontrol edin
SHOW INDEX FROM siparisler;

# Sık kullanılan sütunlara index ekleyin
CREATE INDEX idx_musteri_tarih ON siparisler (musteri_id, siparis_tarihi);

# EXPLAIN ile sorgu planını inceleyin
EXPLAIN SELECT * FROM siparisler WHERE musteri_id = 42;

3. Yavaş Sorgu Analizi

# Yavaş sorgu logunu görüntüle
sudo mysqldumpslow /var/log/mysql/slow.log

# En sık çalışan yavaş 10 sorgu
sudo mysqldumpslow -s c -t 10 /var/log/mysql/slow.log

Veritabanı Yedekleme

mysqldump ile Yedekleme

# Tek veritabanı yedeği
mysqldump -u root -p site_db > /yedekler/site_db_$(date +%Y%m%d).sql

# Tüm veritabanları yedeği
mysqldump -u root -p --all-databases > /yedekler/tum_db_$(date +%Y%m%d).sql

# Sıkıştırılmış yedek
mysqldump -u root -p site_db | gzip > /yedekler/site_db_$(date +%Y%m%d).sql.gz

Otomatik Yedekleme (Cron Job)

# Her gün gece 3'te otomatik yedek
0 3 * * * mysqldump -u root -pSIFRE site_db | gzip > /yedekler/site_db_$(date +\%Y\%m\%d).sql.gz

# 30 günden eski yedekleri sil
0 4 * * * find /yedekler/ -name "*.sql.gz" -mtime +30 -delete

Yedekten Geri Yükleme

# SQL dosyasından geri yükle
mysql -u root -p site_db < /yedekler/site_db_20260301.sql

# Sıkıştırılmış yedekten geri yükle
gunzip < /yedekler/site_db_20260301.sql.gz | mysql -u root -p site_db

cPanel'de MySQL Yönetimi

cPanel kullanan hosting hesaplarında:

  • MySQL Databases: Veritabanı ve kullanıcı oluşturma
  • phpMyAdmin: Görsel veritabanı yönetim aracı
  • Remote MySQL: Dışarıdan veritabanı erişimi açma
  • MySQL Sürümü: MultiPHP Manager benzeri, MariaDB sürümü hosting sağlayıcınız tarafından yönetilir

Yaygın MySQL Hataları

HataNedenÇözüm
Too many connectionsBağlantı limiti aşıldımax_connections artırın veya bağlantıları kapatın
Table is marked as crashedTablo bozulmuşREPAIR TABLE tablo_adi;
Disk quota exceededDisk doluBinary logları ve eski verileri temizleyin
Access deniedYetki sorunuGRANT ile yetkileri kontrol edin
Lock wait timeoutUzun süren transactionYavaş sorguları optimize edin

Sonuç

Düzenli yedekleme, index optimizasyonu ve doğru yapılandırma ile MySQL veritabanınız sorunsuz çalışır. Daha fazla kaynak ve performansa ihtiyacınız varsa, Hostopya'nın VDS sunucuları tam root erişim ile istediğiniz MySQL yapılandırmasını yapmanıza olanak tanır.