我将开始使用MySQL组复制测试主主设置。我已经设置了2台(到目前为止)机器,可能会是三分之一。它们都具有2个nic,一个用于应用程序访问,另一个仅具有LAN IP用于节点间通信。
我在一些文档中看到它提到使用两个NIC,一个用于节点之间的通信,另一个用于与应用程序的通信。我正要编辑/etc/mysql/my.cnf文件。我需要了解以下设置:
说我的应用程序nic的IP为10.3.0.4,仅LAN的NIC的IP为10.3.1.4。
bind-address = "10.3.0.4"
report_host = "10.3.??" ??
loose-group_replication_local_address = "10.3.1.4:33061"
报告主机属于哪个IP?我收集到,loose-group_replication_local_address本质上是另一个绑定地址,但用于节点之间的通信,但是我找不到任何也能处理这些设置的多网卡设置示例。所有具有这些行的教程都显示由于只有一个网卡而放置了相同的IP。
环境:Azure中的Ubuntu 16.04
我正在遵循此安装指南:https : //www.digitalocean.com/community/tutorials/how-to-configure-mysql-group-replication-on-ubuntu-16-04
有关双nic的内容来自大约6个不同页面的片段。
编辑:@roothann使我明白了报告主持人应该做什么。现在,我遇到了一个新问题。一旦mysql重新启动,netstat中不会显示端口33061,并且在日志中出现此错误:“在连接到服务器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 |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
因此,由于某种原因,复制尝试在LAN接口上进行,但是在常规的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'.
编辑5月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填充。现在,既然他们都应该是大师,那么主小学也应该没有吗?
提前致谢!