MariaDB Kann das tc-Protokoll nicht starten


21

Ich habe jede Lösung im Internet ausprobiert, aber mein MariaDb-Server fällt weiterhin aus, verrät mich weiterhin und zerstört weiterhin meine winzige DevOps-Welt. Meine Versuche, die Situation zu glätten, schlossen alle Arten von Zufriedenheit ein: Ändern von Berechtigungen, Konfigurieren, Entfernen von Protokolldateien, Aktualisieren / Neuinstallieren, Verschieben ihrer internen Dateien nach oben und unten, Entfernen anderer DBMS, Entfernen von allem außer ihr, aber ... das war sie noch nie so lange so viel Widerstand leisten. Meine letzte und einzige Hoffnung für euch, den Weg durch solch einen kritischen Moment in unseren Beziehungen aufzuzeigen.

Ich verwende Vagrant und das Problem liegt in der datadirOption - wenn ich den Standardpfad verwende, ist alles in Ordnung, aber wenn ich ihn in einen freigegebenen Vagrant-Ordner ändere, startet Maria nicht einmal. Ich habe alle / var / lib / mysql-Dateien in einen neuen Ordner kopiert.

Ich habe Windows-Host, Centos-Gast und meine Konfigurationen sind:

MariaDb Version:

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

MariaDb-Fehlerprotokoll:

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

1
Haben Sie genug Speicherplatz auf der Partition mit dem Protokoll? Können Sie die Protokolldatei löschen und neu starten?
Stoleg

@Stoleg Hallo Stoleg, danke für die Antwort. Auf der Partition ist viel freier Speicherplatz vorhanden. Ich habe versucht, die Datei zu löschen, neu zu starten und MariaDb erstellt sie und startet nicht
Sam Ivichuk

Benutzt Maria ein Konto, hat sie READBerechtigungen für den Zielordner? Möglicherweise besteht die Möglichkeit, dass eine Datei mit Schreibzugriff erstellt wird, jedoch keine Leseberechtigung besitzt. Versuchen Sie, die gleichen Operationen auszuführen, die Maria unter ihrem Konto ausführen würde. Kann es sein, dass die Datei nicht geöffnet und gesperrt bleiben kann?
Stoleg,

Antworten:


15

Woohoo, ich habe es gefunden! Zumindest jetzt. Das Durchstöbern der Quelle lässt vermuten, dass dies möglicherweise mit mmap()Anrufen zu tun hat , und siehe da - VirtualBox hat einen Fehler in diesem Bereich . Glücklicherweise weist dieselbe Quelle auf eine Problemumgehung hin - die Option log_bin . Aktivieren Sie dies (entweder von der Kommandozeile als --log_binoder von der Konfigurationsdatei als log_bin=ON) und die Dinge beginnen wieder zu funktionieren!

Aktualisieren

Sie sagen, sie haben es in VirtualBox 6.0.6 behoben!


Ich danke dir sehr! Dies behebt meinen tc.logFehler bei der Verwendung von Virtualbox auf einem Windows 10-Host.
Ricky Boyce

Dies scheint auch für mich ein bedeutender Fortschritt gewesen zu sein, Windows 10 Home, Docker Toolbox 18.03.
Rfay

22

Am Ende habe ich die tc.log-Datei in / var / lib / mysql gelöscht. Als ich mysql erneut startete, erstellte es ein neues tc.log und startete.

sudo rm -f /var/lib/mysql/tc.log

Das fühlt sich zwar etwas unsicher an, hat aber in meinem Fall funktioniert!
Peter

2
Es hat funktioniert, aber es ist sicherer zu verwenden:sudo mv /var/lib/mysql/tc.log /var/lib/mysql/tc_bkp.log
Pedro Lobito

9

Sie können das tc.logim Datenverzeichnis entfernen und alte Einträge aus mysql-bin.index entfernen (es ist eine Textdatei zusammen mit einer Liste von Binärprotokollen). Wenn dies eine Entwicklungsbox ist, können Sie die Indexdatei (mysql-bin.index) entfernen, um ihre Neuerstellung zu erzwingen.

Es könnte auch mit den Benutzer-IDs zwischen dem mysqlBenutzer und dem Besitzer der ID des freigegebenen Ordners zusammenhängen. Hier ist ein Snippet, um dies zu tun.


Ich bin neugierig auf die Ursache dieses Problems. Wie kann ich das vermeiden? Vielen Dank
3zzy

@ 3zzy - Lies meine Antwort.
Vilx

@ 3zzy Ich habe den Bug noch nicht reproduziert.
3.

Dies ist in der Tat ein seltsames Problem. Was genau ist in dieser Datei gespeichert? Ich hatte es so eilig, das Problem zu beheben, dass ich vergessen hatte, mir das Problem anzusehen. Möglicherweise kann ich nähere Angaben machen.
MageProspero

Ich vermute, dass ein "out of disk space" Fehler mein tc.log heute beschädigt hat.
jchook

1

Wenn Sie nur möchten, dass mysql / mariadb wieder läuft und es Ihnen nichts ausmacht, Ihre Daten zu verlieren (in einer Entwicklungsumgebung), habe ich dies getan

Löschen: ib_logfile1 ib_logfile0 aria_log_control aria_log.00000001 tc.log ib_data1

Starten Sie den Server

Löschen Sie das Schema (wenn es Dateien enthält, CD in den Ordner des Schemas, alles löschen)

Ich habe dann die Datenbank von einem alten Speicherauszug, den ich hatte, erneut importiert.

Ich habe dann mit Mariadb angefangen und es kommt gut rüber. Die gelöschten Dateien wurden neu erstellt. ** Dies ist wieder nur für Entwickler. Sie könnten wahrscheinlich Ihre Datenbank installieren **


0

Ich hatte dieses Problem, als ich versuchte, den Datenbankdatenordner zu kopieren. Also habe ich in den Datenordner gewechselt und folgenden Befehl ausgeführt, um alle Protokolldateien zu löschen:

rm -rf *log*

Dann habe ich den Docker neu aufgebaut und das Problem wurde behoben.


0

Ich habe diesen Fehler auch behoben, indem ich das tc.log entfernt habe. Bei XAMPP befindet sich die tc.log-Datei im XAMPP/xamppfiles/var/mysqlOrdner - auf meinem Mac befindet sie sich unter: /Applications/XAMPP/xamppfiles/var/mysql/tc.log


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.