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