MariaDB无法初始化tc日志


21

我已经尝试了Internet上的所有解决方案,但我的MariaDb服务器继续失败,继续背叛我,继续破坏我很小的DevOps世界。我为缓解这种状况所做的尝试包括各种各样的满足:更改权限,配置,删除日志文件,升级/重新安装,上下移动她的内部文件,删除其他DBMS,删除除她以外的所有内容。这么长时间抵制。我的最后一个也是唯一的希望,就是为我们关系中的关键时刻指明道路。

我正在使用无业游民,而问题出在datadir选项上-使用默认路径时,一切正常,但是当我将其更改为无业游民的共享文件夹时,Maria甚至无法启动。我已将所有/ 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嗨,Stoleg,谢谢您的答复。分区上有很多可用空间。我尝试删除文件,然后重新启动,MariaDb创建了该文件,但无法启动
Sam Ivichuk

Maria所使用的帐户是否READ有权访问目标文件夹?它可能会使用Write来创建文件,但没有Read权限。尝试执行与Maria在其帐户下所做的相同操作。可能无法保持文件打开和锁定?
Stoleg '16

Answers:


15

哇,我找到了!至少现在。深入研究该源表明,这可能与mmap()调用有关,并且lo和bestand- VirtualBox在该区域存在错误。幸运的是,相同的源代码暗示了一种解决方法-log_bin选项。启用它(从命令行--log_bin或从配置文件从启用log_bin=ON),一切将重新开始!

更新资料

他们说他们已经在VirtualBox 6.0.6中修复了它!


非常感谢!这修复了我tc.log在Windows 10主机上使用Virtualbox的错误。
Ricky Boyce '18

对于Windows 10 Home,Docker Toolbox 18.03来说,这似乎对我来说也是一大进步。
rfay

22

我最终删除了/ var / lib / mysql中的tc.log文件。当我再次启动mysql时,它创建了一个新的tc.log并启动了。

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

虽然这有些不安全,但对我来说还是有效的!
彼得

2
它起作用了,但是使用起来更安全:sudo mv /var/lib/mysql/tc.log /var/lib/mysql/tc_bkp.log
Pedro Lobito

9

您可以删除tc.log数据目录中的,并从mysql-bin.index(它是一个文本文件,以及二进制日志列表)中删除旧条目。如果这是一个开发框,则可以删除索引文件(mysql-bin.index)以强制其重新创建。

它还可能与mysql用户和共享文件夹ID所有者之间的用户ID有关,此处是一个摘要。


虽然对这个问题的原因感到好奇,但我该如何避免呢?谢谢
3zzy

@ 3zzy-阅读我的答案。
Vilx-

@ 3zzy我尚未重现该错误。
3manuek's

确实,这是一个奇怪的问题。该文件中到底存储了什么?我非常着急地解决了我忘记看的那个问题。我也许能够提供更多细节。
MageProspero

我怀疑今天有一个“磁盘空间不足”错误损坏了我的tc.log。
jchook

1

如果您只是想让mysql / mariadb重新运行并且不介意丢失数据(在开发环境中),这就是我所做的

删除:ib_logfile1 ib_logfile0 aria_log_control aria_log.00000001 tc.log ib_data1

启动服务器

删除模式(如果它包含文件,请cd进入模式的文件夹,删除所有内容)

然后,我从一个旧的转储中重新导入了数据库。

然后,我启动了mariadb,一切顺利。重新创建已删除的文件。**同样,这仅适用于开发人员。您可能会安装数据库**


0

当我尝试复制数据库数据文件夹时遇到了这个问题。因此,我转到数据文件夹,并执行以下命令删除所有日志文件:

rm -rf *log*

然后,我重建了码头工人,问题得到了解决。


0

我还通过删除tc.log解决了该错误。使用XAMPP,tc.log文件位于XAMPP/xamppfiles/var/mysql文件夹中-在我的Mac上,其位于: /Applications/XAMPP/xamppfiles/var/mysql/tc.log


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.