MySQL Replikasyonu Nedir?
Bir gün, büyük bir web projenizin veritabanı büyüdü ve artık tüm sorguları tek bir sunucuya yüklemek zorlayıcı hale geldi. Veritabanınızın hızını ve güvenliğini artırmak istiyorsunuz. İşte tam o noktada, MySQL replikasyonu devreye giriyor.
MySQL replikasyonu, veritabanındaki verilerin birden fazla sunucuya kopyalanması işlemidir. Bu sayede, veritabanınızın yedeğini almak, veri erişimini hızlandırmak ve yük dengelemesi yapmak mümkün olur. İki ana türü vardır:
- Master-Slave Replikasyonu: Ana veritabanı (master), veri değişikliklerini kopyalar ve diğer veritabanları (slave) bu değişiklikleri alır.
- Master-Master Replikasyonu: Her iki sunucu da veri değişikliklerini paylaşır, yani her iki sunucu da hem master hem de slave görevini üstlenir.
Şimdi gelin, MySQL replikasyonu kurulumunun adımlarına bakalım.
Adım 1: MySQL Sunucularının Hazırlanması
İlk adımda, replikasyonun yapılacağı iki sunucuya ihtiyacımız var. Bunlardan biri master (ana) sunucusu, diğeri ise slave (köle) sunucusu olacak. Her iki sunucunun da MySQL’in aynı sürümünü kullandığından emin olun. Aksi takdirde uyumsuzluklar ortaya çıkabilir.
Adım 2: Master Sunucusunda Konfigürasyon
Master sunucusunda replikasyon için bazı ayarları yapmamız gerekiyor. Bu ayarları yapabilmek için MySQL'in yapılandırma dosyasını düzenlemeniz gerekecek. Aşağıdaki adımları takip edin:
1. MySQL yapılandırma dosyasını açın:
```bash
sudo nano /etc/mysql/my.cnf
```
2. Bu satırları ekleyin:
```ini
[mysqld]
server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db = testdb
```
- server-id: Her sunucuya benzersiz bir ID atamanız gerekecek. Master sunucu için `1` değeri kullanılabilir.
- log-bin: Binlog (binary log) özelliğini aktif hale getiriyoruz. Bu loglar, veritabanındaki değişiklikleri kaydeder.
- binlog-do-db: Hangi veritabanının replikasyonunu yapacağınızı belirliyoruz. Burada "testdb" örnek bir veritabanıdır.
3. MySQL servisini yeniden başlatın:
```bash
sudo service mysql restart
```
4. Master sunucusunda bir kullanıcı oluşturun (replikasyon için):
Master sunucusunda, slave sunucusunun veri okuma yetkisini alabilmesi için bir kullanıcı oluşturmanız gerekecek. Aşağıdaki SQL komutunu kullanarak bu kullanıcıyı oluşturun:
```sql
CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';
FLUSH PRIVILEGES;
```
5. Master sunucusunda binary log pozisyonunu not edin:
```sql
SHOW MASTER STATUS;
```
Bu komut, master sunucusunun mevcut log pozisyonunu gösterir. Bu bilgiyi bir kenara not edin çünkü slave sunucusuna bağlanırken kullanacağız.
Adım 3: Slave Sunucusunda Konfigürasyon
Slave sunucusunda da bazı ayarlar yapmamız gerekiyor. Yine, yapılandırma dosyasını açıyoruz:
1. Slave sunucusunda yapılandırma dosyasını açın:
```bash
sudo nano /etc/mysql/my.cnf
```
2. Aşağıdaki satırları ekleyin:
```ini
[mysqld]
server-id = 2
relay-log = /var/log/mysql/mysql-relay.log
log-bin = /var/log/mysql/mysql-bin.log
```
- server-id: Slave sunucusu için benzersiz bir ID belirtin. Burada `2` kullanılabilir.
3. MySQL servisini yeniden başlatın:
```bash
sudo service mysql restart
```
4. Slave sunucusuna master bilgilerini verin:
Slave sunucusunda, master sunucusuna bağlanmak için aşağıdaki SQL komutlarını kullanın. Burada, master sunucusunun IP adresi ve binary log pozisyonunu kullanacağız.
```sql
CHANGE MASTER TO
MASTER_HOST='master_ip_address',
MASTER_USER='replication_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS= 154;
```
Burada, `MASTER_LOG_FILE` ve `MASTER_LOG_POS` değerlerini, master sunucusundan aldığınız verilerle doldurun.
5. Slave sunucusunu başlatın:
```sql
START SLAVE;
```
Adım 4: Replikasyonun Durumunu Kontrol Etme
Replikasyonun düzgün çalışıp çalışmadığını kontrol etmek için, slave sunucusunda aşağıdaki komutu kullanabilirsiniz:
```sql
SHOW SLAVE STATUS\G
```
Eğer her şey doğruysa, Slave_IO_Running ve Slave_SQL_Running değerleri Yes olarak görünmelidir.
Adım 5: Test Etme
Son olarak, master sunucusunda bir veri değişikliği yaparak replikasyonun doğru çalışıp çalışmadığını test edelim:
```sql
USE testdb;
INSERT INTO users (name, email) VALUES ('Test User', 'test@example.com');
```
Slave sunucusuna gidip aynı sorguyu çalıştırarak, verinin replikasyondan geçtiğini kontrol edin. Eğer doğru bir şekilde replikasyon gerçekleşmişse, yeni veriyi görmelisiniz.
MySQL Replikasyonunun Faydaları
MySQL replikasyonu, birçok avantaj sunar. Bunlardan bazıları:
- Veri Yedekleme: Master sunucusunda meydana gelen herhangi bir sorun, slave sunucusundan alınacak verilerle çözülebilir.
- Yük Dengeleme: Sorgular slave sunucularına yönlendirilerek master sunucunun üzerindeki yük azaltılabilir.
- Veri Güvenliği: Replikasyon, verilerinizi korumanın harika bir yoludur. Eğer bir sunucu çökse bile, diğer sunucularda yedeğiniz bulunur.
Sonuç
MySQL replikasyonu kurulumunun temel adımlarını öğrendiniz. Bu basit adımlarla, veritabanı yönetimini daha güvenli ve verimli hale getirebilirsiniz. Replikasyonun gücünü keşfettiğinizde, veritabanı performansını artırmak ve daha sağlam bir altyapı kurmak elinizde!