Yanıtlar:
Chealion'un belirttiği gibi, mysql'nizin kurulu olabileceği birkaç yol var. Her biri verilerini dir ve / veya günlüklerini farklı yerlere yerleştirecek. Aşağıdaki komut size (ve bize) nereye bakılacağına dair iyi bir gösterge verecektir.
ps auxww|grep [m]ysqld
# Putting brackets around the first char is a `grep`+`ps` trick
# to keep it from matching its own process.
# Note: For zsh compatibility put quotes around the grep regex
Bu komutun sonucunu buraya yazabilir misiniz? Benimki şuna benziyor:
_mysql 101 0.0 0.3 112104 13268 ?? S 12:30AM 0:13.20 /opt/local/libexec/mysqld --basedir=/opt/local --datadir=/opt/local/var/db/mysql --user=mysql --pid-file=/opt/local/var/db/mysql/rbronosky-mbp.pid
root 76 0.0 0.0 600172 688 ?? S 12:30AM 0:00.02 /bin/sh /opt/local/lib/mysql/bin/mysqld_safe --datadir=/opt/local/var/db/mysql --pid-file=/opt/local/var/db/mysql/rbronosky-mbp.pid
Bundan, datadir'imin /opt/local/var/db/mysql
(MacPorts aracılığıyla kurduğum için) olduğunu görebilirsiniz. Bu dersi biraz daha alalım ...
İlk satırdan daemonumu görebilirsiniz /opt/local/libexec/mysqld
. mysqld
İle çağrılabilir --verbose --help
tüm komut satırı seçeneklerinin bir listesini almak için (ve burada önemli / değerli parçasıdır!) Eğer mysqld başlatılması yerine sadece yardım çıkışını kontrol olsaydı kullanılacak değerleri ile izlenmektedir. Değerler, derleme zamanı yapılandırmanızın, my.cnf
dosyanızın ve komut satırı seçeneklerinin sonucudur . Kütük dosyalarımın nerede olduğunu bulmak için KESİNLİKLE bu özelliği kullanabilirim:
/opt/local/libexec/mysqld --verbose --help|grep '^log'
Benimki şuna benziyor:
log /tmp/mysql.log
log-bin /tmp/mysql-bin
log-bin-index (No default value)
log-bin-trust-function-creators FALSE
log-bin-trust-routine-creators FALSE
log-error /tmp/mysql.error.log
log-isam myisam.log
log-queries-not-using-indexes FALSE
log-short-format FALSE
log-slave-updates FALSE
log-slow-admin-statements FALSE
log-slow-queries (No default value)
log-tc tc.log
log-tc-size 24576
log-update (No default value)
log-warnings 1
LO VE BEHOLD! Dünyadaki tüm tavsiyeler bana yardımcı olmayacaktı çünkü günlük dosyam tamamen standart olmayan bir konumda tutuluyor! Benimkini içeride tutuyorum, /tmp/
çünkü dizüstü bilgisayarımda, yeniden başlatma sırasında tüm günlüklerimi kaybetmek umrumda değil (aslında tercih ederim).
Hepsini bir araya getirelim ve sizi oneliner yapalım:
$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'
Bir komutu çalıştırdığınızda, çalışan mysql örneğiniz için tüm logların bir listesini göreceksiniz.
Keyfini çıkarın!
Bu Bash-Fu size Açık Kaynak olan her şeye bağlılığımla ücretsiz olarak getirdi.
3 tip MySQL / MariaDB günlüğü vardır:
log_error
hata mesajı günlüğü için;general_log_file
Genel sorgu günlük dosyası için (eğer etkinse general_log
);slow_query_log_file
yavaş sorgu günlük dosyası için (eğer etkinse slow_query_log
);Bu kabuk komutuyla yukarıdaki günlüklerin ayarlarını ve konumunu kontrol edin:
mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log -e slow_query_log
Varsayılan olarak günlükler veri dizininizde saklanır, bu nedenle bu kabuk komutuyla konumu kontrol edin:
mysql -se "SELECT @@datadir"
Hata günlüğünüzü görüntülemek için çalıştırabilirsiniz:
sudo tail -f $(mysql -Nse "SELECT @@log_error")
Genel işlem kaydını etkinleştirdiyseniz, görüntülemek için aşağıdakileri çalıştırın:
sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")
Bunu bulmak biraz zaman aldı ... bu yeri dene: '
sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err
/usr/local/var/mysql/<USERNAME>.local.err
Varsayılan olarak, tüm günlük dosyaları mysqld veri dizininde oluşturulur.
Kaynak: MySQL Belgeleri
mysqlbinlog
/ Usr / local / mysql / data / içindeki ikili günlük dosyalarını okumak için kullanabilirsiniz (kurulumumda hepsi ikili değildi). Bazı hatalar basitçe stderr'a yönlendirilir, bu yüzden de kontrol etmek isteyebilirsiniz /var/log/system.log
.
Bu günlüğü tutan klasör, kullanmadan size erişemeyebilir sudo
:
sudo ls -l "/usr/local/mysql-5.0.51a-osx10.5-x86"
[..]
drwxr-x--- 4 _mysql wheel 136 Jul 10 23:06 data
Büyük bir günlük dosyası bulursanız ve Time Machine kullanırken , Time Machine'in ne yaptığını okumak isteyebilirsiniz. Sunucu Arızasında.
Varsayılan olarak, tüm günlük dosyaları mysqld veri dizininde oluşturulur. Ne yazık ki, birçok kişi günlük dosyalarını (ve programlarını) tipik konumlarına koymaz. Onlardan biriyim!
MySQL için Navicat'ı deneyinceye kadar bu rutinin içinden MySQL ile geçtim . Daha sonra Navicat Premium'a yükselttim . Her ikisi de tek bir kapsamlı listedeki tüm sunucu değişkenleriyle bir sekme içeren bir İzleme aracına sahiptir. İşte log_error sunucusu değişkenine sahip bir ekran görüntüsü:
Navicat Server Monitoring Tool'da log_error sunucusu değişkeni
Değişkenleri de tam burada listede ayarlayabilirsiniz.
Şerefe!
/Library/Logs/MySQL.log
mysqladmin variables
şimdi doğrudan kullanmak yerine geçerli değeri elde etmek için tercih edilen komutmysqld