设置MySQL组复制(主从)


0

我将开始使用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填充。现在,既然他们都应该是大师,那么主小学也应该没有吗?

提前致谢!


report_host是一个您可以随意定义的字符串。您是在谈论GA 5.7中的InnoDB Cluster吗?如果是这样,您是否正在使用mysqlsh进行引导?
roothahn

@roothahn我不确定,我只是在遵循该教程,它没有具体说明有关innodb的内容。另外,我不认为report_host是随机的。它必须是绑定地址的IP或rep本地地址。我正在尝试找出哪个。
布鲁斯

我并不是说它是随机的(明确地说,它不应更改),而是您定义的字符串,通常是从属服务器的主机名或IP(以便您可以通过主服务器上的SHOW SLAVE HOSTS进行识别)。但是,如果您定义的字符串或别名不是主机名,也可以。它与bind_address不相关
roothahn

@roothahn好的,这更有意义。我采用了仅LAN NIC的IP,因为这是节点之间相互通信的方式。新问题也是我将要编辑的主要内容是,当mysql重新启动时,netstat中未显示端口33061,并且出现此错误:“连接到服务器10.3时,获取对等名称失败。 1.5,错误111-连接被拒绝。[GCS]在本地端口上打开到10.3.1.5:33061的连接时发生错误:33061。错误= 0“有什么想法吗?
布鲁斯

可能是您的my.cnf缺少lack-group_replication_group_seeds的值。(集群中所有节点的ip:port组合的逗号分隔列表)。那就是我定义13306的关键点
roothahn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.