InnoDB en ideal log file size belirleme.

InnoDB kullandığınız yerlerde en ideal log file size ayarlamak için aşağıdaki gibi bir test yapabilirsiniz.

Bu işlem mySQL’de InnoDB veritabanlarının 1 dakikada aşağı yukarı ne kadar log yazdığını görüyoruz.

Bu işlemi veritabanının en yoğun zamanlarında yapmanız önerilir.

Öncelikle istediğimiz veriyi alabilmemiz için pager komutu ile sequenceleri yakalıyoruz.

mysql> pager grep sequence
PAGER set to 'grep sequence'

Sonra aşağıdaki gibi show innodb status çıktısını 1 dakika aralıklarla çalıştırıp başlangıç ve bitişte ne kadar log yazmış onu buluyoruz.

mysql> show engine innodb status\G select sleep(60); show engine innodb status\G

Log sequence number 156081984562
1 row in set (0.00 sec)

1 row in set (59.99 sec)

Log sequence number 156092992419
1 row in set (0.00 sec)

Daha sonra pager i tekrar sıfırlıyoruz.

mysql> pager
Default pager wasn't set, using stdout.

Şimdi aradaki farklı Mb cinsinden buluyoruz.

mysql> select ( 156092992419 - 156081984562 ) / 1024 / 1024 as mb;
+-------------+
| mb          |
+-------------+
| 10.49791050 |
+-------------+
1 row in set (0.00 sec)

Buradan anladığımız dakikada 10 mb veri yazılmış.

Saatlik bazda bakarsak 60*10=600MB.

innodb_log_file_size parametresini 600-700 Mb arası yapabiliriz.

Yukarıda yaptığımız testi mySQL 5.0 dan sonra SHOW GLOBAL STATUS komutu ile görebiliriz.

Bu komut çıktısındaki Innodb_os_log_written parametresinden de elde edebiliriz.

mysql> SHOW GLOBAL STATUS like '%Innodb_os_log_written%';
+-----------------------+-----------+
| Variable_name         | Value     |
+-----------------------+-----------+
| Innodb_os_log_written | 632924672 |
+-----------------------+-----------+
1 row in set (0.00 sec)

Posted in Linux, MySQL on November 16th, 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

SSH bağlantılarının zaman aşımına uğramasını engellemek için

/etc/ssh/sshd_config dosyasında aşağıdaki parametreleri aktif edip sshd yi kapatıp açmanız yeterli olacaktır.

ClientAliveInterval 60
TCPKeepAlive yes 
ClientAliveCountMax 99999

Posted in Console, Linux on November 7th, 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

mysqldump ve mydumper performans karşılaştırması.

mydumper multi thread çalışan bir mysql dump uygulaması.

Ben mysqldump ile mydumper performanslarını test ettim. Sonuçlar aşağıda.

Önce 1.5 milyon kayıtlı bir veritabanı üstünde test ettim.

mysql> SELECT SUM(TABLE_ROWS) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '';  
+-----------------+
| SUM(TABLE_ROWS) |
+-----------------+
|         1522578 |
+-----------------+
[root@localhost backup]# time /usr/bin/mysqldump  --opt --verbose --max_allowed_packet=500M --single_transaction --net_buffer_length=100M -t --skip-add-locks --skip-extended-insert --skip-comments > mysqldump.sql
real    0m9.933s
user    0m6.114s
sys     0m0.598s

[root@localhost backup]# time mydumper -B  -o /root/backup/
real    0m5.406s
user    0m2.555s
sys     0m0.353s

Gördüğünüz gibi mysqldump yaklaşık 2 katı daha fazla sürüyor.

Şimdi kayıt sayısı 25 milyon olan bir veritabanı üstünde test edelim.

mysql> SELECT SUM(TABLE_ROWS) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '';
+-----------------+
| SUM(TABLE_ROWS) |
+-----------------+
|        28570568 |
+-----------------+
[root@localhost backup]# time /usr/bin/mysqldump  --opt --verbose --max_allowed_packet=500M --single_transaction --net_buffer_length=100M -t --skip-add-locks --skip-extended-insert --skip-comments > mysqldump.sql
real    3m24.774s
user    1m44.076s
sys     0m12.374s

[root@localhost backup]# time mydumper -B  -o /root/backup/
real    1m58.312s
user    0m44.470s
sys     0m5.543s

Evet sonuç yine değişmedi. mydumper mysqldump’tan daha hızlı.

Mydumper : www.mydumper.org

Posted in Linux, MySQL, Web Development on July 31st, 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

ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log hatası

MySQL’de replikasyon yaptığım slave sunucuda bazı işlemler yapmam gerekti. Sonrasında;

mysql> CHANGE MASTER TO MASTER_HOST='xx.xx.xx.xx', MASTER_USER='slave_user' ,MASTER_PASSWORD='xxx'   ,MASTER_LOG_FILE='mysql-bin.001788' ,MASTER_LOG_POS=549864673;
ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log

hatasını aldım.

Tabii ki yapmak gereken çok basit

mysql> flush slave;
Query OK, 0 rows affected (0.00 sec)

sonrasında problemsiz devam edebilirsiniz.

Posted in Linux, MySQL on June 22nd, 2012 by Kürşad DARA | | 0 Comments

Apache mod_rewrite loglarini aktif etmek için.

Apache rewrite kullanırken eğer rewrite aktivitelerini loglamak ve debug etmek isterseniz aşağıdaki parametreleri apache config dosyasına yazıp apache yi kapatıp açmanız gerekir.

RewriteLog "/var/log/httpd/rewrite_log"
RewriteLogLevel 3

RewriteLogLevel ı artırdıkça log dosyasınızdaki detay artacaktır ve doğal olarak apache yi yavaşlatacaktır.

Debug işlerinizi bitirdikten sonra bu parametreyi tekrar kapatırsanız mantıklı olur. Sonra unutup log dosyasının şişmesine sebeb olabilir.

Posted in Apache, Linux on May 2nd, 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

« Previous PageNext Page »