MariaDB Nie można zainicjować dziennika TC

21

Wypróbowałem wszystkie rozwiązania w Internecie, ale mój serwer MariaDb nadal zawodzi, dalej mnie zdradza, nadal niszczy mój mały świat DevOps. Moje próby złagodzenia sytuacji obejmowały różnego rodzaju satysfakcję: zmienianie uprawnień, konfiguracje, usuwanie plików dziennika, uaktualnianie / ponowne instalowanie, przenoszenie jej wewnętrznych plików w górę i dookoła, usuwanie innych DBMS, usuwanie wszystkiego oprócz niej, ale ... nigdy nie była tak długo się opierać. Moją ostatnią i jedyną nadzieją dla was, abyście przebili drogę przez tak krytyczny moment w naszych związkach.

Używam włóczęgi, a problem jest w datadiropcji - kiedy używam domyślnej ścieżki wszystko jest w porządku, ale kiedy zmieniam ją na włóczęgę udostępnionego folderu, Maria nawet się nie uruchamia. Skopiowałem wszystkie pliki / var / lib / mysql do nowego folderu.

Mam hosta Windows, gościa Centos, a moje konfiguracje to:

Wersja MariaDb:

mysql  Ver 15.1 Distrib 10.1.17-MariaDB, for Linux (x86_64) using readline 5.1

Vagrantfile:

# -*- mode: ruby; -*-

ENV['VAGRANT_DEFAULT_PROVIDER'] = 'virtualbox'

Vagrant.configure("2") do |config|
  config.vm.box_url = "https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box"
  config.vm.box = "centos7"

  config.vm.network "private_network", ip: "10.0.1.10"

  config.vm.synced_folder "mysql", "/vagrant/mysql", owner: "mysql", group: "mysql"

  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", "4096"]
    vb.customize ["modifyvm", :id, "--cpus", "4"]
    vb.customize ["modifyvm", :id, "--hwvirtex", "on"]
    vb.customize ["modifyvm", :id, "--audio", "none"]
    vb.customize ["modifyvm", :id, "--nictype1", "virtio"]
    vb.customize ["modifyvm", :id, "--nictype2", "virtio"]
  end
end

/etc/my.cnf.d/server.cnf:

[mysqld]
user=mysql
datadir=/vagrant/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
default-storage-engine=innodb

tmpdir = /tmp

character-set-server = utf8
init-connect="SET NAMES utf8"

expire_logs_days=2
skip-external-locking

key_buffer_size = 32M
max_allowed_packet = 32M
table_open_cache = 8192
table_definition_cache = 8192
sort_buffer_size = 16M
net_buffer_length = 16K
read_buffer_size = 8M
read_rnd_buffer_size = 8M
thread_cache_size = 128
thread_concurrency = 16

query_cache_size = 1024M
query_cache_limit = 2M
join_buffer_size = 32M

max_connections = 1024
max_connect_errors = 1024

connect_timeout=5

innodb_file_per_table
innodb_buffer_pool_size=2048M
innodb_read_io_threads=8
innodb_write_io_threads=8
innodb_lock_wait_timeout=5
innodb_flush_log_at_trx_commit=2
innodb_flush_method=O_DSYNC
innodb_log_file_size=64M
innodb_log_buffer_size=32M
innodb_log_files_in_group=2
innodb_thread_concurrency=16
innodb_open_files = 1000
innodb_sync_spin_loops=100

skip-name-resolve

log-error=/var/log/mariadb/mysqld.log

Dziennik błędów MariaDb:

2016-09-30 22:32:46 139758293125248 [Note] InnoDB: Using mutexes to ref count buffer pool pages
2016-09-30 22:32:46 139758293125248 [Note] InnoDB: The InnoDB memory heap is disabled
2016-09-30 22:32:46 139758293125248 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2016-09-30 22:32:46 139758293125248 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2016-09-30 22:32:46 139758293125248 [Note] InnoDB: Compressed tables use zlib 1.2.7
2016-09-30 22:32:46 139758293125248 [Note] InnoDB: Using Linux native AIO
2016-09-30 22:32:46 139758293125248 [Note] InnoDB: Using SSE crc32 instructions
2016-09-30 22:32:46 139758293125248 [Note] InnoDB: Initializing buffer pool, size = 2.0G
2016-09-30 22:32:46 139758293125248 [Note] InnoDB: Completed initialization of buffer pool
2016-09-30 22:32:46 139758293125248 [Note] InnoDB: Highest supported file format is Barracuda.
2016-09-30 22:32:46 139758293125248 [Note] InnoDB: 128 rollback segment(s) are active.
2016-09-30 22:32:46 139758293125248 [Note] InnoDB: Waiting for purge to start
2016-09-30 22:32:46 139758293125248 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.31-77.0 started; log sequence number 1600799
2016-09-30 22:32:46 139754263774976 [Note] InnoDB: Dumping buffer pool(s) not yet started
2016-09-30 22:32:46 139758293125248 [Note] Plugin 'FEEDBACK' is disabled.
2016-09-30 22:32:46 139758293125248 [ERROR] Can't init tc log
2016-09-30 22:32:46 139758293125248 [ERROR] Aborting
Sam Ivichuk
źródło
1
Czy masz wystarczającą ilość miejsca na partycji z dziennikiem? Czy możesz usunąć plik dziennika i uruchomić ponownie?
Stoleg
@Stoleg Cześć Stoleg, dziękuję za odpowiedź. Na partycji jest dużo wolnego miejsca. Próbowałem usunąć plik, ponownie uruchomić, a MariaDb tworzy go i nie uruchamia się
Sam Ivichuk
Czy konto używane przez Marię ma READuprawnienia do folderu docelowego? Może istnieć szansa, że ​​może utworzyć plik z zapisem, ale nie ma uprawnień do odczytu. Spróbuj wykonać te same operacje, które Maria wykonałaby na swoim koncie. Może to nie może utrzymać pliku otwartego i zablokowanego?
Stoleg 10.10.16

Odpowiedzi:

15

Woohoo, znalazłem to! Przynajmniej na razie. Przekopienie źródła sugeruje, że może to mieć coś wspólnego z mmap()wywołaniami, i oto - VirtualBox ma błąd w tym obszarze . Na szczęście to samo źródło sugeruje obejście - opcja log_bin . Włącz to (z wiersza poleceń jako --log_binlub z pliku konfiguracyjnego jako log_bin=ON), a wszystko zacznie znowu działać!

Aktualizacja

Mówią, że naprawili to w VirtualBox 6.0.6!

Vilx-
źródło
Dziękuję bardzo! To naprawiło mój tc.logbłąd przy użyciu Virtualbox na hoście Windows 10.
Ricky Boyce,
Wydaje mi się, że był to również znaczący postęp, Windows 10 Home, Docker Toolbox 18.03.
rfay
22

Skończyło się usuwanie pliku tc.log w / var / lib / mysql. Kiedy ponownie uruchomiłem mysql, utworzyłem nowy tc.log i uruchomiłem.

sudo rm -f /var/lib/mysql/tc.log
Flavio Troia
źródło
choć wydaje się to trochę niebezpieczne, w moim przypadku zadziałało!
Peter
2
Udało się, ale bezpieczniej jest używać:sudo mv /var/lib/mysql/tc.log /var/lib/mysql/tc_bkp.log
Pedro Lobito
9

Możesz usunąć tc.logw katalogu danych i usunąć stare wpisy z mysql-bin.index (jest to plik tekstowy wraz z listą dzienników binarnych). Jeśli jest to pole programistyczne, możesz usunąć plik indeksu (mysql-bin.index), aby wymusić jego odtworzenie.

Może to być również powiązane z identyfikatorami użytkowników między mysqlużytkownikiem a właścicielem identyfikatora folderu współdzielonego, oto fragment tego kodu.

3manuek
źródło
Ciekawy temat przyczyny tego problemu chociaż, jak można uniknąć? Dzięki
3zzy
@ 3zzy - Przeczytaj moją odpowiedź.
Vilx-
@ 3zzy Nie odtworzyłem jeszcze błędu.
3manuek
To rzeczywiście dziwny problem. Co dokładnie jest przechowywane w tym pliku? Spieszyłem się z rozwiązaniem problemu i zapomniałem spojrzeć na ten, który tam był. Mogę podać więcej szczegółów.
MageProspero
Podejrzewam, że błąd „brak miejsca na dysku” uszkodził dziś mój tc.log.
jchook
1

Jeśli chcesz po prostu ponownie uruchomić mysql / mariadb i nie masz nic przeciwko utracie danych (w środowisku deweloperskim ), to właśnie zrobiłem

Usuń: ib_logfile1 ib_logfile0 aria_log_control aria_log.00000001 tc.log ib_data1

uruchom serwer

Usuń schemat (jeśli zawiera pliki, włóż płytę CD do folderu schematu, usuń wszystko)

Następnie ponownie zaimportowałem bazę danych ze starego zrzutu, który miałem.

Potem zacząłem mariadb i wszystko idzie dobrze. Usunięte pliki zostały ponownie utworzone. ** Ponownie dotyczy to tylko deweloperów. Prawdopodobnie możesz zainstalować swoją bazę danych **

Kiren
źródło
0

Napotkałem ten problem, gdy próbowałem skopiować folder danych bazy danych. Więc zmieniłem folder danych i wykonałem następujące polecenie, aby usunąć wszystkie pliki dziennika:

rm -rf *log*

Następnie przebudowałem okno dokowane i problem został rozwiązany.

tharanga rajapaksha
źródło
0

Rozwiązałem również ten błąd, usuwając tc.log. W XAMPP plik tc.log znajduje się w XAMPP/xamppfiles/var/mysqlfolderze - na moim Macu znajduje się w: /Applications/XAMPP/xamppfiles/var/mysql/tc.log

John Tyner
źródło
0

Miałem ten problem w oficjalnym kontenerze dokującym MariaDB. Usunięcie pliku dziennika, ponieważ inne oferowane odpowiedzi nie pomogły mi. Mój problem był jednak związany, mmapjak sugeruje zaakceptowana odpowiedź.

Znalazłem różne rozwiązania tego problemu w moim scenariuszu.

  1. Aktywuj dziennik binarny
  2. Usuń poprawnie uniemożliwiające mmap konflikt
brettinternet
źródło