MariaDB Не могу инициализировать tc log


21

Я испробовал все решения в Интернете, но мой сервер MariaDb продолжает отказывать, продолжает предавать меня, продолжает разрушать мой крошечный мир DevOps. Мои попытки сгладить ситуацию включали в себя все виды удовлетворения: изменение разрешений, настроек, удаление файлов журнала, обновление / переустановка, перемещение ее внутренних файлов вверх и назад, удаление других СУБД, удаление всего, кроме нее, но ... она никогда не была так долго сопротивлялся. Моя последняя и единственная надежда на вас, ребята, пролить свет на такой критический момент в наших отношениях.

Я использую vagrant, и проблема в datadirопции - когда я использую путь по умолчанию, все в порядке, но когда я изменяю его на общую папку vagrant, Мария даже не запускается. Я скопировал все файлы / var / lib / mysql в новую папку.

У меня есть хост Windows, гость Centos и мои конфигурации:

Версия 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

Журнал ошибок 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

1
Достаточно ли у вас места на разделе с журналом? Вы можете удалить файл журнала и перезапустить?
Stoleg

@Stoleg Привет, Стелег, спасибо за ответ. На разделе много свободного места. Я попытался удалить файл, перезапустить и MariaDb создает его и не запускается
Сэм Ивичук

Имеет ли учетная запись, используемая Марией, READправа доступа к папке назначения? Может быть шанс, что он может создать файл с записью, но не имеет разрешения на чтение. Попробуйте выполнить те же действия, что Мария сделала бы под своей учетной записью. Может быть, он не может держать файл открытым и заблокированным?
Стелег

Ответы:


15

Woohoo, я нашел это! Пока, по крайней мере. Просмотр источника предполагает, что это может быть как-то связано с mmap()вызовами, и вот - у VirtualBox есть ошибка в этой области . К счастью, тот же источник намекает на обходной путь - опция log_bin . Включите это (из командной строки как --log_binили из файла конфигурации как log_bin=ON), и все снова начнет работать!

Обновить

Они говорят, что исправили это в VirtualBox 6.0.6!


Огромное спасибо! Это исправило мою tc.logошибку при использовании Virtualbox на хосте Windows 10.
Рикки Бойс

Похоже, это был значительный прогресс и для меня, Windows 10 Home, Docker Toolbox 18.03.
rfay

23

В итоге я удалил файл tc.log в / var / lib / mysql. Когда я снова запустил mysql, он создал новый tc.log и запустился.

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

хотя это выглядит несколько небезопасно, в моем случае это сработало!
Питер

3
Это сработало, но безопаснее в использовании:sudo mv /var/lib/mysql/tc.log /var/lib/mysql/tc_bkp.log
Педро Лобито

9

Вы можете удалить tc.logкаталог из данных и удалить старые записи из mysql-bin.index (это текстовый файл вместе со списком двоичных журналов). Если это окно разработки, вы можете удалить индексный файл (mysql-bin.index), чтобы принудительно восстановить его.

Также это может быть связано с идентификаторами пользователя между mysqlпользователем и владельцем идентификатора общей папки, здесь приведен фрагмент кода.


Любопытно о причине этой проблемы, однако, как я могу избежать? Спасибо
3zzy

@ 3zzy - читай мой ответ.
Vilx-

@ 3zzy Я еще не воспроизвел ошибку.
3manuek

Это действительно странная проблема. Что именно хранится в этом файле? Я был в такой спешке, чтобы решить проблему, я забыл взглянуть на тот, который был там. Я мог бы предоставить более подробную информацию.
MageProspero

Я подозреваю, что ошибка "нехватка места на диске" повредила мой tc.log сегодня.
июня

1

Если вы просто хотите снова запустить mysql / mariadb и не против потерять ваши данные (в среде разработчика), это то, что я сделал

Удалить: ib_logfile1 ib_logfile0 aria_log_control aria_log.00000001 tc.log ib_data1

запустить сервер

Удалить схему (если она содержит файлы, перейдите в папку схемы, удалите все)

Затем я снова импортировал базу данных из старого дампа, который у меня был.

Я тогда начал mariadb, и это подходит хорошо. Удаленные файлы были воссозданы. ** Опять же, это только для разработчиков. Вы могли бы, вероятно, установить свой БД **


0

Я столкнулся с этой проблемой, когда пытался скопировать папку данных базы данных. Поэтому я перешел в папку данных и выполнил следующую команду, чтобы удалить все файлы журнала:

rm -rf *log*

Затем я восстановил докер, и проблема была решена.


0

Я также решил эту ошибку, удалив tc.log. С XAMPP файл tc.log находится в XAMPP/xamppfiles/var/mysqlпапке - на моем Mac он находится по адресу: /Applications/XAMPP/xamppfiles/var/mysql/tc.log


0

У меня была эта проблема в официальном док-контейнере MariaDB. Удаление файла журнала, как и другие предложенные ответы, не помогло мне. Однако моя проблема была связана с mmapпринятым ответом.

Я нашел различные решения, чтобы исправить это для моего сценария.

  1. Активировать бинарный журнал
  2. Удалите конфликт, препятствующий функционированию mmap
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.