Как MySQL Group Replication получить IP-адрес основного узла

Согласно MYSQL 5.7 справочное руководство :

Мы можем использовать 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-адрес вместо имени хоста ?

2 ответа

  1. Вы не можете получить ipaddress имен хостов. Если вы подключаетесь к какому-либо хосту, то вы знаете ipaddress этого имени хоста. Вот список рассылки, который находится на форуме mysql, который был бы полезен вам.

  2. Хорошо, мы можем использовать свойство с именем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 we memtion выше, чтобы получить 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)