Nagios Return code of 127 is out of bounds – plugin may be missing hatası

Nagios’ta aşağıdaki hatayı alıyorsanız eğer;

Return code of 127 is out of bounds - plugin may be missing

Çözüm olarak

resource.cfg dosyasına

$USER2$=/etc/nagios3/libexec

eklemeniz gerekmektedir. Ekledikten sonra nagios u kapatıp açarsanız sorun düzelecektir.

Buradaki /etc/nagios3/plugins benim pluginlerimin bulunduğu dizin. Sizin eklediğiniz script nerde ise orayı yazmanız gerekir.

Posted in Linux, Nagios on December 20th, 2012 by Kürşad DARA | | 0 Comments

mysql de alırken tabloları lock etmeden dump alma

–single-transaction parametresi ile bunu yapabilirsiniz.

mysqldump -q --single-transaction veritabani_ismi > mysqldump.sql

Posted in Linux, MySQL, Veritabanları on December 15th, 2012 by Kürşad DARA | | 0 Comments

mysqldump: Got error: 1556: You can’t use locks with log tables. when using LOCK TABLES hatası

mysqldump ile backup alırken aşağıdaki hata ile karşılaşıyorsanız tabloları lock etmesini kaldırıp devam edebilirsiniz veya mysql veritabanını yedeklemezsiniz.

mysqldump: Got error: 1556: You can't use locks with log tables. when using LOCK TABLES

lock etmesini kaldırmak için dump parametreleri arasına –lock-tables=0 eklemelisiniz.

--lock-tables=0

Posted in Linux, MySQL, Veritabanları on December 6th, 2012 by Kürşad DARA | | 0 Comments

linux sunucusunun maksimum kac gb ram desteklediğini ve kaç slot un boş olduğunu bulmak için

Linux sunucunuzun desteklediği maksimum ram ve slot sayısını bulmak icab ederse;

[root@xxx ~]# dmidecode -t 16
# dmidecode 2.11
SMBIOS 2.5 present.

Handle 0x002A, DMI type 16, 15 bytes
Physical Memory Array
        Location: System Board Or Motherboard
        Use: System Memory
        Error Correction Type: Single-bit ECC
        Maximum Capacity: 288 GB
        Error Information Handle: Not Provided
        Number Of Devices: 18

Ayrıca kaç adet slot boşta görebilmek için http://www.4schmidts.com/unix/memconf.gz adresinden memconf u indirin ve sisteminize kurun.
dmidecode ile uğraşırsanız scripte gerek kalmadan bulabilirsiniz.

Daha sonra;

[root@xxx ~]# perl memconf -v
memconf:  V3.02 02-Oct-2012 http://www.4schmidts.com/unix.html
hostname: xxx
manufacturer: FUJITSU
model:    PRIMERGY RX300 S6 (Quad-Core Hyper-Threaded Intel(R) Xeon(R) E5620 2400MHz)
CentOS release 6.3 (Final), 64-bit kernel, Linux 2.6.32-279.11.1.el6.x86_64
CPU 1: Intel(R) Xeon(R) E5620 2400MHz cpu
CPU 2: Unpopulated
Memory Error Correction: Single-bit ECC
Maximum Memory: 294912MB (288GB)
DIMM-1A n/a: 4096MB 1066MHz Synchronous DDR3 DIMM, n/a n/a
DIMM-2A n/a: 8192MB 1066MHz Synchronous DDR3 DIMM, n/a n/a
DIMM-1B n/a: 4096MB 1066MHz Synchronous DDR3 DIMM, n/a n/a
DIMM-1C n/a: 8192MB 1066MHz Synchronous DDR3 DIMM, n/a n/a
empty memory sockets: DIMM-3A n/a, DIMM-2B n/a, DIMM-3B n/a, DIMM-2C n/a, DIMM-3C n/a, DIMM-1D n/a, DIMM-2D n/a, DIMM-3D n/a, DIMM-1E n/a, DIMM-2E n/a, DIMM-3E n/a, DIMM-1F n/a, DIMM-2F n/a, DIMM-3F n/a
total memory = 24576MB (24GB)

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

mysql ile dump alırken bazı tabloları dahil etmemek için

–ignore-table parametresini kullanabilirsiniz.

mysqldump --ignore-table=db_ismi.table1 --ignore-table=db_ismi.table2 db_ismi > dump.sql

Posted in Linux, MySQL, Veritabanları on November 23rd, 2012 by Kürşad DARA | | 0 Comments

Innodb veritabanları için ibdata1’in dosyasının boyutunu küçültme (shrink edilmesi )

Innodb veritabanı kullanıyorsanız bir süre sonra ibdata1 dosyanızın çok fazla büyüdüğünü göreceksiniz.

Bu dosyanın büyümesi performans ve disk kullanımı açısından problem yaratacaktır. MySQL üstünde bu dosyanın küçültülmesi ile ilgili direk bir komut yok. O yüzden biraz çetrefilli bir yöntemle bu dosyanın boyutunu küçültmek gerekiyor.

Kısaca;

1. MySQL sunucuyu durdurun,
2. MySQL data dizinini komple yedekleyin,
3. MySQL sunucuyu tekrar başlatın,
4. Veritabanının yedeğini mysqldump ile alın,
5. Veritabanlarını silin,
6. MySQL sunucuyu tekrar durdurun,
7. ibdata1, ib_logfile0 ve ib_logfile1 dosyalarını silin,
8. MySQL sunucuyu tekrar çalıştırın,
9. Aldığınız yedeği tekrar yükleyin ( import )

bu adımlarla bu işlemi yapıyoruz.

Detaylara gelirsek;

1. MySQL sunucuyu durdurun.

2. MySQL data dizininin tamamını yedekleyin. Böylece herhangi bir sorun halinde geri dönmemiz kolay olacaktır.

3. MySQL sunucuyu tekrar başlatın.

4. Öncelikle veritabanının yedeğini alıyoruz.


/usr/bin/mysqldump --opt --routines --triggers --all-databases > all.sql

Yedeğin sağlık ve hatasız bir şekilde alındığından emin olun.

5. Veribanlarını drop ile silin.

6. MySQL sunucuyu tekrar durdurun.

7. MySQL data dizininde bulunan ibdata1, ib_logfile0 ve ib_logfile1 dosyalarını silin.

8. MySQL sunucuyu tekrar başlatın. MySQL sunucusunu çalıştırmadan önce. Konfigürasyon dosyanıza ( my.cnf )


innodb_file_per_table

parametresini ekleyin. Böylece artık her tablo için daha küçük bir ibd oluşmasını sağlayacaktır. Bu sayede ilerde çok büyüyen tabloları dump ve restore edip downtime yaşanmadan bu işlemleri yapabilir olursunuz.

Detaylı bilgi için : http://dev.mysql.com/doc/refman/5.6/en/innodb-multiple-tablespaces.html

9. Şimdi mysqldump ile aldığımız dosyayı tekrar import edip veritabanlarını tekrar yükleyin.


/usr/bin/mysql < all.sql

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

MySQL’de fragmented olmuş tabloları bulma ve optimize etme

Aşağıdaki query ile fragmented tabloları bulabilirsiniz.

mysql> select TABLE_NAME,Data_free from information_schema.TABLES where TABLE_SCHEMA NOT IN ('information_schema','mysql')
and Data_free > 0;
mysql> OPTIMIZE TABLE tablo_adi

şeklinde optimize edebilirsiniz. Bu işlem performansı artıracaktır.

Aşağıdaki script te otomatize edilmiş halde yapabilirsiniz. ( Google search )

#!/bin/sh

echo -n "MySQL username: " ; read username
echo -n "MySQL password: " ; stty -echo ; read password ; stty echo ; echo

mysql -u $username -p"$password" -NBe "SHOW DATABASES;" | grep -v 'lost+found' | while read database ; do
mysql -u $username -p"$password" -NBe "SHOW TABLE STATUS WHERE engine='MyISAM';" $database | while read name engine version rowformat rows 
avgrowlength datalength maxdatalength indexlength datafree autoincrement createtime updatetime checktime collation checksum createoptions comment ; do
  if [ "$datafree" -gt 0 ] ; then
   fragmentation=$(($datafree * 100 / $datalength))
   echo "$database.$name is $fragmentation% fragmented."
   mysql -u "$username" -p"$password" -NBe "OPTIMIZE TABLE $name;" "$database"
  fi
done
done

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

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

« Previous PageNext Page »