Я собираюсь начать тестирование мастер мастер установки с использованием MySQL Group Replication. Я настроил 2 (пока) машины, скорее всего, будет третьим. Они оба имеют 2 сетевых интерфейса, один для доступа к приложениям, а другой - только IP-адрес локальной сети для связи между узлами.
Я вижу в некоторых документах, где упоминается использование двух сетевых карт, одна для связи между узлами и одна для связи с приложениями. Я нахожусь в точке, где я редактирую файл /etc/mysql/my.cnf. Мне нужно понять эти настройки:
Скажем, у моего приложения ниц есть ip 10.3.0.4, а у сетевой карты только NIC 10.3.1.4. То же самое на машине 2.
bind-address = "10.3.0.4"
report_host = "10.3.??" ??
loose-group_replication_local_address = "10.3.1.4:33061"
К какому IP принадлежит хост отчета? Я понял, что свободный-group_replication_local_address - это, по сути, еще один связывающий адрес, но для связи между узлами, но я не могу найти никаких примеров многоканальных установок, которые также имеют дело с этими настройками. Все учебники, в которых есть эти строки, показывают одинаковый ip из-за единственного никеля.
Среда: Ubuntu 16.04 в Azure
Я следую этому руководству по установке: https://www.digitalocean.com/community/tutorials/how-to-configure-mysql-group-replication-on-ubuntu-16-04
Бит о двойных никсах происходит из фрагментов примерно 6 разных страниц.
РЕДАКТИРОВАТЬ: @roothann выпрямил меня на том, что должен делать хозяин отчета. Теперь у меня возникла новая проблема. После того, как mysql был перезапущен, порт 33061 не отображается в netstat, и я получаю эту ошибку в журналах: «Не удалось получить имя партнера при подключении к серверу 10.3.1.5 с ошибкой 111 - Отказ в соединении. [GCS] Ошибка при открытии соединения с 10.3.1.5:33061 на локальном порту: 33061. Ошибка = 0 "Есть идеи? Я добавил плагин group_replication, но когда я делаю эту команду: mysql> START GROUP_REPLICATION; ОШИБКА 3096 (HY000): Команда START GROUP_REPLICATION не выполнена, так как произошла ошибка при инициализации уровня групповой связи.
Вот что заставило меня проверить логи и посмотреть на netstat.
ДРУГОЕ РЕДАКТИРОВАНИЕ: Как отмечено ниже, по какой-то причине команда безопасной установки не удалила директиву, чтобы принимать соединения только локально. Это исправлено. Новая проблема заключается в том, что данные не синхронизируются. Второй узел вышел из группы, потому что не смог завершить восстановление.
mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | f0bcfc98-4255-11e8-b39f-000d3a1db637 | 10.3.1.4 | 3306 | ONLINE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
Итак, по какой-то причине репликация пытается происходить на интерфейсах локальной сети, но на обычном порту mysql вместо 33061. Я попытался это исправить, и я получил это:
mysql> CHANGE MASTER TO MASTER_USER='repl', MASTER_PORT=33061, MASTER_PASSWORD='the password' FOR CHANNEL 'group_replication_recovery';
ERROR 3139 (HY000): CHANGE MASTER with the given parameters cannot be performed on channel 'group_replication_recovery'.
РЕДАКТИРОВАТЬ 17 мая: я перестроил кластер с нуля, на этот раз с 3 машинами. Все та же проблема. Первый узел подходит. Дополнительные два также появляются, но показывают только Восстановление, затем удаляются из кластера.
на первом узле я получаю это в журнале:
2018-05-17T14:37:21.859153Z 27 [System] [MY-010597] [Repl] 'CHANGE MASTER TO FOR CHANNEL 'group_replication_recovery' executed'. Previous state master_host='', master_port= 3306, master_log_file='', master_log_pos= 4, master_bind=''. New state master_host='', master_port= 3306, master_log_file='', master_log_pos= 4, master_bind=''.
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| group_replication_applier | 38d4aa76-592f-11e8-814a-000d3a60e580 | 10.7.1.11 | 33061 | RECOVERING | PRIMARY | 8.0.11 |
| group_replication_applier | 3dbbb30f-592f-11e8-8fc7-000d3a603364 | 10.7.1.12 | 33061 | RECOVERING | PRIMARY | 8.0.11 |
| group_replication_applier | b0ff0148-592e-11e8-aa03-000d3a60e4cc | 10.7.1.10 | 33061 | ONLINE | PRIMARY | 8.0.11 |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
3 rows in set (0.00 sec)
Я получаю это в журналах с одного из других серверов:
2018-05-17T14:57:17.970789Z 18 [ERROR] [MY-011583] [Repl] Plugin group_replication reported: 'For details please check performance_schema.replication_connection_status table and error log messages of Slave I/O for channel group_replication_recovery.'
2018-05-17T14:58:18.023898Z 18 [System] [MY-010597] [Repl] 'CHANGE MASTER TO FOR CHANNEL 'group_replication_recovery' executed'. Previous state master_host='10.7.1.10', master_port= 33061, master_log_file='', master_log_pos= 4, master_bind=''. New state master_host='10.7.1.10', master_port= 33061, master_log_file='', master_log_pos= 4, master_bind=''.
Я замечаю, что на первом узле переменная master_host пуста, а на втором заполнена ip первичного. Теперь, поскольку все они должны быть хозяевами, разве у первички не должно быть чего-то также?
Заранее спасибо!