Я пытаюсь настроить репликацию mysql через туннель SSH. Странная вещь в этой настройке заключается в том, что у меня есть один мастер с mysql 5.0.60sp1-enterprise-gpl-log и один ведомый с mysql 5.0.67-community-log. Может ли быть так, что репликация между редакцией сообщества и корпоративной версией невозможна?
Как вы можете видеть в моем журнале ниже, можно войти на удаленный сервер с помощью клиента mysql. Но репликация получает «Невозможно подключиться к серверу MySQL на '127.0.0.1' (13)»
Это какой-то файл журнала, который я забыл посмотреть, чтобы получить дополнительную информацию?
[root@mysql1-av ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 73
Server version: 5.0.67-community-log MySQL Community Edition (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
Версия подчиненного mysql
[root@mysql1-av ~]# autossh -f -M 20001 -L 3307:10.200.200.200:3306 dali@www.ourbounceserver.com -N
[root@mysql1-av ~]# mysql -h127.0.0.1 --port 3307 -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5189
Server version: 5.0.60sp1-enterprise-gpl-log MySQL Enterprise Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> Aborted
Войдите в главный mysql с клиентом mysql через туннель ssh.
[root@mysql1-av ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 75
Server version: 5.0.67-community-log MySQL Community Edition (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> change master to master_host='127.0.0.1', MASTER_PORT=3307, master_user='xxxx', master_password='xxxx', master_log_file='bin.000001';
Query OK, 0 rows affected (0.00 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Connecting to master
Master_Host: 127.0.0.1
Master_User: replNSG
Master_Port: 3307
Connect_Retry: 60
Master_Log_File: bin.000001
Read_Master_Log_Pos: 4
Relay_Log_File: relay.000001
Relay_Log_Pos: 98
Relay_Master_Log_File: bin.000001
Slave_IO_Running: No
Slave_SQL_Running: Yes
Replicate_Do_DB:
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: 4
Relay_Log_Space: 98
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: NULL
1 row in set (0.00 sec)
Запускаем репликацию, но она прерывается при вводе-выводе.
[root@mysql1-av ~]# tail /var/log/mysqld.log
120921 22:17:59 [Note] Slave I/O thread killed while connecting to master
120921 22:17:59 [Note] Slave I/O thread exiting, read up to log 'bin.000001', position 4
120921 22:17:59 [Note] Error reading relay log event: slave SQL thread was killed
120921 22:29:36 [Note] Slave SQL thread initialized, starting replication in log 'bin.000001' at position 4, relay log '/var/lib/mysql/relay.000001' position: 4
120921 22:29:36 [ERROR] Slave I/O thread: error connecting to master 'xxxx@127.0.0.1:3307': Error: 'Can't connect to MySQL server on '127.0.0.1' (13)' errno: 2003 retry-time: 60 retries: 86400
Потому что он не может подключиться к главному серверу.
MySQL - даже 5.0 - имеет встроенную поддержку SSL-репликации. Если нет веских причин для использования туннелей ssh, я бы рекомендовал их использовать.
http://dev.mysql.com/doc/refman/5.0/en/replication-solutions-ssl.html
Я решил проблему. Это ошибка в команде репликации mysql «изменить мастер» и аргументе «MASTER_PORT = 3307». Его не волнует этот аргумент, и он всегда использует порт 3306.
При использовании ведомого устройства MySQL 5.0.18, если ведущее устройство прослушивает любой порт, отличный от 3306, репликация завершается ошибкой, даже если master_port установлен на правильный порт прослушивания на ведущем устройстве.