Problem prostej replikacji MySQL: „pokaż status główny” powoduje „Pusty zestaw”?


10

Konfigurowałem replikację główną MySQL (w Debianie 6.0.1), postępując zgodnie z następującymi instrukcjami: http://www.neocodesoftware.com/replication/

Mam do tej pory:

mysql > show master status;

ale powoduje to niestety następujące, a nie użyteczne wyniki:

Empty set (0.00 sec)

Dziennik błędów w /var/log/mysql.errto tylko pusty plik, więc nie daje mi to żadnych wskazówek.

Jakieś pomysły?

Oto, co umieściłem /etc/mysql/my.cnfna jednym serwerze (odpowiednio zmienionym dla drugiego serwera):

server-id = 1
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1
master-host = 10.0.0.3
master-user = <myusername>
master-password = <mypass>
master-connect-retry = 60
replicate-do-db = fruit
log-bin = /var/log/mysql-replication.log
binlog-do-db = fruit

Skonfigurowałem użytkowników i mogę połączyć się z MySQL na serwerze A z bazą danych na serwerze B, używając powyższej nazwy użytkownika / hasła / ipaddress.


Próbowałem zostały również zgodnie z instrukcjami wyświetlanymi na prostsze: howtoforge.com/mysql_database_replication (na jednym serwerze w spokoju) i znowu, kiedy mogę show master statuswidzę Empty set. Zaskoczony!

Uruchom ponownie usługę i sprawdź. Jeśli jakiekolwiek dzienniki błędów wygenerowane po ponownym uruchomieniu, również to wklej.

Odpowiedzi:


7

Co ciekawe, mysql działa na moim komputerze z wyłączonymi dziennikami binarnymi. Zrobiłem następujące:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 5.5.12 MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show master status;
Empty set (0.00 sec)

mysql> show binary logs;
ERROR 1381 (HY000): You are not using binary logging

mysql>

Jak pokazano, ponieważ MySQL pokazuje „Pusty zestaw” dla SHOW MASTER STATUS; ponieważ rejestrowanie binarne nie zostało włączone. To oczywiste, biorąc pod uwagę moją konfigurację.

Pierwszą rzeczą, którą powinieneś zrobić, to upewnić się, że dziennik błędów ma określony folder

[mysqld]
log-error=/var/log/mysql/mysql.err
log-bin = /var/log/mysql/mysql-replication.log

Następnie uruchom następujące czynności:

service mysql stop
mkdir /var/log/mysql
chown -R mysql:mysql /var/log/mysql
service mysql start

Następnie w kliencie mysql uruchom te polecenia SQL

SHOW MASTER STATUS;
SHOW BINARY LOGS;

Jeśli otrzymujesz takie same dane wyjściowe, jakie miałem wcześniej, MySQL nie może zapisywać dzienników binarnych w wyznaczonym folderze. Waszym dylematem staje się to, dlaczego MySQL nie może pisać do / var / log.

To nie jest pełna odpowiedź, ale mam nadzieję, że to pomoże.


Ustawienie / var / log na rekursywną własność i wraz z grupą mysql dość mocno psuje system Linux. Radzę ludziom, aby tego nie robili. Zamiast tego uruchom go konkretnie na pliku dziennika, do którego mysql próbuje zapisać, a jeśli go nie ma, dotknij go najpierw.
John Hunt,

Wiesz coś, @JohnHunt? Masz rację. Zmienię folder.
RolandoMySQLDBA


0

Twoje ustawienie dla log-binjest nieprawidłowe, więc MySQL nie może zapisywać dzienników binarnych. To nie jest nazwa pliku, to częściowy wzorzec nazwy pliku , do którego MySQL przygotuje katalog i doda numer sekwencji oraz rozszerzenie. Zwykłe ustawienie to coś w rodzaju

log-bin=log-bin

Sprawdź instrukcję.


--log-bin=file_name( dev.mysql.com/doc/refman/5.7/en/… ). Jaka instrukcja mówi, że nie jest to nazwa pliku?
Stephan Vierkant
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.