SphereServer 0.56b — MySQL Entegrasyonu Rehberi
UO-Developer.com — Sphere ile MySQL veritabanı bağlantısı ve yapılandırmaSphereServer varsayılan olarak verileri .scp düz metin dosyalarında saklar. 0.56b sürümüyle birlikte Sphere ile MySQL veritabanı arasında bağlantı kurma özelliği eklendi. Bu özelliği kullanabilmeniz için bilgisayarınızda MySQL kurulu olmalıdır.
Konu: MySQL entegrasyonu | Seviye: Orta – İleri | Gereksinim: Sphere 0.56b, MySQL Server 5.x, libMySQL.dll (32-bit)
MySQL hakkında genel bilgi: dev.mysql.com
İlgili sayfalar: Sphere, MySQL ve PHP İlişkisi | MySQL'den Yararlanma | MySQL Kurulumu
İçindekiler
- Giriş — neden MySQL?
- Gereksinimler
- MySQL Server kurulumu
- Veritabanı ve kullanıcı oluşturma
- libMySQL.dll kurulumu
- sphere.ini ayarları
- DB.CONNECT ve otomatik bağlantı
- Bağlantı testi (SQLTest)
- Veri aktarımı ve uzak sunucu
- Performans ve sorun giderme
1. Giriş
Dosya tabanlı sistem küçük shard'lar için yeterlidir; oyuncu sayısı arttıkça şu sınırlamalar ortaya çıkabilir:
- Büyük .scp dosyaları yavaş okunur/yazılır
- Eş zamanlı erişimde veri bütünlüğü sorunları
- Web sitesi veya yönetim paneliyle entegrasyon güçlüğü
MySQL entegrasyonu bu sorunları azaltır: veriler veritabanında saklanır, harici uygulamalarla paylaşım kolaylaşır. 56b yenilikleri: Sphere Server 56b'ye Giriş
2. Gereksinimler
- SphereServer 0.56b Nightly — MySQL desteği bu sürümle geldi — indir
- MySQL Server 5.1 / 5.5 — 8.x sürümleri uyumsuz olabilir
- libMySQL.dll 32-bit — SphereSvr.exe ile aynı klasörde — 32 bit indir
- MySQL Workbench — yönetim arayüzü (isteğe bağlı)
Önemli: libMySQL.dll mutlaka 32-bit olmalıdır. MySQL 64-bit kurulumundan alınan DLL Sphere ile çalışmaz.
3. MySQL Server Kurulumu
Adım 1 — MySQL'i indirin ve kurun
MySQL 5.5 Community Server'ı resmi siteden indirin. Kurulumda:
- Port — varsayılan 3306
- Root şifresi — güçlü bir şifre belirleyin ve not alın
- Windows Service — bilgisayar açılışında MySQL otomatik başlasın
Adım 2 — MySQL servisinin çalıştığını doğrulayın
Komut isteminde:
mysql -u root -pRoot şifrenizi girin. mysql> promptu görünüyorsa MySQL çalışıyor demektir.
4. Sphere İçin Veritabanı Oluşturma
Adım 3 — Veritabanı oluşturun
CREATE DATABASE sphere_db CHARACTER SET latin1 COLLATE latin1_swedish_ci;Sphere .scp dosyalarında latin1 kodlaması kullanır; utf8 ile özel karakter sorunları yaşanabilir.
Adım 4 — Ayrı kullanıcı oluşturun
Root kullanıcısını doğrudan Sphere'e vermekten kaçının:
CREATE USER 'sphere_user'@'localhost' IDENTIFIED BY 'guclu_sifre_buraya';
GRANT ALL PRIVILEGES ON sphere_db.* TO 'sphere_user'@'localhost';
FLUSH PRIVILEGES;Adım 5 — Tabloları oluşturun
0.56b paketinde sphere_mysql.sql dosyası bulunur (scripts\ veya src\ altında). MySQL'de:
USE sphere_db;
SOURCE C:/SphereServer/scripts/sphere_mysql.sql;
SHOW TABLES;accounts, chars, items vb. tablolar listelenmelidir. Alternatif: MySQL Workbench ile dosyayı çalıştırın.
5. libMySQL.dll Kurulumu
Adım 6 — 32-bit DLL'yi temin edin
- MySQL Connector/C 32-bit paketi
- MySQL 32-bit kurulumunun bin\ klasörü
- Site: libMySQL.dll 32 bit
Adım 7 — DLL'yi doğru konuma yerleştirin
C:\SphereServer\
├── SphereSvr.exe
├── libMySQL.dll ← buraya
├── sphere.ini
└── scripts\DLL yanlış konumdaysa libMySQL.dll not found veya MySQL initialization failed hatası alırsınız.
6. sphere.ini MySQL Ayarları
MySQL bilgisayarınızda kuruluysa Sphere ile bağlantı için sphere.ini içinde aşağıdaki ayarları yapın — Türkçe Sphere.ini
Adım 8 — Temel bağlantı ayarları
MYSQL=1 // 1 = MySQL aktif
MySqlHost=localhost // MySQL sunucu adresi
MySqlUser=root // MySQL kullanici adi (ornek: sphere_user)
MySqlPassword=password // MySQL sifreniz
MySqlDatabase=sphere // Kullanilacak veritabani adi (ornek: sphere_db)MYSQL=1 değeri MySQL'i aktif eder. MySqlHost genelde localhost veya 127.0.0.1; MySqlDatabase oluşturduğunuz veritabanı adıyla eşleşmelidir.
Adım 9 — Bağlantıyı kurun
Bu ayarları yaptıysanız Sphere ile MySQL arasında bağlantı kurmaya hazırsınız. Konsoldan veya script ile DB.CONNECT komutunu kullanın.
Her sunucu açılışında elle bağlanmak istemiyorsanız aşağıdaki fonksiyonu kullanın:
[FUNCTION f_onserver_start]
DB.CONNECT
return 1Bu trigger sunucu başlarken otomatik MySQL bağlantısı kurar.
7. Bağlantı Testi
Bağlantının çalıştığını doğrulamak için konsoldan veya GM karakterden test fonksiyonu çalıştırın:
[FUNCTION SQLTest]
IF (<DB.CONNECTED>)
SYSMESSAGE MySQL ile Sphere bagli durumda..
ELSE
SYSMESSAGE MySQL ile Sphere arasinda baglanti yapilamadi..
ENDIFKomut sonucunda MySQL ile Sphere bağlı durumda mesajını görürseniz bağlantı başarılıdır.
Script tarafında sorgu örnekleri: MySQL'den Yararlanma | Web entegrasyonu: Sphere, MySQL ve PHP İlişkisi
8. Mevcut Verileri MySQL'e Aktarma
Sphere daha önce dosya tabanlı çalışıyorsa mevcut accounts\ ve save\ verilerinin MySQL'e aktarılması gerekebilir.
Bazı 56b Nightly sürümlerinde MySQL ilk kez etkinleştirildiğinde mevcut .scp dosyalarını otomatik import eder. Konsol çıktısını takip edin:
[MySQL] Importing accounts... done.
[MySQL] Importing chars... done.
[MySQL] Importing world data... done.Doğrulama:
USE sphere_db;
SELECT COUNT(*) FROM accounts;
SELECT COUNT(*) FROM chars;Yedekleme: Sphere — Server Backup
9. Uzak MySQL Sunucusu
Sphere ve MySQL farklı makinelerdeyse:
- MySqlHost — MySQL sunucusunun IP adresi
- MySQL'de uzak kullanıcı ve GRANT tanımlayın
- my.ini içinde bind-address = 127.0.0.1 satırını yorum satırı yapın (gerekirse)
- Güvenlik duvarında TCP 3306 portuna izin verin
CREATE USER 'sphere_user'@'192.168.1.100' IDENTIFIED BY 'guclu_sifre_buraya';
GRANT ALL PRIVILEGES ON sphere_db.* TO 'sphere_user'@'192.168.1.100';
FLUSH PRIVILEGES;10. Performans Önerileri
- SavePeriod — çok sık save gereksiz yük yaratır; makul aralık kullanın (15–30 dk) — Lag Hakkında Herşey
- MySQL tarafında innodb_buffer_pool_size ve query_cache ayarlarını RAM'e göre optimize edin
- SQL dosyasındaki index'leri silmeyin
11. Sık Yapılan Hatalar
- libMySQL.dll not found — DLL eksik veya yanlış klasör | Çözüm: SphereSvr.exe ile aynı dizine 32-bit DLL koyun
- MySQL initialization failed — 64-bit DLL | Çözüm: 32-bit libMySQL.dll kullanın
- Access denied for user — yetki yok | Çözüm: GRANT komutunu tekrar çalıştırın
- Can't connect to MySQL server — servis kapalı / port / firewall | Çözüm: MySQL servisi ve 3306 portunu kontrol edin
- Unknown database — veritabanı adı yanlış | Çözüm: MySqlDatabase değerini doğrulayın
- Table doesn't exist — SQL import yapılmadı | Çözüm: sphere_mysql.sql dosyasını tekrar çalıştırın
- Bağlantı testi başarısız — DB.CONNECT çalıştırılmadı | Çözüm: konsolda DB.CONNECT veya f_onserver_start içine ekleyin
MySQL kullanmayacaksanız MYSQL=0 yapın veya MySQL satırlarını yorumlayın. Kurulum: Sphere Server 56B Kurulum
12. Özet Kontrol Listesi
- [ ] MySQL 5.x kuruldu ve servis çalışıyor mu?
- [ ] sphere_db veritabanı oluşturuldu mu?
- [ ] sphere_user kullanıcısı ve yetkileri tanımlandı mı?
- [ ] sphere_mysql.sql ile tablolar oluşturuldu mu?
- [ ] libMySQL.dll (32-bit) Sphere kök dizinine kopyalandı mı?
- [ ] sphere.ini içinde MYSQL=1 ve MySql* ayarları dolduruldu mu?
- [ ] DB.CONNECT veya f_onserver_start ile bağlantı kuruldu mu?
- [ ] SQLTest ile bağlantı doğrulandı mı?
- [ ] Mevcut veriler aktarıldı ve doğrulandı mı?

