千家信息网

MySQL5.7集群MGR启动报ERROR 3092 (HY000)该怎么办

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,MySQL5.7集群MGR启动报ERROR 3092 (HY000)该怎么办,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。MySQL
千家信息网最后更新 2025年01月21日MySQL5.7集群MGR启动报ERROR 3092 (HY000)该怎么办

MySQL5.7集群MGR启动报ERROR 3092 (HY000)该怎么办,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

MySQL5.7版本MGR启动时报:

ERROR 3092 (HY000): The server is not configured properly to be an active member of the group. Please see more details on error log.

查看告警日志:

2020-03-04T07:48:58.797180Z 574478 [Warning] Plugin group_replication reported: '[GCS] Automatically adding IPv4 localhost address to the whitelist. It is mandatory that it is added.'2020-03-04T07:48:58.844857Z 574714 [ERROR] Slave SQL for channel 'group_replication_applier': Error 'This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)' on query. Default database: ''. Query: 'CREATE DEFINER=`root`@`192.168.187.%` FUNCTION `GetDistance`(`lat1` float,`lng1` float,`lat2` float,`lng2` float) RETURNS floatbegin              DECLARE earth_padius float DEFAULT 6378.137;              DECLARE radLat1      float DEFAULT 0;              DECLARE radLat2      float DEFAULT 0;              DECLARE a            float DEFAULT 0;              DECLARE b            float DEFAULT 0;              DECLARE s            float DEFAULT 0;               set radLat1 = Radian(lat1);              set radLat2 = Radian(lat2);              set a = radLat1 - radLat2;              set b = Radian(lng1) - Radian(lng2);               set s = 2 *       Asin(Sqrt(power(sin(a / 2), 2) +                 cos(radLat1) * cos(radLat2) * power(sin(b / 2), 2)));              set s = s * earth_padius;              set s = Round(s * 10000) / 10000;  re2020-03-04T07:48:58.844919Z 574714 [Warning] Slave: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) Error_code: 14182020-03-04T07:48:58.844938Z 574714 [ERROR] Plugin group_replication reported: 'The applier thread execution was aborted. Unable to process more transactions, this member will now leave the group.'2020-03-04T07:48:58.844963Z 574714 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'FIRST' position 0.2020-03-04T07:48:58.844984Z 574711 [ERROR] Plugin group_replication reported: 'Fatal error during execution on the Applier process of Group Replication. The server will now leave the group.'2020-03-04T07:48:58.845030Z 574711 [ERROR] Plugin group_replication reported: '[GCS] The member is already leaving or joining a group.'2020-03-04T07:48:58.845073Z 574711 [ERROR] Plugin group_replication reported: 'Unable to confirm whether the server has left the group or not. Check performance_schema.replication_group_members to check group membership information.'2020-03-04T07:49:03.586818Z 0 [ERROR] Plugin group_replication reported: 'There was a previous plugin error while the member joined the group. The member will now exit the group.'2020-03-04T07:57:00.047106Z 574478 [Warning] Plugin group_replication reported: '[GCS] Automatically adding IPv4 localhost address to the whitelist. It is mandatory that it is added.'2020-03-04T07:57:01.992027Z 575211 [Warning] Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information.

从监控告警日志内容可以看出来,是由于函数操作不符合规范造成的MGR集群掉线,具体日志描述如下:

This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *mi

ght* want to use the less safe log_bin_trust_function_creators variable) Error_code: 1418

遇到这种问题可以从两个方面去解决。第一种方法就是开发人员按照规范创建符合标准的函数;第二种方法就是配置数据库参数,将log_bin_trust_function_creators配置为开启。

此处,开发人员也是选择了将log_bin_trust_function_creators参数配置为开启,但是在一个节点开启了,其他节点未开启,最终导致其他节点出现上述错误信息。

以下是部分处理过程,仅供参考:

mysql> select * from performance_schema.replication_group_members;+---------------------------+--------------------------------------+-------------+-------------+--------------+| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |+---------------------------+--------------------------------------+-------------+-------------+--------------+| group_replication_applier | 48713421-9261-11e9-9799-005056851cf9 | db2    |        3306 | ERROR        |+---------------------------+--------------------------------------+-------------+-------------+--------------+1 row in set (0.00 sec) mysql> mysql> mysql> mysql> stop group_replication;Query OK, 0 rows affected (1.01 sec) mysql> start group_replication;ERROR 3092 (HY000): The server is not configured properly to be an active member of the group. Please see more details on error log.mysql> show variables like '%func%';+---------------------------------+-------+| Variable_name                   | Value |+---------------------------------+-------+| log_bin_trust_function_creators | OFF   |+---------------------------------+-------+1 row in set (0.01 sec) mysql> mysql> mysql> set global log_bin_trust_function_creators=1;Query OK, 0 rows affected (0.00 sec) mysql> show variables like '%func%';+---------------------------------+-------+| Variable_name                   | Value |+---------------------------------+-------+| log_bin_trust_function_creators | ON    |+---------------------------------+-------+1 row in set (0.00 sec) mysql> mysql> mysql> stop group_replication;Query OK, 0 rows affected (0.00 sec) mysql> start group_replication;Query OK, 0 rows affected (2.90 sec) mysql> select * from performance_schema.replication_group_members;+---------------------------+--------------------------------------+-------------+-------------+--------------+| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |+---------------------------+--------------------------------------+-------------+-------------+--------------+| group_replication_applier | 2ff8ea98-9128-11e9-91dd-0819a62578bd | db1    |        3306 | ONLINE       || group_replication_applier | 48713421-9261-11e9-9799-005056851cf9 | db2    |        3306 | ONLINE       || group_replication_applier | 9c245a8c-9262-11e9-82d6-005056853a0e | db3    |        3306 | ONLINE       |+---------------------------+--------------------------------------+-------------+-------------+--------------+3 rows in set (0.00 sec) mysql>

关于MySQL5.7集群MGR启动报ERROR 3092 (HY000)该怎么办问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

0