ОШИБКА MY-011542 Плагин Repl group_replication сообщил: «Таблица repl_test не имеет первичного ключа - PullRequest
0 голосов
/ 22 февраля 2019

Недавно я установил кластер InnoDB и пытался создать таблицу без первичного ключа или эквивалента для проверки концепции индекса кластера, где «InnoDB внутренне создает скрытый кластеризованный индекс с именем GEN_CLUST_INDEX в синтетическом столбце, содержащем значения идентификатора строки, если таблица имеетнет ПЕРВИЧНОГО КЛЮЧА или подходящего УНИКАЛЬНОГО индекса ".

Я создал таблицу, как показано ниже:

create table repl_test (Name varchar(10));

Проверено на наличие GEN_CLUST_INDEX:

select * from mysql.innodb_index_stats where database_name='test' and table_name = 'repl_test';

+---------------+------------+-----------------+---------------------+--------------+------------+-------------+-----------------------------------+
| database_name | table_name | index_name      | last_update         | stat_name    | stat_value | sample_size | stat_description                  |
+---------------+------------+-----------------+---------------------+--------------+------------+-------------+-----------------------------------+
| test      | repl_test  | GEN_CLUST_INDEX | 2019-02-22 06:29:26 | n_diff_pfx01 |          0 |           1 | DB_ROW_ID                         |
| test      | repl_test  | GEN_CLUST_INDEX | 2019-02-22 06:29:26 | n_leaf_pages |          1 |        NULL | Number of leaf pages in the index |
| test      | repl_test  | GEN_CLUST_INDEX | 2019-02-22 06:29:26 | size         |          1 |        NULL | Number of pages in the index      |
+---------------+------------+-----------------+---------------------+--------------+------------+-------------+-----------------------------------+
3 rows in set (0.00 sec)

Но, когда япопробуйте вставить строку, я получаю следующее сообщение об ошибке:

insert into repl_test values ('John');

ERROR 3098 (HY000): The table does not comply with the requirements by an external plugin.

2019-02-22T14:32:53.177700Z 594022 [ERROR] [MY-011542] [Repl] Plugin group_replication reported: 'Table repl_test does not have any PRIMARY KEY. This is not compatible with Group Replication.'

Ниже приведен мой файл конфигурации:

[client]
port            = 3306
socket          = /tmp/mysql.sock

[mysqld_safe]
socket          = /tmp/mysql.sock

[mysqld]

socket          = /tmp/mysql.sock
port            = 3306
basedir         = /mysql/product/8.0/TEST
datadir         = /mysql/data/TEST/innodb_data
log-error       = /mysql/admin/TEST/innodb_logs/mysql.log
log_bin         = /mysql/binlog/TEST/innodb_logs/mysql-bin
server-id=1
max_connections = 500
open_files_limit = 65535
expire_logs_days = 15

innodb_flush_log_at_trx_commit=1
sync_binlog=1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
binlog_checksum = NONE
enforce_gtid_consistency = ON
gtid_mode = ON
relay-log=<<hostname>>-relay-bin

Моя версия MySQL: mysql Ver 8.0.11 для linux-glibc2.12на x86_64 (MySQL Community Server - GPL)

1 Ответ

0 голосов
/ 07 марта 2019

Автогенерация ПК должна работать нормально для некластеризованных установок.Однако InnoDB Cluster (Групповая репликация) и Galera требуется пользователь PK (или UNIQUE, который может быть повышен).

Если хотите, подайте документацию ошибка с bugs.mysql.com жалуется, что это ограничение не ясно.Обязательно укажите страницу, которую нужно исправить.

...