MySQL: Wenn Server_id nicht explizit eingestellt ist, erhalten Sie Fehler `Fehler 1200 (Hy000) in Zeile 1: Der Server ist nicht als Slave konfiguriert;

dba.stackexchange https://dba.stackexchange.com/questions/4400

  •  16-10-2019
  •  | 
  •  

Frage

Unsere MySQL-Version lautet "MySQL Ver 14.14 Distrib 5.1.35 für portbld-freeBSD7.2 (AMD64) mit 5.2"

Wir haben zwei Datenbankserver mit Replikation in einer einfachen Master-/Slave -Beziehung. mysql2 ist der Meister, mysql1 ist der Sklave. Vor einem Jahr, mysql war der Meister und mysql2 war der Sklave. Wir mussten ihre Rollen während eines Hardwarefehlers umkehren.

Auf dem Master setzen wir explizit die Server_id (Server-ID)

[root@mysql2 ~]# grep server-id my.cnf
server-id       = 2
[root@mysql2 ~]# mysql -e "SHOW VARIABLES LIKE 'server_id'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 2     | 
+---------------+-------+

Diese Einstellung wurde jedoch nicht in my.cnf auf dem Sklaven festgelegt.

[root@mysql1 ~]# grep server-id my.cnf

Hoppla. Dies sollte keine Rolle spielen, da der server_id standardmäßig auf 1 gesetzt ist.

[root@mysql1 ~]# mysql -e "SHOW VARIABLES LIKE 'server_id'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 1     | 
+---------------+-------+

Wenn ich MySQL neu starte, funktioniert die Replikation gut.

Wenn ich jedoch den Sklaven manuell "stoppen" "Start Slave", bekomme ich einen Fehler:

[root@mysql1 ~]# mysql -e "STOP SLAVE;"
[root@mysql1 ~]# mysql -e "START SLAVE;"
ERROR 1200 (HY000) at line 1: The server is not configured as slave; fix in config file or with CHANGE MASTER TO

Warum bekomme ich diesen Fehler, wenn ich keinen Wert in my.cnf explizit festlegt? Warum funktioniert die Replikation, wenn ich neu starte, aber nicht, wenn ich "Sklave aufhöre"? "Sklave starten;"?

  • Es scheint, dass MySQL der Variablen einen Standardwert zugewiesen hat server_id.
  • Nach dem Standardmy.cnf, der server_id wird standardmäßig zu 1

    # required unique id between 1 and 2^32 - 1 
    # defaults to 1 if master-host is not set 
    # but will not function as a master if omitted 
    #server-id  = 1 
    

Das Fix ist es, Server-ID in my.cnf explizit festzulegen, wie von Baron Schwartz bei vorgeschlagen http://www.xaprb.com/blog/2007/08/01/why-mysql-server-not-configured-aslave/

server-id = 1

War es hilfreich?

Lösung

Zwei Server dürfen nicht denselben Server_id haben. Ebenfalls, Wenn Sie-Server-ID von einem Master weglassen, beträgt die Standard-ID 0, in diesem Fall lehnt ein Meister Verbindungen von allen Sklaven ab, und ein Sklave weigert.

Für mehr Informationen, Siehe Abschnitt 15.1.1.2, „Einstellen der Replikations -Slave -Konfiguration“.

Auch wenn beide Server unterschiedliche Server_ID -Werte haben, stellen Sie bitte sicher, dass der neue Master hat Binär Protokollierung aktiviert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top