Назад | Перейти на главную страницу

MariaDB 10.3.10 Galera Cluster не синхронизирует определение таблицы InnoDB

У меня есть трехузловой мультимастер MariaDB Galera Cluster, который не синхронизирует изменение определения таблицы InnoDB.

Версия сервера: 10.3.10-MariaDB Сервер MariaDB

wsrep_provider_version: 25.3.24 (r3825)

Таблица mysql.innodb_table_stats а разница - это data_type / длина поля table_name.

Операция DDL выполняется в Галера-01 член, использующий mysql_upgrade утилита:

ALTER TABLE innodb_index_stats MODIFY `table_name` varchar(199) COLLATE utf8_bin NOT NULL;

Определение таблицы в Галера-01 член:

CREATE TABLE `innodb_table_stats` (
  `database_name` varchar(64) COLLATE utf8_bin NOT NULL,
  `table_name` varchar(199) COLLATE utf8_bin NOT NULL,
  `last_update` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `n_rows` bigint(20) unsigned NOT NULL,
  `clustered_index_size` bigint(20) unsigned NOT NULL,
  `sum_of_other_index_sizes` bigint(20) unsigned NOT NULL,
  PRIMARY KEY (`database_name`,`table_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0

Определение таблицы в Галера-02 и Галера-03 участники:

CREATE TABLE `innodb_table_stats` (
  `database_name` varchar(64) COLLATE utf8_bin NOT NULL,
  `table_name` varchar(64) COLLATE utf8_bin NOT NULL,
  `last_update` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `n_rows` bigint(20) unsigned NOT NULL,
  `clustered_index_size` bigint(20) unsigned NOT NULL,
  `sum_of_other_index_sizes` bigint(20) unsigned NOT NULL,
  PRIMARY KEY (`database_name`,`table_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0

Кажется, что кластер в хорошей форме, я не могу понять, почему он не синхронизирует эту конкретную операцию DDL. Я пробовал с другими операциями DDL на некоторой тестовой таблице innodb, и это работает как шарм.

+--------------------------+--------------------------------------+
| Variable_name            | Value                                |
+--------------------------+--------------------------------------+
| wsrep_cluster_state_uuid | 213a9d66-d207-11e8-b7bb-733e94f6ddc5 |
| wsrep_cluster_conf_id | 294   |
| wsrep_cluster_size | 3     |
| wsrep_cluster_status | Primary |
| wsrep_ready   | ON    |
| wsrep_connected | ON    |
| wsrep_local_state_comment | Synced |
| wsrep_local_recv_queue_avg | 0.038462 |
| wsrep_flow_control_paused | 0.000000 |
| wsrep_cert_deps_distance | 18.686275 |
| wsrep_local_send_queue_avg | 0.200000 |
  • Таблицы MyISAM не реплицируются Galera.
  • Некоторые системные таблицы (большинство таблиц в mysql база данных) являются MyISAM.
  • При обновлении mysql_upgrade должен быть запущен.
  • mysql_upgrade часто вносит изменения в системные таблицы.

Итак, если инструкции по обновлению каким-либо образом не решают задачу за вас, вы должны запустить mysql_upgrade на каждом узле.