Wie kann man die binlog lesen ?

MySQL, PostgreSQL, SQLite
marquinhos
Posts: 53
Joined: 2004-01-12 17:55
Location: Fellbach

Wie kann man die binlog lesen ?

Post by marquinhos » 2006-11-07 17:03

Hallo Ihr,

werden die MySQL Zugriffe (selects, updates, ...) immer in den Log-Dateien mitgeschrieben ?

Habe in dem Verzeichnis /var/lib/mysql eine grosse aktuelle XXXXXX-bin.XXX Datei (z.B. p123456-bin.306). Wie kann man diese lesen ?

Oder werden die Logs woanders mitgeschrieben ?

my.conf

Code: Select all

# Example mysql config file for medium systems.
#
# This is for a system with little memory (32M - 64M) where MySQL plays
# a important part and systems up to 128M very MySQL is used together with
# other programs (like a web server)
#
# You can copy this file to
# /etc/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options (in this
# installation this directory is /var/lib/mysql) or
# ~/.my.cnf to set user-specific options.
#
# One can in this file use all long options that the program supports.
# If you want to know which options a program support, run the program
# with --help option.

# The following options will be passed to all MySQL clients
[client]
#password	= your_password
port		= 3306
socket		= /var/lib/mysql/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port		= 3306
socket		= /var/lib/mysql/mysql.sock
skip-locking
#skip-networking
set-variable	= key_buffer=16M
set-variable	= max_allowed_packet=1M
set-variable	= table_cache=64
set-variable	= sort_buffer=512K
set-variable	= net_buffer_length=8K
set-variable	= myisam_sort_buffer_size=8M
log-bin
server-id	= 1

# Point the following paths to different dedicated disks
#tmpdir		= /tmp/		
#log-update 	= /path-to-dedicated-directory/hostname

# Uncomment the following if you are using BDB tables
#set-variable	= bdb_cache_size=4M
#set-variable	= bdb_max_lock=10000

# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /var/lib/mysql/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /var/lib/mysql/
#innodb_log_arch_dir = /var/lib/mysql/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#set-variable = innodb_buffer_pool_size=16M
#set-variable = innodb_additional_mem_pool_size=2M
# Set .._log_file_size to 25 % of buffer pool size
#set-variable = innodb_log_file_size=5M
#set-variable = innodb_log_buffer_size=8M
#innodb_flush_log_at_trx_commit=1
#set-variable = innodb_lock_wait_timeout=50

# The safe_mysqld script
[safe_mysqld]
err-log=/var/lib/mysql/mysqld.log

[mysqldump]
quick
set-variable	= max_allowed_packet=16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
set-variable	= key_buffer=20M
set-variable	= sort_buffer=20M
set-variable	= read_buffer=2M
set-variable	= write_buffer=2M

[myisamchk]
set-variable	= key_buffer=20M
set-variable	= sort_buffer=20M
set-variable	= read_buffer=2M
set-variable	= write_buffer=2M

[mysqlhotcopy]
interactive-timeout

Thanks !

snowball
Posts: 218
Joined: 2004-09-15 10:14

Re: Wie kann man die binlog lesen ?

Post by snowball » 2006-11-07 20:41

marquinhos wrote: werden die MySQL Zugriffe (selects, updates, ...) immer in den Log-Dateien mitgeschrieben ?
Nur solange die Zeile

Code: Select all

log-bin
in deiner Konfiguration aktiv ist.
marquinhos wrote: Habe in dem Verzeichnis /var/lib/mysql eine grosse aktuelle XXXXXX-bin.XXX Datei (z.B. p123456-bin.306). Wie kann man diese lesen ?
Ich glaube der Befehl zum lesen heißt: mysqlbinlog aber sicher bin ich mir da nicht.
marquinhos wrote: Oder werden die Logs woanders mitgeschrieben ?
Welche Logs speziell suchst du denn?

marquinhos
Posts: 53
Joined: 2004-01-12 17:55
Location: Fellbach

Re: Wie kann man die binlog lesen ?

Post by marquinhos » 2006-11-08 08:24

Ja, es ist die mysqlbinlog

http://dev.mysql.com/doc/refman/5.1/de/mysqlbinlog.html

Leider habe ich nur Version 1.6 auf dem Server.

Wie kann ich mysqlbinlog updaten ? Über Yast habe ich nichts gefunden.

Es werden nur Updates und Inserts in die Binlog's geschrieben. selects werden nicht angezeigt ... würde wohl sonst auch den Rahmen sprengen ... oder gibt es dort eine spezielle Funktion oder Einstellung in MySQL ?

Thanks !

snowball
Posts: 218
Joined: 2004-09-15 10:14

Re: Wie kann man die binlog lesen ?

Post by snowball » 2006-11-08 08:35

marquinhos wrote: Wie kann ich mysqlbinlog updaten ? Über Yast habe ich nichts gefunden.
Wenn es über Yast nicht geht, versuche es doch direkt bei mysql.com/org. Bin mir nicht sicher, aber ich glaube, mysqlbinlog ist Bestandteil vom mysql_client Paket.
marquinhos wrote: Es werden nur Updates und Inserts in die Binlog's geschrieben. selects werden nicht angezeigt ... würde wohl sonst auch den Rahmen sprengen ... oder gibt es dort eine spezielle Funktion oder Einstellung in MySQL ?
Thanks !
Wenn du SELECTS loggen willst, gibt es auch ne Möglichkeit:

Code: Select all

log-slow-queries = /var/log/slow.txt
long_query_time = 3
Jetzt werden alle QUERYS geloggt, die länger als 3 Sekunden dauern. Kannste ja mal ein Bisschen mit testen. Keine Ahnung, ob es da noch andere Möglichkeiten gibt.

stanglwirt
Posts: 48
Joined: 2006-01-10 14:44

Re: Wie kann man die binlog lesen ?

Post by stanglwirt » 2006-11-08 08:39

aber wozu die selects loggen? zugriffe auf bestimmte sachen würd ich in der applikation loggen, falls erforderlich. das binlog ist für backup und recovery da. da ist selects zu loggen nutzlos.

snowball
Posts: 218
Joined: 2004-09-15 10:14

Re: Wie kann man die binlog lesen ?

Post by snowball » 2006-11-08 08:42

Naja, zu debugging Zwecken, kann das schon mal hilfreich sein, wenn man nicht die Aplikation umstricken muss, um einen Fehler zu finden.

Ein kleines Beispiel von letzte Woche...
Ich bastel grade an der Umstellung meines Proftpd auf ein MySQL Backend. Da die Module fertig in C geschrieben sind und ich davon keine Ahnung habe, konnte ich mit dem Loging sehr schön sehen, das ich mich bei einem SQL-Statement in der Konfig Datei des Proftpd vertippt hatte...

EDIT: Natürlich ist das mitloggen jedes Statements nicht gut für die Performance :lol:

duergner
Posts: 923
Joined: 2003-08-20 11:30
Location: Pittsburgh, PA, USA

Re: Wie kann man die binlog lesen ?

Post by duergner » 2006-11-08 10:46

Dafuer kannst du doch einfach das normale Logging einschalten. Da werden alle Queries geloggt.