Skip to content

July 30, 2011

1

MySQL HandlerSocket Plugin Kurulumu

MySQL HandlerSocket Install

Merhaba arkadaşlar, bu yazımızda MySQL server üzerine MySQL HandlerSocket plugin kurulumunu ve konfigürasyonunu inceleyeceğiz.

Daha önce MySQL HandlerSocket plugin ‘i incelemiştik. Bu yazı kapsamında (Linux için) MySQL üzerine HandlerSocket plugin kurulumu ve MySQL server ayarlarıyla HandlerSocket ‘i aktive etmeyi inceleyeceğiz. Yazı sonunda MySQL HandlerSocket ‘in çalışıyor olduğunu gösteren verileri sunucudan okuyor olacağız.

MySQL HandlerSocket Kurulum Öncesi

Kurulum öncesine her ihtimale karşı sisteminizi yedeklemenizi öneririz. Oluşabilecek sorunlardan dolayı sorumlu olmayı istemiyoruz. Kurulum sırasında Ubuntu 11.04 (natty) @ 64bit ve MySQL 5.1.54-1ubuntu4 kullanıyoruz.

Plugini derleyerek kurmak isteyenler (MySQL server kaynak koduna ihtiyaç duyuyor) “WARNING: Cannot Found libtoolize… input libtool command” gibi hatalar almamak için “libtool, aclocal, autoconf, autoheader ve automake” paketlerinin yükledikten sonra bu adresten kurulum detaylarına bakabilirler. Ayrıca yine derleyerek kuracak olanlar için bir bilgi; automake kurarsanız aclocal ‘i içeriyor. MySQL HandlerSocket pluginini MySQL HandlerSocket plugin sayfasından ister tar.gz formatında ister zip formatında indirebilirsiniz.

MySQL HandlerSocket Kurulumu

Kurulum için APT (wiki: en, tr) yi kullanacağız. MySQL HandlerSocket plugin paketleri Ubuntuya 11.04 verisyonundan sonra eklenmiş görünüyor. MySQL HandlerSocket paketlerini aşağıdaki komutları kullanarak kuracağız.

Bir terminal penceresi açalım ve aşağıdaki komutları yazalım. $ işaretlerinin kullanıcıyı temsil ettiğini bilen arkadaşlarımızı tenzih ederek $ kısmını komut satırına yazmamanız gerektiğini hatırlatıyoruz.

$ sudo apt-get install handlersocket-mysql-5.1 handlersocket-doc libhsclient-dev

Bu komutla MySQL HandlerSocket, MySQL HandlerSocket doc ve MySQL HandlerSocket client library paketlerini yüklemiş olduk. İsterseniz Ubuntu Software Center (wiki: en, tr) üzerinden de bu yüklemeleri yapabilirsiniz.

MySQL HandlerSocket Etkinleştirme

MySQL HandlerSocket pluginini etkinleştirmek için MySQL ‘e root kullanıcısıyla bağlanıyoruz.

$ mysql -u root -p

MySQL ‘e bağlanmak için sunucu ve kullanıcı bilgileriniz farklı olabilir, bu yüzden kendi MySQL sunucu erişim bilgilerinizi kullanın.

MySQL de yüklü olan eklentileri göster:

mysql> SHOW PLUGINS;
+------------+----------+----------------+---------+---------+
| Name       | Status   | Type           | Library | License |
+------------+----------+----------------+---------+---------+
| binlog     | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| partition  | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| ARCHIVE    | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| BLACKHOLE  | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| CSV        | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| FEDERATED  | DISABLED | STORAGE ENGINE | NULL    | GPL     |
| MEMORY     | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| InnoDB     | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| MyISAM     | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| MRG_MYISAM | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
+------------+----------+----------------+---------+---------+
10 rows in set (0.00 sec)

MySQL pluginini etkinleştir:

mysql> INSTALL PLUGIN handlersocket soname 'handlersocket.so';

Bu işlemlerden sonra MySQL ‘i yeniden başlatmanız gerekecektir.

MySQL de yüklü olan eklentileri göster:

mysql> SHOW PLUGINS;
+---------------+----------+----------------+------------------+---------+
| Name          | Status   | Type           | Library          | License |
+---------------+----------+----------------+------------------+---------+
| binlog        | ACTIVE   | STORAGE ENGINE | NULL             | GPL     |
| partition     | ACTIVE   | STORAGE ENGINE | NULL             | GPL     |
| ARCHIVE       | ACTIVE   | STORAGE ENGINE | NULL             | GPL     |
| BLACKHOLE     | ACTIVE   | STORAGE ENGINE | NULL             | GPL     |
| CSV           | ACTIVE   | STORAGE ENGINE | NULL             | GPL     |
| FEDERATED     | DISABLED | STORAGE ENGINE | NULL             | GPL     |
| MEMORY        | ACTIVE   | STORAGE ENGINE | NULL             | GPL     |
| InnoDB        | ACTIVE   | STORAGE ENGINE | NULL             | GPL     |
| MyISAM        | ACTIVE   | STORAGE ENGINE | NULL             | GPL     |
| MRG_MYISAM    | ACTIVE   | STORAGE ENGINE | NULL             | GPL     |
| handlersocket | ACTIVE   | DAEMON         | handlersocket.so | BSD     |
+---------------+----------+----------------+------------------+---------+
11 rows in set (0.00 sec)

Çıktıdan da anlaşılacağı gibi handlersocket plugini DEAMON olarak yüklenmiş ve durumu aktif görünüyor.

MySQL HandlerSocket Ayarları

Son olarak MySQL konfigürasyon dosyanızın sonuna aşağıdaki ayarları eklemek gerekiyor. Bizim kurulumumuz da MySQL konfigürasyon dosyası “/etc/mysql/my.cnf” yolunda. Aşağıdaki komutla dosyayı gedit ile (sadece komut satırı kullanıyorsanız editör vi/vim olacak) açıp ayarları dosyanın sonuna ekliyoruz.

$ sudo gedit /etc/mysql/my.cnf

MySQL HandlerSocket Konfigürasyonu

[mysqld]
loose_handlersocket_port = 9998
# okuma istekleri icin port numarasi
loose_handlersocket_port_wr = 9999
# yazma istekleri icin port numarasi
loose_handlersocket_threads = 16
# okuma istekleri icin worker threads sayisi
loose_handlersocket_threads_wr = 1
# yazma istekleri icin worker threads sayisi
open_files_limit = 65535
# es zamanli istek sayisi, maksimum baglanti 
# sayisi goz onunde bulundurularak daha fazla
# baglanti icin bu deger yuksek tutulabilir

MySQL HandlerSocket Kurulum Testi

MySQL HandlerSocket plugininin kurulu olup olmadığını anlamanın bir yolu sunucu üzerindeki işlemlere bakmak olacaktır. MySQL ‘e login olduktan sonra aşağıdaki komutu çalıştırdığınızda;

mysql> SHOW FULL PROCESSLIST;
+-----+-------------+-----------------+---------------+---------+------+-------------------------------------------+-----------------------+
| Id  | User        | Host            | db            | Command | Time | State                                     | Info                  |
+-----+-------------+-----------------+---------------+---------+------+-------------------------------------------+-----------------------+
|   1 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL                  |
|   2 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL                  |
|   3 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL                  |
|   4 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL                  |
|   5 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL                  |
|   6 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL                  |
|   7 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL                  |
|   8 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL                  |
|   9 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL                  |
|  10 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL                  |
|  11 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL                  |
|  12 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL                  |
|  13 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL                  |
|  14 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL                  |
|  15 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL                  |
|  16 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL                  |
|  17 | system user | connecting host | handlersocket | Connect | NULL | handlersocket: mode=wr, 0 conns, 0 active | NULL                  |
| 181 | root        | localhost       | NULL          | Query   |    0 | NULL                                      | SHOW FULL PROCESSLIST |
+-----+-------------+-----------------+---------------+---------+------+-------------------------------------------+-----------------------+
18 rows in set (0.00 sec)

Böyle bir çıktı ile karşılaşıyorsanız HandlerSocket plugini kurulmuş demektir. Çıktıda 17 adet handlersocket bağlantısı bulunmakta. Konfigürasyonda olduğu gibi bunların biri yazma (mode=wr) istekleri için, diğer 16 tanesi ise okuma (mode=rd) istekleri için.

Sonuç

MySQL HandlerSocket plugin serisinin 2. yazısını bitirmiş olduk. Sonraki yazılarda HandlerSocket PHP client kurulumu ve PHP ile MySQL HandlerSocket kullanımına değineceğiz.

1 Yorum Yorum Yaz
  1. Özgün TARHAN
    Aug 10 2011

    Ustadin da dedigi gibi Handler Socket kullanimi; hem memcache hem de mysql kullanimindan cok daha iyi performans vermekte.

    Bu harika yaziya katki yapmak adina birkaç satir katkida bulunmak isterim.

    I/O problemini cozmek icin memory engine kullanilabilir.

    Ancak memory engine table size or index size limit limitlerinden kurtulmak isteyenler;

    MySQL’in linux altinda memory mount bir disk alanina yazmasini saglayip, myisam kullanilarak performans sorunlari asilabilirler.

    Ek olarak memcache’den vazgecmem diyenler;

    http://dev.mysql.com/doc/refman/5.1/en/ha-memcached-interfaces-mysqludf.html

    adresindeki yazi ile de ilgilenebilirler.

    MySQL dolu gunler …

    Reply

Sizin fikriniz nedir? Lütfen aşağıdaki formu kullanarak yorum yapın.

(gerekli)
(gerekli)