Kullandığınız MySQL sunucunun 32 bit mi 64 bit mi olduğunu anlamak

Bunu anlamak için 2 yöntem var aslında ikisi de aynı kapıya çıkıyor.

1. Komut satırından

[root@mgw03 ~]# mysql -V
mysql  Ver 14.14 Distrib 5.5.16, for Linux (x86_64) using readline 5.1

2. MySQL konsolundan

mysql> \s ( veya status )
--------------
mysql  Ver 14.14 Distrib 5.5.16, for Linux (x86_64) using readline 5.1

Connection id:          9
Current database:
Current user:           kursad@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.5.16-log MySQL Community Server (GPL)
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 2 min 42 sec

Threads: 1  Questions: 134612  Slow queries: 0  Opens: 136  Flush tables: 1  Open tables: 129  Queries per second avg: 830.938
--------------

Posted in Linux, MySQL on November 19th, 2012 by Kürşad DARA | | 0 Comments

mySQL Too many open files hatası

MySQL loglarında aşağıdaki hatayla karşılaşabilirsiniz.

121117 23:21:03  InnoDB: Operating system error number 24 in a file operation.
InnoDB: Error number 24 means 'Too many open files'.

Çözüm için my.cnf dosyanıza;

innodb_open_files=24000
open-files-limit=96000

Burada dikkat edilecek nokta open-files-limit parametresinin değeri innodb_open_files parametresinin yaklaşık 4-5 katı olarak set etmeniz.

MySQL i yeniden başlattığınızda sorun çözülecektir.

Detay için : http://dev.mysql.com/doc/refman/5.1/en/server-options.html#option_mysqld_open-files-limit

Posted in Linux, MySQL on November 17th, 2012 by Kürşad DARA | | 0 Comments

[Warning] IP address ‘xxx.xxx.xxx.xxx’ could not be resolved: Name or service not known hatası

MySQL log dosyasında aşağıdaki gibi bir hata alıyorsanız. Çözümü basit.

[Warning] IP address 'xxx.xxx.xxx.xxx' could not be resolved: Name or service not known

Muhtelemen sisteminizde username@xxx.xxx.xxx.xxx şeklinde bir kullanıcınız var.

Ve eğer MySQL skip-name-resolve parametresi ile açılmamış ise girdiğiniz xxx.xxx.xxx.xxx ipsinin dns kaydını sorgulayacaktır.

Bu açıdan my.cnf dosyanıza skip-name-resolve parametresi girip bu sorunu çözebilirsiniz.

skip-name-resolve

Tercihim skip-name-resolve kullanmaktan yana. Böylece MySQL dns sorgulaması ile uğraşmamış olur.

Posted in Linux, MySQL on November 17th, 2012 by Kürşad DARA | | 0 Comments

myisam ve innodb veritabanları için key_buffer_size ve innodb_buffer_pool_size hesaplayan query

İşinize yarayabilir.

Myisam için;

SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1))
recommended_key_buffer_size FROM
(SELECT LEAST(POWER(2,32),KBS1) KBS
FROM (SELECT SUM(index_length) KBS1
FROM information_schema.tables
WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','mysql')) AA ) A,
(SELECT 2 PowerOf1024) B;
mysql> SELECT CONCAT(ROUND(KBS/POWER(1024,
    -> IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999),
    -> SUBSTR(' KMG',IF(PowerOf1024<0,0,
    -> IF(PowerOf1024>3,0,PowerOf1024))+1,1))inn
    -> recommended_key_buffer_size FROM
    -> (SELECT LEAST(POWER(2,32),KBS1) KBS
    -> FROM (SELECT SUM(index_length) KBS1
    -> FROM information_schema.tables
    -> WHERE engine='MyISAM' AND
    -> table_schema NOT IN ('information_schema','mysql')) AA ) A,
    -> (SELECT 2 PowerOf1024) B;
+-----------------------------+
| recommended_key_buffer_size |
+-----------------------------+
| 2095M                       |
+-----------------------------+
1 row in set (43.45 sec)

InnoDB için;

SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
WHERE engine='InnoDB') A,
(SELECT 2 PowerOf1024) B;
mysql> SELECT CONCAT(ROUND(KBS/POWER(1024,
    -> IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999),
    -> SUBSTR(' KMG',IF(PowerOf1024<0,0,
    -> IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size
    -> FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
    -> WHERE engine='InnoDB') A,
    -> (SELECT 2 PowerOf1024) B;
+-------------------------------------+
| recommended_innodb_buffer_pool_size |
+-------------------------------------+
| 93089M                              |
+-------------------------------------+
1 row in set (35.77 sec)

Kaynak : http://dba.stackexchange.com/questions/1/what-are-the-main-differences-between-innodb-and-myisam/2194#2194

Posted in Linux, MySQL on November 16th, 2012 by Kürşad DARA | | 0 Comments

rsync ile detaylı dosya aktarımı.

rsync kullanırken dosya transferinin ne aşamada olduğu, saniyede ne kadar dosya attığı vs gibi bilgileri görmek istiyorsanız :

–stats ve –progress parametrelerini ekleyebilirsiniz.

root#rsync -avz --progress --stats /home/* /data/
receiving incremental file list
all14112012.sql
   320110592   0%    9.08MB/s    1:19:49

Posted in Console, Linux on November 14th, 2012 by Kürşad DARA | | 0 Comments

Komut satırından çalışan bazı linux network / bandwidth izleme araçları

Linux’te kullanabileceğiniz bazı konsol bazlı network / bandwidth izleme araçları.

1. bwm-ng

Açıklama :
Bandidth Monitor NG konsol bazlı çalışan anlık ethernet istatistiklerini veren bir yazılım. Linux dışında BSD, Solaris Mac OS X işletim sistemlerinde de çalışıyor.

Ekran Görüntüsü :

Web sitesi :
http://www.gropp.org/?id=projects&sub=bwm-ng

2. iftop

Açıklama :
Konsol bazlı çalışan anlık ethernet istatistiklerini veren bir yazılım.

Ekran Görüntüsü :

Web sitesi :
http://www.ex-parrot.com/~pdw/iftop/

3. vnstat

Açıklama :
Konsol bazlı network trafik izleme yazılımı.

Ekran Görüntüsü :

Web sitesi :
http://humdi.net/vnstat/

4. iptraf

Açıklama :
Konsol bazlı network trafik izleme yazılımı. Bütün network istatistiklerini tutuyor.

Ekran Görüntüsü :

Web sitesi :
http://iptraf.seul.org/

5. bwbar

Açıklama :
Konsol bazlı network trafik izleme yazılımı.

Ekran Görüntüsü :

Web sitesi :
http://www.kernel.org/pub/software/web/bwbar/

6. iperf

Açıklama :
Konsol bazlı network trafik izleme yazılımı.

Ekran Görüntüsü :

Web sitesi :
http://sourceforge.net/projects/iperf/

7. ibmonitor

Açıklama :
Konsol bazlı network trafik izleme yazılımı.

Ekran Görüntüsü :

Web sitesi :
http://ibmonitor.sourceforge.net/

8. dstat

Açıklama :
Konsol bazlı network trafik izleme yazılımı.

Ekran Görüntüsü :

Web sitesi :
http://dag.wieers.com/home-made/dstat/

9. ifstat

Açıklama :
Konsol bazlı network trafik izleme yazılımı.

Ekran Görüntüsü :

Web sitesi :
http://gael.roualland.free.fr/ifstat/

10. ipfm

Açıklama :
Konsol bazlı network trafik izleme yazılımı.

Ekran Görüntüsü :

Web sitesi :
http://robert.cheramy.net/ipfm/

11. bmon

Açıklama :
Konsol bazlı network trafik izleme yazılımı.

Ekran Görüntüsü :

Web sitesi :
http://www.infradead.org/~tgr/bmon/

12. nload

Açıklama :
Konsol bazlı network trafik izleme yazılımı.

Ekran Görüntüsü :

Web sitesi :
http://sourceforge.net/projects/nload/

Posted in Genel, Linux on August 7th, 2012 by Kürşad DARA | | 0 Comments

LVM disk resize işlemi

Vmware üstünde çalışan bir linux makinenin diskini artırdım. LVM üstündende bunu yapmak gerekiyor tabi ki.

[root@localhost ~]# fdisk -l

Disk /dev/sda: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0008a7d6

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        1306     9972736   8e  Linux LVM

Disk /dev/mapper/VolGroup-lv_root: 5981 MB, 5981077504 bytes
255 heads, 63 sectors/track, 727 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_root doesn`t contain a valid partition table

Disk /dev/mapper/VolGroup-lv_swap: 4227 MB, 4227858432 bytes
255 heads, 63 sectors/track, 514 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_swap doesn`t contain a valid partition table

Öncelikle yeni bir partition oluşturuyoruz.

[root@localhost ~]# fdisk  /dev/sda

WARNING: DOS-compatible mode is deprecated. It`s strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (1306-10443, default 1306): 
Using default value 1306
Last cylinder, +cylinders or +size{K,M,G} (1306-10443, default 10443): 
Using default value 10443

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

Reboot işleminden sonra, pvcreate komutu ile oluşturduğumuz diski LVM görecek şekilde oluşturuyoruz.

[root@localhost ~]# pvcreate /dev/sda3
  Writing physical volume data to disk "/dev/sda3"
  Physical volume "/dev/sda3" successfully created

lvdisplay ile var olan konfigürasyona bakıyoruz.

[root@localhost ~]# lvdisplay 
  --- Logical volume ---
  LV Name                /dev/VolGroup/lv_root
  VG Name                VolGroup
  LV UUID                IqdsSn-2dBV-QDhf-Ym13-c7vy-v79b-EQv6UK
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                5.57 GiB
  Current LE             1426
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
  --- Logical volume ---
  LV Name                /dev/VolGroup/lv_swap
  VG Name                VolGroup
  LV UUID                Bvh8l4-DNXF-WmXy-z7Hi-7oVi-VJhb-4Fl7wC
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                3.94 GiB
  Current LE             1008
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

Sıra geldi Volume Group’u vgextend ile büyütmeye.

[root@localhost ~]# vgextend VolGroup /dev/sda3
  Volume group "VolGroup" successfully extended

Baktığımızda;

[root@localhost ~]# vgdisplay 
  --- Volume group ---
  VG Name               VolGroup
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               79.50 GiB
  PE Size               4.00 MiB
  Total PE              20353
  Alloc PE / Size       2434 / 9.51 GiB
  Free  PE / Size       17919 / 70.00 GiB
  VG UUID               QxKsuL-3ke0-sZHW-e4cA-Rqyq-6vRg-zjCc2m

LVM’de total size istediğimiz gibi oldu. Şimdi diskimizi büyütelim artık.

[root@localhost ~]# lvextend -L +70GB /dev/mapper/VolGroup-lv_root 
  Extending logical volume lv_root to 75.57 GiB
  Insufficient free space: 17920 extents needed, but only 17919 available

Bu hatanın sebebi şu eklediğimiz boş alan tam olarak 70GB değil ( 69 küsür GB ) o yüzden 69GB olarak veriyoruz.

lvextend komutu ile de “Free PE / Size” alanında belirtilen kadar boş alanı kullanıp diski extend ediyoruz.
df ile baktığımızda göründüğü gibi disk alanını hala eskisi gibi.

[root@localhost ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       5749032   1584584   3872404  30% /
tmpfs                  1960684         0   1960684   0% /dev/shm
/dev/sda1               495844     56486    413758  13% /boot
[root@localhost ~]# lvextend -L +69GB /dev/mapper/VolGroup-lv_root   
  Extending logical volume lv_root to 74.57 GiB
  Logical volume lv_root successfully resized

Extend işleminden sonra resize2fs ile lvm e eklediğimiz disk alanını linux dosya sisteminde genişletiyoruz.

[root@localhost ~]# resize2fs /dev/mapper/VolGroup-lv_root 
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/VolGroup-lv_root is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 5
Performing an on-line resize of /dev/mapper/VolGroup-lv_root to 19548160 (4k) blocks.
The filesystem on /dev/mapper/VolGroup-lv_root is now 19548160 blocks long.

df ile baktığımızda göründüğü gibi artık diskimiz istediğimiz boyuta büyüdü.

[root@localhost ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       74G  1.6G   69G   3% /
tmpfs                 1.9G     0  1.9G   0% /dev/shm
/dev/sda1             485M   56M  405M  13% /boot

Posted in File Systems, Linux on June 26th, 2012 by Kürşad DARA | | 0 Comments

Powermta Startup error: Error: host name “xxx” is not fully qualified, please configure ‘host-name’ and/or ‘domain-suffix’. hatası

PowerMTA sunucularından birini start etmek istediğimde aşağıdaki hatayı aldım.

[root@xxx ~]# /etc/init.d/pmta start
Starting PowerMTA: [FAILED]
[root@xxx ~]# pmtad --debug         
2012-04-24 12:35:56 Startup error: Error: host name "xxx" is not fully qualified, please configure 'host-name' and/or 'domain-suffix'.

Çözüm olarak hostname olarak full domain name set etmek gerekiyor.

[root@xxx sysconfig]# hostname
xxx
[root@xxx sysconfig]# vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=xxx.kursad.com
GATEWAY=xxx.xxx.xxx.xxx
[root@xxx sysconfig]# hostname xxx.kursad.com
[root@xxx sysconfig]# hostname
xxx.kursad.com
[root@xxx sysconfig]# /etc/init.d/pmta start
Starting PowerMTA: [  OK  ]
[root@xxx sysconfig]# pmtad --debug
2012-04-24 12:38:26 Startup error: PowerMTA is already running

Posted in Linux, Mail Servers on April 24th, 2012 by Kürşad DARA | | 0 Comments

Apache ve PHP’nin versiyon bilgilerini gizleme

Apache ve PHP’nin versiyon bilgilerini headerdan gizleme ihtiyacı duydum. Dursun diye buraya da koyayım bari.

Apache’nin versiyon bilgilerini saklamak için :

/etc/httpd/conf/httpd.conf dosyasında ( ya da sizin conf dosyasınız nerede ise ) aşağıdaki parametreleri ayarlayın.

ServerSignature Off
ServerTokens ProductOnly

Siz aşağıdaki tablodan yararlanıp isterseniz başka değer verebilirsiniz.

ServerToken Görüntülenecek Bilgi
ProductOnly Server: Apache
Major Server: Apache/2
Minor Server: Apache/2.0
Minimal Server: Apache/2.0.55
OS Server: Apache/2.0.55 (Redhat)
Full(veya boş) Server: Apache/2.0.64 (Unix) mod_ssl/2.0.64 OpenSSL/0.9.8e-fips-rhel5
 

Parametreleri ayarlamadan önce :

root@localhost:~# curl -I http://www.kursaddara.com
HTTP/1.1 200 OK
Date: Mon, 16 Apr 2012 06:45:50 GMT
Server: Apache/2.0.64 (Unix) mod_ssl/2.0.64 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
X-Powered-By: PHP/5.2.9
Connection: close
Content-Type: text/html

Parametreleri ayarladıktan sonra :

root@localhost:~# curl -I http://www.kursaddara.com
HTTP/1.1 200 OK
Date: Mon, 16 Apr 2012 06:47:56 GMT
Server: Apache
X-Powered-By: PHP/5.2.9
Connection: close
Content-Type: text/html

Gördüğünüz gibi Apache bilgileri gizlendi.

Şimdi PHP versiyon bilgilerini gizleyelim.

/etc/php.ini dosyasında ( sizin config dosyanız nerede ise ) aşağıdaki parametreleri ayarlayın.

expose_php Off

Parametreleri ayarladıktan sonra :

root@localhost:~# curl -I http://www.kursaddara.com
HTTP/1.1 200 OK
Date: Mon, 16 Apr 2012 06:48:47 GMT
Server: Apache
Connection: close
Content-Type: text/html

Gördüğünüz gibi PHP versiyon bilgisi gitti.

Bu parametreleri değiştirdikten sonra apache’yi restart etmeniz gerekmektedir.

Posted in Apache, Linux, PHP on April 16th, 2012 by Kürşad DARA | | 0 Comments

ERROR 126 (HY000): Incorrect key file for table ‘/mnt/mysql-tmp/#sql_1a76_2.MYI’; try to repair it hatası

mySQL de bir query çalıştırdığınızda;

ERROR 126 (HY000): Incorrect key file for table '/mnt/mysql-tmp/#sql_1a76_2.MYI'; try to repair it

hatasını alıyorsanız bunun birkaç sebebi olabilir.

1. mySQL’in temp tabloları oluşturduğu dizini RAM üzerinde oluşturacak şekilde ayırdıysanız ve örneğin 2GB alan verdiyseniz ve gönderdiğiniz querynin oluşturduğu temp tablosu 2GB’tan büyük ise bu hatayı alırsınız. Bunun çözümü ya RAM’de temp tablo için ayırdığınız alanı artıracaksınız ya da querynizi optimize edeceksiniz.

/dev/ram1             2.0G     0  2.0G   0% /mnt/mysql-tmp
kursad:/mnt/mysql-tmp # ls -la /mnt/mysql-tmp/
total 2.0G
drwxrwxrwt 2 root  root    80 Feb 16 11:01 .
drwxr-xr-x 9 root  root  4.0K Feb 15 14:16 ..
-rw-rw---- 1 mysql mysql 2.0G Feb 16 11:01 #sql_1a76_0.MYD
-rw-rw---- 1 mysql mysql 1.0K Feb 16 11:01 #sql_1a76_0.MYI

2. İlgili tablo bozuk olabilir. Repair edip sorunu çözebilirsiniz.

Posted in Linux, MySQL on February 16th, 2012 by Kürşad DARA | | 0 Comments

« Previous PageNext Page »