2016-12-28 81 views
0

根据MYSQL 5.7参考手册:MySQL的组复制如何获得主节点的IP地址

我们可以使用下面的SQL中找到此主当组复制部署在单模式时的节点主机名:

mysql> SELECT * FROM performance_schema.replication_group_members WHERE MEMBER_ID = (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME= 'group_replication_primary_member'); 
+---------------------------+--------------------------------------+-------------+-------------+--------------+ 
| CHANNEL_NAME    | MEMBER_ID       | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | 
+---------------------------+--------------------------------------+-------------+-------------+--------------+ 
| group_replication_applier | 9176f4d3-c7f6-11e6-bcf7-fa163ee40410 | myhost  |  24801 | ONLINE  | 
+---------------------------+--------------------------------------+-------------+-------------+--------------+ 
1 row in set (0.00 sec) 

问题是:如何获取ip地址而不是主机名?

回答

0

您无法获取任何主机名的IP地址。如果你连接到某个主机,那么你知道该主机名的IP地址。这是在MySQL论坛上的mailing list,这将有助于你。

0

好了,我们可以使用一个名为report_host的属性指向我们的IP地址,例如:

在我自己的机器,我部署三个节点的(S1,S2,S3),形成一个复制组,在所有my.cnf,定义它(10.202.7.88是我的IP地址):

report_host=10.202.7.88 

然后重新启动所有节点,并重新配置三个结而形成复制组,然后查询:

mysql> select * from performance_schema.replication_group_members; 
+---------------------------+--------------------------------------+-------------+-------------+--------------+ 
| CHANNEL_NAME    | MEMBER_ID       | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | 
+---------------------------+--------------------------------------+-------------+-------------+--------------+ 
| group_replication_applier | 933a5345-d321-11e6-b971-fa163ee40410 | 10.202.7.88 |  24801 | ONLINE  | 
| group_replication_applier | 9abe6249-d321-11e6-bb5c-fa163ee40410 | 10.202.7.88 |  24802 | ONLINE  | 
| group_replication_applier | a1c89c34-d321-11e6-bbbc-fa163ee40410 | 10.202.7.88 |  24803 | ONLINE  | 
+---------------------------+--------------------------------------+-------------+-------------+--------------+ 
3 rows in set (0.00 sec) 

然后我们可以使用我们上面提到的sql获取主节点的ip地址:

mysql> SELECT * FROM performance_schema.replication_group_members WHERE MEMBER_ID = (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME= 'group_replication_primary_member'); 
+---------------------------+--------------------------------------+-------------+-------------+--------------+ 
| CHANNEL_NAME    | MEMBER_ID       | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | 
+---------------------------+--------------------------------------+-------------+-------------+--------------+ 
| group_replication_applier | 933a5345-d321-11e6-b971-fa163ee40410 | 10.202.7.88 |  24801 | ONLINE  | 
+---------------------------+--------------------------------------+-------------+-------------+--------------+ 
1 row in set (0.00 sec)