Pro replikaci master-master jsem nakonfiguroval dva servery WAMP
spuštěné na různých počítačích. Používám pro síť linksys
router. Vytvořil jsem bezdrátovou síť, ale jedna ze serverových schránek nemá WIFI
, takže jsem ji pomocí kabelu připojil k routeru. Po konfiguraci se zdá, že je vše v pořádku, ale zdá se, že servery se navzájem spojují jako otroky. Níže je uveden stav serveru.
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:
Po spuštění následujícího dotazu na serveru 1 s adresou IP 192.168.1.102 jsem získal následující výsledek
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 |
+-----------+-------------------------+
Pro server 2 s IP 192.168.1.100
+-----------+-------------------------+
| User | Host |
+-----------+-------------------------+
| root | localhost |
| root | 127.0.0.1 |
| root | ::1 |
| master | 192.168.1.102 |
+-----------+-------------------------+
Zde je část protokolu chyb na 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;
Dne 192.168.1.102
+------------------+---------------+
| Log_name | File_size |
+------------------+---------------+
| mysql-bin.000001 | 1455 |
| mysql-bin.000002 | 236 |
| mysql-bin.000003 | 6417 |
| mysql-bin.000004 | 12755 |
+-----------+----------------------+
Dne 192.168.1.100
+------------------+---------------+
| Log_name | File_size |
+------------------+---------------+
| mysql-bin.000001 | 96096 |
| mysql-bin.000002 | 91695 |
| mysql-bin.000003 | 48773 |
+------------------+---------------+
V protokolu chyb:
[ERROR] Slave I/O: error connecting to master '[email protected]:3306' - retry-time: 60 retries: 86400, Error_code: 2003
Error_code: 20: Chyba (2003) Nelze se připojit k serveru MySQL na 'serveru' (10061) naznačuje, že síťové připojení bylo odmítnuto. Měli byste zkontrolovat, zda je spuštěn server MySQL, zda je povoleno síťové připojení a zda je zadaný síťový port port nakonfigurovaný na serveru.
Zkuste se připojit z jednoho serveru na druhý pomocí svého „hlavního“ účtu:
Dne 192.168.1.100:
mysql -h 192.168.1.102 -u master -p
Dne 192.168.1.102:
mysql -h 192.168.1.100 -u master -p
Zkontrolujte, zda firewall, zkuste ping a další věci týkající se síťové komunikace ...
Max.
Mám návrh
Na Slave spusťte následující:
STOP SLAVE;
CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=95849;
START SLAVE;
SELECT SLEEP(15);
SHOW SLAVE STATUS\G
Tím se resetují všechny protokoly relé a pokus o připojení ze souboru protokolu a pozice z chybové zprávy. Pokud dostanete Slave_IO_Running: Connecting
, existují dva scénáře, které je třeba prozkoumat
SCENARIO # 1: Binlog mysql-bin.000001
dne 192.168.1.100 může být poškozen.
Můžete to ověřit spuštěním
mysqlbinlog --start-position=95849 mysql-bin.000001 > binlog_stuff.txt
Prozkoumat binlog_stuff.txt
Chcete-li zjistit, zda obsahuje čisté příkazy nebo chyby z výpisu binlogu.
SCENARIO # 2: Binlog mysql-bin.000001
dne 192.168.1.100 je z novější verze MySQL
Viděli jste, zda by pomohlo přeskočení do dalšího binlogu
STOP SLAVE;
CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=107;
START SLAVE;
SELECT SLEEP(15);
SHOW SLAVE STATUS\G
Pokud dostanete stejné chyby, můžete je vrátit zpět
STOP SLAVE;
CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=95849;
START SLAVE;
SELECT SLEEP(15);
SHOW SLAVE STATUS\G
Váš hlavní server někdy zablokuje všechna příchozí připojení po mnoha neúspěšných pokusech. Stává se to často po testování dalších problémů souvisejících s připojením.
Každopádně zkuste hostitele flush na vašem hlavním serveru:
mysqladmin -u root -p flush-hosts
pak restartujte slave:
service mysql restart
a zkontrolujte, zda je připojen:
tail -30f /var/log/mysql/error.log