Master schmiert ab, Slave syncrhonisiert nichtmehr

theomega
Userprojekt
Userprojekt
Posts: 704
Joined: 2003-01-27 14:36

Master schmiert ab, Slave syncrhonisiert nichtmehr

Post by theomega »

Hallo Leute,
ich habe folgende Situation:
Ein MySQL-Server als Master und einen als Repication-Slave auf zwei getrennten Maschinen. Funktioniert prächtig bis gerade eben: Aus dummen Gründen schmiert mir der Master komplett ab, ich kann aber durch einen Serverneustart und einem Table-Repair alles wieder ins Lot bringen. Der Slave dagegen bekommt keinen Sync mehr, weil er versucht auf nicht existente Bin-Logs zuzugriefen (zu hoher index, die existieren garnicht). Ich wußte ja auch nicht genau zu welchem Zeitpunkt er den Sync verloren hat, deshalb konnte ich ihm keine neuen binlog-pos geben. Ich habe es jetzt so gemacht das ich auf dem Master einen Snapshot des Datenverzeichnisses (dank LVM nicht so das problem) auf den slave geschoben habe und die replikation neugestartet habe.

Ist das wirklich die einzige Lösung? Heißt das jedesmal wenn mir der Master abschmieren sollte (hoffe ja nicht das es zu oft passiert) hängt der Slave die Syhncronisation an den Nagel?

Danke schonmal

TO
Top

User avatar
Joe User
Project Manager
Project Manager
Posts: 11519
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Master schmiert ab, Slave syncrhonisiert nichtmehr

Post by Joe User »

Normalerweise sollte der Slave die Replikation automatisch an der richtigen Stelle wieder aufnehmen. Wie sehen denn die beiden my.cnf aus? Waren die Binlogs am Master noch vollständig vorhanden oder versehentlich gelöscht?
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Top

theomega
Userprojekt
Userprojekt
Posts: 704
Joined: 2003-01-27 14:36

Re: Master schmiert ab, Slave syncrhonisiert nichtmehr

Post by theomega »

Die Binlogs die der Slave wollte waren nicht da (existent war bis nummer 17, er wollte 25). Config sieht simpel aus:

Master:

Code: Select all

character-set-server            = utf8
default-character-set           = utf8
user                                            = mysql
port                                            = 3306
socket                                          = /var/run/mysqld/mysqld.sock
pid-file                                        = /var/run/mysqld/mysqld.pid
log-error                                       = /var/log/mysql/mysqld.err
basedir                                         = /usr
datadir                                         = /var/lib/mysql
skip-locking

log-error       = /var/log/mysql/error.log
log-slow-queries= /var/log/mysql/slow.log
long_query_time = 1

key_buffer              = 800M
query_cache_size        = 256M
table_cache             = 3600
thread_cache_size       = 384
sort_buffer_size = 25M
tmp_table_size = 800M
max_connect_errors=10000
max_connections=500
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=500M
max_allowed_packet                      = 1M
net_buffer_length                       = 8K
read_buffer_size                        = 256K
read_rnd_buffer_size            = 512K
myisam_sort_buffer_size         = 8M
language                                        = /usr/share/mysql/english

set-variable = innodb_log_file_size=200M
bind-address                            = 10.1.20.6

log-bin=db-bin
server-id                                       = 1
Slave:

Code: Select all

character-set-server            = utf8
default-character-set           = utf8
user                                            = mysql
port                                            = 3306
socket                                          = /var/run/mysqld/mysqld.sock
pid-file                                        = /var/run/mysqld/mysqld.pid
log-error                                       = /var/log/mysql/mysqld.err
basedir                                         = /usr
datadir                                         = /var/lib/mysql
skip-locking


log-error       = /var/log/mysql/error.log
log-slow-queries= /var/log/mysql/slow.log
long_query_time = 1

key_buffer              = 800M
query_cache_size        = 256M
table_cache             = 3600
thread_cache_size       = 384
sort_buffer_size = 25M
tmp_table_size = 800M
max_connect_errors=10000
max_connections=500
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=500M


max_allowed_packet                      = 1M
net_buffer_length                       = 8K
read_buffer_size                        = 256K
read_rnd_buffer_size            = 512K
myisam_sort_buffer_size         = 8M
language                                        = /usr/share/mysql/english

set-variable = innodb_log_file_size=200M

bind-address                            = 10.1.20.100

log-bin=db-bin
server-id                                       = 2
log-slave-updates 
log-warnings 
Dank dir schonmal
TO
Top

User avatar
Joe User
Project Manager
Project Manager
Posts: 11519
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Master schmiert ab, Slave syncrhonisiert nichtmehr

Post by Joe User »

Füge mal folgende Optionen im Abschnitt [mysqld] hinzu:
Master:

Code: Select all

sync_binlog           = 1
binlog_cache_size     = 1M
max_binlog_size       = 100M
Slave:

Code: Select all

master-host           = <hostname>
master-user           = <username>
master-password       = <password>
master-port           = 3306
sync_binlog           = 1
binlog_cache_size     = 1M
max_binlog_size       = 100M
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Top

User avatar
isotopp
RSAC
Posts: 482
Joined: 2003-08-21 10:21
Location: Berlin

Re: Master schmiert ab, Slave syncrhonisiert nichtmehr

Post by isotopp »

theomega wrote:Ist das wirklich die einzige Lösung? Heißt das jedesmal wenn mir der Master abschmieren sollte (hoffe ja nicht das es zu oft passiert) hängt der Slave die Syhncronisation an den Nagel?
Das Problem ist nicht das ABschmieren des Masters, sondern der Verlust der Binlogs auf demselben. Wenn die vom Slave angefragten Binlogs auf dem Master verloren sind, ist der Slave wertlos und muß auf die von Dir beschriebene Weise neu aufgesetzt werden.
Top

Anonymous

Re: Master schmiert ab, Slave syncrhonisiert nichtmehr

Post by Anonymous »

Hallo,

ich hatte ähnlich Probleme.

Das Problem ist , das bei dem Binlogs vom Slave von einer bestimmten Größe
ausgegangen wird, die du für die binlogs eingetragen hast. (Bei mir z.b. 1 GB)

Wenn der Master abschmiert, wird nicht die Binlog fortgeführt , die vor dem Crash aktuell war, sondern eine Nummer weiter angefangen.

Das sieht dann ungefähr so aus.

mydb-bin.001 Größe 1 GB
mydb-bin.002 Größe 324 MB (crash)
mydb-bin.003 Größe 420 MB (aktuelles File)


Wenn du
show slave status
eingibst, wirst du sehen,das der Wert Master_Log_File auf das File des
Crash liegt (mydb-bin) und zwar mit einen Wert read_master_log_pos höher
als existent, dadurch wird die Fehlermeldung verursagt.

Abhilfe:

auf dem slave folgendes ausführen:


slave stop;
change master to
master_log_file = mydb-bin.003,
master-log_pos = 4;
slave start;

Gruß,

Richard
Top