'Mysql' Kategori'sine ait arşiv.


MySQL High Availability Setup: DRBD, Pacemaker, Corosync

Kritik noktalarda çalışan MySQL servislerinde, yüksek erişilebilirlik sağlamak (high availability) ve herhangi problem anında mümkün olan en kısa sürede otomatik olarak tekrar servis verebilir duruma gelmek için uygulamanızın özelliklerine ve altyapınıza göre replikasyondan clustering’e birden fazla alternatif kullanabilirsiniz. Böyle bir ihtiyaç için seçilebilecek alternatiflerden birisi DRBD/Pacemaker/Corosync üçlüsünü kullanarak active/passive olmak üzere iki node’dan oluşan bir HA cluster kurmak olabilir.

Bu tip bir yapı ile http://dev.mysql.com/doc/refman/5.0/en/ha-drbd.html adresinde de anlatıldığı üzere iki adet (fiziksel ya da sanal) sunucu ile ortak bir storage vs. gibi herhangi ek bir yatırıma gerek kalmadan otomatik failover ve recovery özelliği ile servis devamlılığı ve senkron replikasyon (mirroring) yaparak data güvenliği sağlayan bir yapı elde edebilirsiniz.

Yazının devamında böyle bir yapının CentOS 6.5 ve MySQL 5.1 kullanılarak oluşturulmasına ait kurulum notlarını paylaşacağım.

Yazinin devami icin tiklayin.


MySQL Repair MyISAM Table – BozulmuşTabloların Onarılması

Herhangi bir nedenden dolayı MySQL databaseinizdeki herhangi bir myisam tablo bozulursa loglarınızda vs. aşağıdakine benzer bir uyarı görebilirsiniz.

Table 'tablo_adi' is marked as crashed and should be repaired

Hatada bahsedilen repair işlemi bir kaç şekilde yapılabilir, Yöntemlerden birisi myisamcheck isimli table maintanence aracını kullanmaktır. myisamcheck MySQL ile birlikte gelen ve myisam tabloları kontrol etmeye, onarmaya ya da optimize etmeye yarayan küçük bir uygulamadır.

Yazinin devami icin tiklayin.


MySQL Server Time Zone Değişikliği

MySQL sunucusu başladığı zaman time zone olarak sistem saatini kullanır ve system_time_zone değişkenine atar.  Bir nedenden ötürü MySQL’in zaman bilgisini sisteminkinden farklı bir time zone’a atamanız gerekirse bu işlemi global ve per-connection olmak üzere iki farklı şekilde yapabilirsiniz.

Global time zone MySQL sunucusunun default zaman bilgisini set ederken, per-connection time zone ise sadece ilgili session için zaman bilgisinin atanmasını sağlar; yani per-connection time zone özelliğini kullanarak aynı MySQL sunucusu üzerinde birden fazla uygulama için farklı zone’lar tanımlanabilir.

Yazinin devami icin tiklayin.


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:

Yazinin devami icin tiklayin.


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.

Yazinin devami icin tiklayin.


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

Mysql Logo 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.

Yazinin devami icin tiklayin.


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.

Yazinin devami icin tiklayin.

Sonraki Sayfa »