2011-10-05 24 views
21

MySQL 05/01/54 Ubuntu 11.04próbować zmienić katalog dziennika bin: mysql-bin.index nie znaleziono (Errcode: 13)

I'am próby zmiany katalogu dziennika bin w my.conf jak:

[mysqld] 
log_bin=/home/developer/logs/mysql/mysql-bin.log 

Po zmienia serwer MySQL nie można uruchomić z powodu błędu:

/usr/sbin/mysqld: File '/home/developer/logs/mysql/mysql-bin.index' 
not found (Errcode: 13) 
111005 12:47:58 [ERROR] Aborting 

zgodę na katalogu/home/programista/logs/mysql/jest 0777

Co się dzieje?

Odpowiedz

19

Rozwiązanie było zwykle proste, ale nie oczywiste: konieczne było edytowanie ustawień aplikacji Właśnie dodałem do /etc/apparmor.d/ usr.sbin.mysqld nowy ciąg ze ścieżką do katalogu docelowego: /strona główna/programista/logi/* rw

Działa!

+3

apparmor.d nie jest dostępny na moim serwerze. – DharanBro

0

Czy twój użytkownik ma dostęp do wszystkich wyższych katalogów? W specjalnym katalogu/home/developer /? Spróbuj zalogować się przy użyciu konta serwera mysql i dotknij pliku dziennika.

+0

Skopiowałem uprawnienia z katalogu/var/log/mysql. Brak wyników. – solo117

+0

i co się stanie, jeśli użyjesz nazwy użytkownika mysqld i spróbujesz uzyskać dostęp do katalogu? – Andreas

+0

uruchamiam "sudo -u mysql touch /home/developer/logs/test.txt", z powodzeniem utworzyłem plik – solo117

0

Miałem podobny problem, gdy próbowałem zmienić zmienną datadir podczas świeżej instalacji. Rozwiązaniem w moim przypadku było uruchomienie po raz pierwszy uruchomienia z wyłączonym log-bin. Potem mogłem go ponownie włączyć, używając nowej ścieżki ...

+0

Co masz na myśli? zatrzymaj serwer -> wyłącz log_bin -> uruchom serwer -> ... zatrzymaj serwer-> włącz log_bin -> uruchom serwer_ ??? niestety to nie zadziałało dla mnie. – solo117

+0

Niezupełnie. Czy zmieniasz także pozycję datadiru? Jeśli tak, to właśnie zrobiłem, aby to działało: wyłącz log-bin w pliku konfiguracyjnym, mysql_install_db z dostosowanym plikiem konfiguracyjnym, na końcu instalacji mysqld jest uruchamiany przez skrypt instalacyjny. Następnie: zatrzymaj, włącz log-bin, uruchom. –

+0

Należy zauważyć, że było to podczas nowej konfiguracji. Jeśli masz istniejącą bazę danych, twoja sytuacja jest inna. –

3

Selinux może egzekwować regułę, że pliki bazy danych MySQL muszą żyć w/var/lib/mysql, a nie nigdzie indziej. Spróbuj wyłączyć selinux (selinux = 0 w wierszu komend boot jądra), jeśli przeniesiesz mysql do innego katalogu.

19

/usr/sbin/mysqld: File '/usr/binlogs/mysql-bin.index' not found (Errcode: 13)

on pracował dla mnie:

chown -R mysql:mysql /usr/binlogs/

+0

Jest to najbardziej oczywiste rozwiązanie po przypadkowym usunięciu logów mysql bin. Doskonały ! – Maxx

8

Tak jak FYI dla każdego, kto działa w podobny problem, rozwiązanie jest w zasadzie takie same, ale przyczyną problemu nie jest oczywiste .

Po uaktualnieniu serwera Debian wheezy, uruchomienie mysql nie powiodło się.

Jakoś, nie mam pojęcia, jak, uprawnienia do niektórych plików w /var/lib/mysql nie były własnością użytkownika mysql, tym samym zapobiegając uruchomieniu serwera.

Naprawiono to za pomocą A chown -R mysql.mysql /var/lib/mysql.

Niczego nie bałagan mysql zrobić, to był standard:

apt-get update 

apt-get upgrade 

Coś dostał hinky podczas Debianie uaktualnić i ręczna interwencja była potrzebna.

3

Wariant 1:

  1. service mysqld stop

  2. Kopiowanie plików dziennika w tym pliku .Index do nowej lokalizacji.

    cp mysql-bin.log* /path/to/binlogs 
    cp mysql-bin.index /path/to/binlogs 
    
  3. zrobić zmiany w pliku /etc/my.cnf.

    [mysqld] 
    log-bin=/path/to/newdirecory/mysql-bin 
    
    log-bin-index=/path/to/newdirectory/mysql-bin.index 
    
  4. service mysqld start

Opcja 2:

Użyj tego utiltiy przenieść dzienniki binarne:

mysqlbinlogmove --binlog-dir=/server/data /new/binlog_dir 
1

Trzeba dać użytkownikowi uprawnień do katalogu, w następujący sposób:

chown -R mysql:mysql /home/developer/logs/mysql/ 
0

Twój config jest źle:

log_bin=/home/developer/logs/mysql/mysql-bin.log 

byłoby użyć zamiast

log-bin=/home/developer/logs/mysql/mysql-bin.log 
2

Podczas konfiguracji replikacji w "my.cnf" plik musi wspomnieć

server-id = 1 log_bin =/var/log/mysql/mysql-bin.log

możesz utworzyć własny katalog i wyrazić zgodę. utworzyć katalogu „mysql” w/var/log/

chmod 777 mysql

ten ma zastosowanie w wersji MySQL 5.7

0

Można również komentować linię w my.cnf pliku, który jest definiującej lokalizację dziennika, więc mysql rozważy domyślną ścieżkę i uruchomi się poprawnie.

log-bin = /var/log/mysql/mysql-bin.log ->#log-bin = /var/log/mysql/mysql-bin.log.

Będzie to pomocne, jeśli nie martwisz się zbytnio logami.