Master-Db übernimmt read-only der Slave-Db

Master-Db übernimmt read-only der Slave-Db

am 25.12.2005 14:43:54 von jpieper

Ich habe zwei Datenbanken (Master & Slave) bei denen die Daten
repliziert werden. Nun habe ich die Slave-Db auf read-only gestellt und
die Master-Db hat diese Einstellung nicht, aber will ich nun ein
Insert-Query auf dem Master ausführen, dann bekomme ich folgende
Meldung:

The MySQL server is running with the --read-only option so it cannot
execute this statement

Die Master-Db nutzt folgende Einstellungen und wurde auch nicht mit
--read-only gestartet:

[mysqld]
datadir=3D/var/lib/mysql
socket=3D/tmp/mysql.sock
log-bin=3Dmysqlmaster
server-id=3D1


[mysql.server]
user=3Dmysql
basedir=3D/var/lib

[mysqld_safe]
err-log=3D/var/log/mysqld.log
pid-file=3D/var/run/mysqld/mysqld.pid

Re: Master-Db übernimmt read-only der Slave-Db

am 25.12.2005 20:08:29 von Dirk Brosowski

jpieper schrieb:
> Ich habe zwei Datenbanken (Master & Slave) bei denen die Daten
> repliziert werden. Nun habe ich die Slave-Db auf read-only gestellt und
> die Master-Db hat diese Einstellung nicht, aber will ich nun ein
> Insert-Query auf dem Master ausführen, dann bekomme ich folgende
> Meldung:
>
> The MySQL server is running with the --read-only option so it cannot
> execute this statement
>
> Die Master-Db nutzt folgende Einstellungen und wurde auch nicht mit
> --read-only gestartet:
>
> [mysqld]
> datadir=/var/lib/mysql
> socket=/tmp/mysql.sock
> log-bin=mysqlmaster
> server-id=1
>
>
> [mysql.server]
> user=mysql
> basedir=/var/lib
>
> [mysqld_safe]
> err-log=/var/log/mysqld.log
> pid-file=/var/run/mysqld/mysqld.pid
>

Und du bist dir 100% sicher, dass du nicht auf dem Slave bist? Schon mal
"show variables" bzw. "show status" gemacht, um das zu verifizieren?

Laufen beide Datenbanken auf dem gleichen Rechner, nur auf
unterschiedlichen Ports? Dann könnte es z.B. sein, dass du auf dem
Read-Only landest, weil er beim durchstarten den Unix-Socket
überschrieben hat. Connectest du über den Unix-Socket (localhost), dann
interessiert er sich nicht die Bohne für die Angabe eines Ports (wegen:
Port is nicht).

Das sind meine Ideen :)

Grüße

Dirk

Re: Master-Db übernimmt read-only der Slave-Db

am 25.12.2005 22:04:29 von jpieper

Also bin ich im Master bekomme ich folgendes:

mysql> show variables like "r%";
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| range_alloc_block_size | 2048 |
| read_buffer_size | 131072 |
| read_only | OFF |
| read_rnd_buffer_size | 262144 |
| relay_log_purge | ON |
| relay_log_space_limit | 0 |
| rpl_recovery_rank | 0 |
+------------------------+--------+


Bin ich im Slave bekomme ich dies:

mysql> show variables like "r%";
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| range_alloc_block_size | 2048 |
| read_buffer_size | 131072 |
| read_only | ON |
| read_rnd_buffer_size | 262144 |
| relay_log_purge | ON |
| relay_log_space_limit | 0 |
| rpl_recovery_rank | 0 |
+------------------------+--------+

Die Slave-Db liegt auf einem Windows-Rechner und die Master-Db liegt
auf einem Linux-Rechner (Fedora).

Re: Master-Db übernimmt read-only der Slave-Db

am 26.12.2005 09:00:27 von Dirk Brosowski

Jan Pieper schrieb:
> Also bin ich im Master bekomme ich folgendes:
>
> mysql> show variables like "r%";
> +------------------------+--------+
> | Variable_name | Value |
> +------------------------+--------+
> | range_alloc_block_size | 2048 |
> | read_buffer_size | 131072 |
> | read_only | OFF |
> | read_rnd_buffer_size | 262144 |
> | relay_log_purge | ON |
> | relay_log_space_limit | 0 |
> | rpl_recovery_rank | 0 |
> +------------------------+--------+
>

Und wenn du jetzt ein INSERT (mit den notwendigen User-Rechten)
durchführst, dann funktioniert das nicht? Das ist schwer zu glauben ;)
Mach das mal bitte händisch und gebe dann auch die User-Privilegien aus.
Irgendwie ist das schwer zu glauben.


>
> Bin ich im Slave bekomme ich dies:
>
> mysql> show variables like "r%";
> +------------------------+--------+
> | Variable_name | Value |
> +------------------------+--------+
> | range_alloc_block_size | 2048 |
> | read_buffer_size | 131072 |
> | read_only | ON |
> | read_rnd_buffer_size | 262144 |
> | relay_log_purge | ON |
> | relay_log_space_limit | 0 |
> | rpl_recovery_rank | 0 |
> +------------------------+--------+
>

Wenn eine Datenbank auf Read-only gesetzt wird, hat das tatsächlich
keine Auswirkungen auf die Ausführung von Replikations-State...ments,
wie ich nachlesen durfte

Ich habe sowas immer gelöst, indem ich allen Usern die
Datenveränderungsrechte genommen habe. Mühsamer, aber funktioniert
garantiert.

Grüße

Dirk

Re: Master-Db übernimmt read-only der Slave-Db

am 26.12.2005 11:22:05 von jpieper

Naja also es waren schonmal zwei Fehler, ein äußerst dummer und ein
Flüchtigkeitsfehler. Also zum einen hab ich über ein alias versucht
zu connecten und dieses alias war die Slave-Db und nicht die Master-Db.
Zum anderen hatte der Benutzer keine Rechte auf die Datenbank, also
hätte ich richtig connected, so hätte das mit den Rechten nicht
hingehauen, aber das hätte ich warscheinlich schneller lösen können.

Also danke für deine Hilfe auch wenn es ein menschliches versagen war.
:-)

Re: Master-Db übernimmt read-only der Slave-Db

am 27.12.2005 01:43:50 von Dirk Brosowski

Jan Pieper schrieb:
> Naja also es waren schonmal zwei Fehler, ein äußerst dummer und ein
> Flüchtigkeitsfehler. Also zum einen hab ich über ein alias versucht
> zu connecten und dieses alias war die Slave-Db und nicht die Master-Db.
> Zum anderen hatte der Benutzer keine Rechte auf die Datenbank, also
> hätte ich richtig connected, so hätte das mit den Rechten nicht
> hingehauen, aber das hätte ich warscheinlich schneller lösen können.
>
> Also danke für deine Hilfe auch wenn es ein menschliches versagen war.
> :-)

das passiert nunmal und letztlich ist es einfach menschlich...

Grüße

Dirk