web-dev-qa-db-ja.com

MySQL-バイナリロギングを有効にできません

2つのサーバー間でマスター/スレーブレプリケーションを設定できるように、バイナリロギングを有効にしようとしています。大量のデータが存在する既存のサーバーを使用していて、次のコマンドでデータをダンプしようとしています。

mysqldump -u root -p --all-databases --master-data > masterdump.sql

しかし、エラーが発生します:mysqldump: Error: Binlogging on server not active

バイナリロギングを有効にする方法については、あらゆる種類のチュートリアルに従ってきましたが、何も機能しませんでした。 my.cnfに次のパラメーターを追加したことを確認しました。

server-id    = 1
log_bin      = /var/log/mysql/mysql-bin.log
sync_binlog  = 1

MySQLを再起動すると、約60秒(データベースの巨大なサイズが原因であると想定)時間がかかりますが、最終的には起動します。しかし、/var/log/mysql/error.logを確認すると、次のエラーが見つかりました(何百回も複製されています)。

InnoDB: Unable to lock ./ibdata1, error: 11
InnoDB: Check that you do not already have another mysqld process

そのため、pstreeを実行してすべてのmysqldプロセスを探したところ、次のことがわかりました。

root@my_server:~# pstree
init---some stuff
     |--
     |--mysqld---10*[{mysqld}]
     |--
     |--Sudo---mysqld---23*[{mysqld}]

これは私が行き詰まっているところです。 mysqldSudo mysqldの両方が実行されているのが正常かどうかはわかりません。サーバーは ServerPilot によって管理されています。

この証拠のいずれかが、バイナリログが有効にならない理由を示していますか?

4
Justin

複数のmysqldプロセスが問題を引き起こしていたようです。 この質問からのいくつかのヒントのおかげでSudo mysqldの下でプロセスツリーを強制終了でき、バイナリログがすぐに開始されました。 この素晴らしいチュートリアル のおかげで、マスタースレーブレプリケーションの残りの作業はその後かなり速くなりました。

0
Justin