MySQLの単純なレプリケーションの問題:「マスターステータスの表示」で「空のセット」が生成されますか?


10

MySQLマスターレプリケーション(Debian 6.0.1上)を次の指示に従って忠実にセットアップしています:http : //www.neocodesoftware.com/replication/

私が持っている限り:

mysql > show master status;

しかし、これは残念ながら、有用な出力ではなく、以下を生成します。

Empty set (0.00 sec)

のエラーログ/var/log/mysql.errは空のファイルにすぎないため、手がかりは得られません。

何か案は?

これは私が/etc/mysql/my.cnf1つのサーバーに入れたものです(他のサーバーに合わせて適切に修正されています):

server-id = 1
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1
master-host = 10.0.0.3
master-user = <myusername>
master-password = <mypass>
master-connect-retry = 60
replicate-do-db = fruit
log-bin = /var/log/mysql-replication.log
binlog-do-db = fruit

また、ユーザーを設定しました。上記のユーザー名/パスワード/ IPアドレスを使用して、サーバーAのMySQLからサーバーBのデータベースに接続できます。


また、howtoforge.com / mysql_database_replication(1台のサーバーのみ)で、より簡単な手順を実行してshow master statusみましたEmpty set。困惑!

サービスを再起動して確認します。再起動後にエラーログが生成された場合は、それも貼り付けます。

回答:


7

興味深いことに、バイナリログが有効になっていない状態でmysqlをPCで実行しています。私は次のことをしました:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 5.5.12 MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show master status;
Empty set (0.00 sec)

mysql> show binary logs;
ERROR 1381 (HY000): You are not using binary logging

mysql>

示されているように、MySQLはSHOW MASTER STATUSに対して「Empty Set」を表示するため、バイナリログが有効になっていないためです。私の設定を考えれば、それは明らかです。

あなたが最初にすべきことは、エラーログに特定のフォルダがあることを確認することです

[mysqld]
log-error=/var/log/mysql/mysql.err
log-bin = /var/log/mysql/mysql-replication.log

次に、以下を実行します。

service mysql stop
mkdir /var/log/mysql
chown -R mysql:mysql /var/log/mysql
service mysql start

次に、mysqlクライアントでこれらのSQLコマンドを実行します

SHOW MASTER STATUS;
SHOW BINARY LOGS;

以前と同じ出力が得られた場合、MySQLはバイナリログを指定されたフォルダに書き込むことができません。あなたのジレンマが、MySQLが/ var / logに書き込めない理由になります。

これは完全な答えではありませんが、これが役に立てば幸いです。


/ var / logを再帰的に所有するように設定し、mysqlのグループを使用すると、Linuxシステムがかなり破壊されます。私はこれを行わないよう強く勧めます。代わりに、mysqlが書き込もうとしているログファイルに対して具体的に実行します。存在しない場合は、最初にそれに触れてください。
John Hunt、

@JohnHunt、何か知ってる?あなたが正しいです。フォルダを変更します。
RolandoMySQLDBA 2015


0

の設定log-binが正しくないため、MySQLはバイナリログを書き込むことができません。これはファイル名ではなく、部分的なファイル名パターンであり、MySQLはそれにディレクトリを追加し、シーケンス番号と拡張子を追加します。通常の設定は次のようなものです

log-bin=log-bin

マニュアルを確認してください。


--log-bin=file_namedev.mysql.com/doc/refman/5.7/en/…)。ファイル名ではないと記載されているマニュアルはどれですか?
Stephan Vierkant
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.