'Mysql' Kategori'sine ait arşiv.
MySQL Full-Text Search Minimum Length Limitini Değiştirmek
MySQL’in fulltext özelliği default olarak 4 ya da daha çok karakterden oluşan kelimeleri indexliyor. Bu durum full-text aramalarında 3 harften oluşan kelimeler için herhangi bir sonuç dönmemesine neden olabiliyor. Örnek olarak ”ssh” ya da “php” gibi 3 harften oluşan sorgular gönderdiğiniz zaman herhangi bir sonuç alamayabiliyorsunuz.
Bu durumun önüne geçmek üzere MyISAM tablolar için kullanılabilecek ”ft_min_word_len” isimli bir sistem değişken mevcut. my.cnf dosyasına eklenen bu değişken ile fulltext’e minimum kaç karakterin dahil edileceğini söyleyebilyorsunuz. Örnek olarak bu değeri 3 olarak set etmek ve varolan bir index’i bu değişikliğe göre rebuild etmek için aşağıdaki adımları izleyebilirsiniz:
MySQL: InnoDB Database Ebatının Küçültülmesi – Shrink ibdata1
MySQL sunucularda özellikle InnoDB veritabanlarının zamanla şişen data dosyalarını shrink ederek küçültmek, gerek performansa olumlu etkisi gerekse de diskte kapladığı alandan tasarruf anlamında faydalı bir işlemdir. MyISAM kullanan bir db’de bu işlem “optimize table” ile yapılabilir ancak InnoDB veritabanlarında shrink işlemi için MySQL tarafından sunulan herhangi bir araç ya da komut malesef yok. Bu nedenle data dosyasını küçültmek için, db’nin yedeğini aldıktan sonra drop etmek ve ibdata ve ib_logfile dosyalarını silip db’yi yeniden restore etmek gibi dolanbaçlı bir yöntem izlemek gerekiyor.
Yazının devamında işlemlerin nasıl yapılabileceğine detaylı olarak değinmek istiyorum. İlginizi çekerse incelemek isteyebilirsiniz.
MySQLdump – InnoDB single-transaction ve quick dump
Büyük ve yoğun kullanılan InnoDB veritabanlarının mysqldump ile yedeklenmesı esnasında database’i kullanan uygulamayı bloke etmemek için single-transaction isimli bir özellik bulunuyor. Sadece InnoDB tablolar için kullanılabilen bu parametre sayesinde yedeklenme sırasında uygulama kesintiye uğramıyor. Büyük veri tabanlarını (mesela 70-80GB gibi) yedeklemek zaman isteyen bir süreç olduğundan dolayı yedekleme sırasında db’yi kullanan uygulamayı kilitlememek bu anlamda önemli bir nokta haline geliyor.
Single-transaction özelliğini kullanmak için mysqldump cümlesine parametre olarak eklemek yeterli:
# mysqldump --user=kullaniciadi --password=sifre --single-transaction database_adi > database_adi.sql
mysqldump dökümanıında single-transaction ile ilgili açıklama şu şekilde:
Yazinin devami icin tiklayin.
MySQL – Stored Procedure ve Function’ların Yedeklenmesi
mysqldump kullanarak bir veritabanını yedeklemek istediğiniz zaman özellikle belirtmezseniz stored procedure’ler ve function’lar backup’a dahil edilmiyor. Neden bilmiyorum ama öntanımlı olarak mysqldump bu verileri görmezden gelerek dump dosyasına yazmıyor. Dolayısı ile database’inizde tanımlı stored procedure’ler varsa, mysqldump cümlenize –routines paramtresini de eklemeniz gerekiyor.
Aksi halde, db’yi dump dosyasından geri dönmek gibi bir durum olduğu zaman, stored procedure’lerinizin yerinde yeller estiğini görebilirsiniz. Bu sebeple yedek alırken –routines parametesini her seferinde kullanmanızı öneririm.
Ayrıca, –routines paramteresi, tüm db içeriğini almadan sadece stored procedure’leri dump etmek üzere de kullanılabilmektedir. Aşağıda her iki gereksinim için birer örnek mysqldump cümleciği bulabilirsiniz.
Komut Satırından MySQL Kullanıcısı Oluşturmak
![]() |
Herhangi bir istemci üzerinden erişemediğiniz bir mysql sunucusunda komut satırından yeni bir kullanıcı açmak için aşağıdaki örnekleri takip edebilirsiniz. Bu işlem, temel ve basittir ancak rutin olmamasından ötürü girilmesi gereken komutların syntax’ları zamanla unutulabilir (En azından kendi adıma durum böyle). Eğer siz de benimle aynı dertten muzdaripseniz aşağıdaki örneklerin faydasını görebilirsiniz. |
MySQL Database Schema Export
Bir mysql database’inin tablo yapısını, tabloların içerdiği veriyi almaksızın çıkartmak için aşağıdaki mysqldump cümlesi kullanılabilir.
# mysqldump --no-data --tables -u kullaniciadi -p db_adi >> db_adi.sql
–no-data parametresini kaldırırsanız, database yapısı içerdiği verilerle alınacaktır.
Bunun yanısıra database’iniz de tanımlı stored procedurler ya da function’lar var ise bu rutinleri de almak için mysqldump’ı aşağıdaki gibi kullanabilirsiniz.
# mysqldump --no-data --tables --routines -u kullaniciadi -p db_adi >> db_adi.sql
Daha fazla bilgi için bkz:
GreenSQL DB Firewall ile Sql Injection Önlemi
| GreenSQL, sql injection saldırıları için database’leri koruma altına almak üzere geliştirilmiş bir database firewall uygulamasıdır. MySQL ve PostgreSQL’ler için destek sunan GreenSQL temel olarak proxy olarak çalışarak gerçek database’in önünde durur ve web uygulamasından gelen sql bağlantı isteklerini karşılayarak SQL komutlarını inceler ve bir risk scoring matrix kullanarak ilgili sql cümlelerini analiz ederek aksiyon alır. | ![]() |
Bu şekilde, web uygulamanızda bir sql injection açığı bulunsa dahi GreenSQL sayesinde açıktan etkilenmemeniz mümkün olabilir. Detaylarına yazının devamında değineceğim GreenSQL temel olarak, default 3305 portunu dinler ve gelen sql istekleri için risk analizi yapar; güvenli olmaları durumunda komutları arkadaki sql sunucusuna iletir, eğer sql cümleleri güvenli değil ve daha önceden de Whitelist’e eklenmemişlerse blocklar ve uygulamaya boş bir cevap döndürür. GreenSQL’in IPS, IDS, Firewall ve Learning gibi modlarda çalıştırabilirsiniz. Özellikle learning modu false positive durumların önüne geçmek için çok kullanışlıdır. Ayrıca GreenSQL fiziksel olarak database sunucunuz ile aynı makinada çalışabilir ya da ayrı bir makina üzerine konumlandırabilirsiniz.
Yazının devamında, GreenSQL’in çalışma mantığından, kurulum ve yapılandırma işlemlerinden bahsedeceğim.
OpenX 2.8 Ad Server Kurulumu
| OpenX, oldukça gelişmiş ve güzel bir reklam yötenim sistemidir. OpenX kullanarak sitenizde yayınladığınız reklamları kolayca yönetebilir ve reklam verenlerinize gelişmiş, istatistigi raportlama yapabilirsiniz. Php tabalı olan OpenX database olarak MySql kullanıyor ve oldukça performanslı çalışıyor. | ![]() |
Ben, OpenX kullanarak, bir mysql bir apache olmak üzere, Xeon 3Ghz işlemci ve 2GB ram’e sahip iki FreeBSD sunucu üzerinde aylık ortalama 100 milyon reklam gösterimi yapabiliyorum. Sonuç olarak siz de reklam yönetimi için bir çözüm arıyorsanız, aradığınız OpenX olabilir.
Bu yazıda, OpenX’in nasıl kurulduğu ve genel geçer yönetim işleri anlatılmaktadır. (Kurulum FreeBSD 7.1 üzerinde yapılacaktır.)
OpenX aslında bir kaç kez ismi değişmiş ve bir çok revizyondan geçmiş bir yazılım. Zaman içinde phpAdsNew, Openads isimleri ile de tanınan bu güzel yazılımın son hali OpenX ve son sürümü 2.8.
İşte nasıl kurulduğu;




