私はインターネットであらゆる解決策を試しましたが、私のMariaDbサーバーは失敗し続け、私を裏切り続け、私の小さなDevOpsの世界を破壊し続けます。状況をスムーズにするための私の試みには、あらゆる種類の満足度が含まれていました:権限の変更、構成、ログファイルの削除、アップグレード/再インストール、内部ファイルの移動と他のDBMSの削除、彼女以外のすべての削除...とても長く抵抗します。私の最後で唯一の希望は、皆さんが私たちの関係におけるそのような重要な瞬間を切り抜ける道を照らしてくれることです。
私はvagrantを使用していますが、問題はdatadir
オプションにあります-デフォルトのパスを使用するとすべて問題ありませんが、vagrant共有フォルダーに変更すると、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
Woohoo、見つけた!今のところ、少なくとも。ソースを掘り下げると、これがmmap()
呼び出しと関係がある可能性があり、loおよびbehold- VirtualBoxにはその領域にバグがあります である可能性があります。幸いなことに、同じソースが回避策- log_binオプション を示唆しています。これを有効にして(コマンドラインから--log_bin
として、または構成ファイルからlog_bin=ON
として)、物事は再び機能し始めます!
彼らはそれをVirtualBox 6.0.6で修正したと言っています!
/ var/lib/mysqlのtc.logファイルを削除してしまいました。 mysqlを再起動すると、新しいtc.logが作成され、起動しました。
Sudo rm -f /var/lib/mysql/tc.log
データディレクトリのtc.log
を削除し、mysql-bin.indexから古いエントリを削除できます(バイナリログのリストとともにテキストファイルです)。これが開発ボックスの場合、インデックスファイル(mysql-bin.index)を削除して、強制的に再作成できます。
また、mysql
ユーザーと共有フォルダIDの所有者の間のユーザーIDに関連している可能性もあります here は、そのためのスニペットです。
Mysql/mariadbをもう一度実行し、データを失うことを気にしないでください(開発環境の場合)をしたい場合、これは私がやったことです
削除:ib_logfile1 ib_logfile0 aria_log_control aria_log.00000001 tc.log ib_data1
サーバーを起動する
スキーマを削除します(ファイルが含まれている場合は、スキーマのフォルダーにcdし、すべてを削除します)
次に、持っていた古いダンプからデータベースを再インポートしました。
その後、mariadbを起動しましたが、問題はありませんでした。削除されたファイルは再作成されました。 **これも開発者専用です。あなたはおそらくあなたのdbをインストールすることができます**
また、tc.logを削除してこのエラーを解決しました。 XAMPPでは、tc.logファイルはXAMPP/xamppfiles/var/mysql
フォルダ-私のMacでは、次の場所にあります:/Applications/XAMPP/xamppfiles/var/mysql/tc.log
MariaDBの公式のdockerコンテナー内でこの問題が発生しました。他の回答が提供されたため、ログファイルを削除しても役に立たなかった。しかし、受け入れられた回答が示唆するように、私の問題はmmap
に関連していました。
さまざまな解決策を見つけました これを私のシナリオに合わせて修正します。
Ubuntu 19.10.xでMariaDB 10.xの横にMySQL Workbenchをインストールした後、突然MariaDBが中断されましたSudo mv /var/lib/mysql/tc.log /var/lib/mysql/tc_bkp.log
は私のために働きました。
データベースデータフォルダーをコピーしようとしたときにこの問題に直面しました。そこで、データフォルダーに移動し、次のコマンドを実行してすべてのログファイルを削除しました。
rm -rf *log*
次に、Dockerを再構築し、問題を分類しました。