MariaDB는 TC 로그를 초기화 할 수 없습니다


21

인터넷에서 모든 솔루션을 시도했지만 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

방랑자 파일 :

# -*- 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에 대상 폴더에 대한 권한이 있습니까? 쓰기 권한으로 파일을 작성할 수 있지만 읽기 권한이 없을 수 있습니다. Maria가 해당 계정에서하는 것과 동일한 작업을 수행하십시오. 파일을 열어두고 잠글 수 없는가?
Stoleg

답변:


15

우후, 찾았 어! 지금은 최소한. 소스를 파헤 치면 이것이 mmap()호출 과 관련이있을 수 있으며 lo- be - VirtualBox는 해당 영역에 버그가 있습니다 . 다행히도 동일한 소스가 해결 방법 인 log_bin 옵션을 암시 합니다. 이것을 명령 줄 --log_bin이나 구성 파일에서 로 활성화하면 log_bin=ON다시 작동합니다!

최신 정보

그들은 VirtualBox 6.0.6에서 수정했다고 말합니다!


정말 고맙습니다! tc.logWindows 10 호스트에서 Virtualbox를 사용할 때 오류가 수정되었습니다 .
Ricky Boyce

이것은 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

이것은 다소 안전하지 않은 느낌이지만 내 경우에는 효과가있었습니다!
Peter

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

이것은 실제로 발생하는 이상한 문제입니다. 이 파일에 정확히 무엇이 저장되어 있습니까? 나는 거기에있는 것을 보는 것을 잊어 버린 문제를 해결하기 위해 서둘러했습니다. 더 자세한 내용을 제공 할 수 있습니다.
MageProspero

"디스크 공간 부족"오류가 오늘 tc.log를 손상시킨 것 같습니다.
jchook

1

mysql / mariadb를 다시 실행하고 데이터를 잃어 버릴 염려가 없다면 (개발 환경에서) 이것이 내가 한 일입니다.

삭제 : ib_logfile1 ib_logfile0 aria_log_control aria_log.00000001 tc.log ib_data1

서버를 시작

스키마를 삭제하십시오 (파일이 포함 된 경우 스키마 폴더로 cd하고 모든 것을 삭제하십시오)

그런 다음 기존 덤프에서 데이터베이스를 다시 가져 왔습니다.

그런 다음 mariadb를 시작하면 정상적으로 나타납니다. 삭제 된 파일이 다시 작성되었습니다. ** 다시 이것은 개발자 전용입니다. 아마도 db를 설치할 수 있습니다 **


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을 올바르게 작동하지 못하게하는 충돌 제거
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.