web-dev-qa-db-ja.com

マスター-マスター複製が機能しない

マスターマスターレプリケーション用に、異なるマシンで実行されている2つのWAMPサーバーを構成しました。ネットワークにlinksysルーターを使用しています。ワイヤレスネットワークを作成しましたが、サーバーボックスの1つにWIFIがないため、ケーブルを使用してルーターに接続しました。設定後、すべてが問題ないように見えますが、サーバーはスレーブとして相互に接続しているようには見えません。以下はサーバーのステータスです。

Variable               Value
Slave_IO_State:        Connecting to master
Master_Host:           192.168.1.100
Master_User:           master
Master_Port:           3306
Connect_Retry:         60
Master_Log_File:       mysql-bin.000001
Read_Master_Log_Pos:   95849
Relay_Log_File:        Chibuzo-PC-relay-bin.000001
Relay_Log_Pos :        4
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running:      Connecting
Slave_SQL_Running:     Yes
Replicate_Do_DB:       ticket
Replicate_Ignore_DB:    
Replicate_Do_Table:     
Replicate_Ignore_Table: 
Replicate_Wild_Do_Table:    
Replicate_Wild_Ignore_Table:    
Last_Errno:     0
Last_Error:     
Skip_Counter    0
Exec_Master_Log_Pos:    95849
Relay_Log_Space:    107
Until_Condition:    None
Until_Log_File:     
Until_Log_Pos:  0
Master_SSL_Allowed:     No
Master_SSL_CA_File:     
Master_SSL_CA_Path:     
Master_SSL_Cert:    
Master_SSL_Cipher:  
Master_SSL_Key:     
Seconds_Behind_Master:  

IPアドレス192.168.1.102のサーバー1で次のクエリを実行すると、次の結果が得られました

SELECT user, Host FROM mysql.user WHERE Repl_slave_priv = 'Y';

+-----------+-------------------------+
| User      | Host                    |
+-----------+-------------------------+
| root      | localhost               |
| root      | 127.0.0.1               |
| root      | ::1                     |
| master    | 192.168.1.100           |
+-----------+-------------------------+

IP 192.168.1.100のサーバー2の場合

 +-----------+-------------------------+
 | User      | Host                    |
 +-----------+-------------------------+
 | root      | localhost               |
 | root      | 127.0.0.1               |
 | root      | ::1                     |
 | master    | 192.168.1.102           |
 +-----------+-------------------------+

これは192.168.1.102のエラーログの一部です

121230  1:23:29 [Note] Plugin 'FEDERATED' is disabled.
121230  1:23:29 InnoDB: The InnoDB memory heap is disabled
121230  1:23:29 InnoDB: Mutexes and rw_locks use Windows interlocked functions
121230  1:23:29 InnoDB: Compressed tables use zlib 1.2.3
121230  1:23:29 InnoDB: Initializing buffer pool, size = 16.0M
121230  1:23:29 InnoDB: Completed initialization of buffer pool
121230  1:23:29 InnoDB: highest supported file format is Barracuda.
121230  1:23:30 InnoDB: Waiting for the background threads to start
121230  1:23:31 InnoDB: 1.1.8 started; log sequence number 5483034
121230  1:23:31 [Note] Server hostname (bind-address): '(null)'; port: 3306
121230  1:23:31 [Note]   - '(null)' resolves to '::';
121230  1:23:31 [Note]   - '(null)' resolves to '0.0.0.0';
121230  1:23:31 [Note] Server socket created on IP: '0.0.0.0'.
121230  1:23:31 [Note] Event Scheduler: Loaded 0 events
121230  1:23:31 [Note] wampmysqld: ready for connections.
Version: '5.5.24-log'  socket: ''  port: 3306  MySQL Community Server (GPL)
121230  2:33:12 [Warning] Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL server acts as a slave and has his hostname changed!! Please use '--relay-log=Chibuzo-PC-relay-bin' to avoid this problem.
121230  2:33:12 [Note] 'CHANGE MASTER TO executed'. Previous state master_Host='', master_port='3306', master_log_file='', master_log_pos='4'. New state master_Host='192.168.1.100', master_port='3306', master_log_file='mysql-bin.000001', master_log_pos='95849'.
121230  2:38:50 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.000001' at position 95849, relay log '.\Chibuzo-PC-relay-bin.000001' position: 4
121230  2:39:11 [ERROR] Slave I/O: error connecting to master '[email protected]:3306' - retry-time: 60  retries: 86400, Error_code: 2003
130101  2:56:57 [Note] wampmysqld: Normal shutdown

130101  2:56:57 [Note] Event Scheduler: Purging the queue. 0 events
130101  2:56:58 [Note] Error reading relay log event: slave SQL thread was killed
130101  2:56:58 [Note] Slave I/O thread killed while connecting to master
130101  2:56:58 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.000001', position 95849
130101  2:57:00 [Warning] wampmysqld: Forcing close of thread 1011  user: 'root'

SHOW binary LOGS;

192.168.1.102

 +------------------+---------------+
 | Log_name         | File_size     |
 +------------------+---------------+
 | mysql-bin.000001 |  1455         |
 | mysql-bin.000002 |   236         |
 | mysql-bin.000003 |  6417         |
 | mysql-bin.000004 | 12755         |
 +-----------+----------------------+

192.168.1.100

 +------------------+---------------+
 | Log_name         | File_size     |
 +------------------+---------------+
 | mysql-bin.000001 |  96096        |
 | mysql-bin.000002 |  91695        |
 | mysql-bin.000003 |  48773        |
 +------------------+---------------+
5
Chibuzo

エラーログ:

[ERROR] Slave I/O: error connecting to master '[email protected]:3306' - retry-time: 60  retries: 86400, Error_code: 2003

Error_code:20:「(2003)Ca n't connect to MySQL server on 'server'(10061)エラーは、ネットワーク接続が拒否されたことを示します。 MySQLサーバーが実行されていること、ネットワーク接続が有効になっていること、指定したネットワークポートがサーバーで構成されているポートであることを確認する必要があります。

「マスター」アカウントを使用して、あるサーバーから別のサーバーに接続してみます。

192.168.1.100の場合:

mysql -h 192.168.1.102 -u master -p

192.168.1.102の場合:

mysql -h 192.168.1.100 -u master -p

firewallを確認して、ネットワーク通信に関連してpingなどを試してみてください...

マックス。

6
Seksi DBA

提案があります

スレーブで以下を実行します。

STOP SLAVE;
CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=95849;
START SLAVE;
SELECT SLEEP(15);
SHOW SLAVE STATUS\G

これにより、すべてのリレーログがリセットされ、ログファイルからの接続とエラーメッセージからの位置付けが試行されます。あなたが取得する場合 Slave_IO_Running: Connecting、調査する2つのシナリオがあります

シナリオ#1:binlog mysql-bin.000001 192.168.1.100が破損している可能性があります。

これを実行して確認できます

mysqlbinlog --start-position=95849 mysql-bin.000001 > binlog_stuff.txt

診る binlog_stuff.txt binlogダンプからのクリーンなステートメントまたはエラーが含まれているかどうかを確認します。

シナリオ#2:binlog mysql-bin.000001 192.168.1.100はMySQLの新しいバージョンからのものです

  • MySQL 5.0からMySQL 5.1へのレプリケーションが許可されています
  • MySQL 5.0からMySQL 5.5へのレプリケーションが許可されています
  • MySQL 5.1からMySQL 5.5へのレプリケーションが許可されています
  • MySQL 5.5からMySQL 5.1へのレプリケーションは許可されていません
  • MySQL 5.5からMySQL 5.0へのレプリケーションは許可されていません
  • MySQL 5.1からMySQL 5.0へのレプリケーションは許可されていません
  • 私は以前にこれについて話しました

代替

次のバイナリログにスキップすると役立つかどうかを確認できます

STOP SLAVE;
CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=107;
START SLAVE;
SELECT SLEEP(15);
SHOW SLAVE STATUS\G

同じエラーが発生した場合は、それを元に戻すことができます

STOP SLAVE;
CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=95849;
START SLAVE;
SELECT SLEEP(15);
SHOW SLAVE STATUS\G
3
RolandoMySQLDBA

マスターサーバーは、何度も失敗した後、着信接続をブロックすることがあります。他の接続関連の問題をテストした後、頻繁に発生します。

とにかく、マスターサーバーでホストをフラッシュしてみてください:

mysqladmin -u root -p flush-hosts

次にスレーブを再起動します。

service mysql restart

接続されているかどうかを確認します。

tail -30f /var/log/mysql/error.log
1
pista329