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 Page — Next Page »