MariaDB 10.3.10 Galera Cluster 未同步 InnoDB 表定义

MariaDB 10.3.10 Galera Cluster 未同步 InnoDB 表定义

我有一个 3 节点多主 MariaDB Galera 集群,它没有同步对 InnoDB 表定义的修改。

服务器版本:10.3.10-MariaDB MariaDB 服务器

wsrep_provider_version:25.3.24(r3825)

表是mysql.innodb_table_stats,不同之处在于字段的数据类型/长度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 操作。我尝试在某些 innodb 测试表上执行其他 DDL 操作,效果很好。

+--------------------------+--------------------------------------+
| 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 |

答案1

  • MyISAM 表不被 Galera 复制。
  • 一些系统表(数据库中的大多数表mysql)是 MyISAM。
  • 升级的时候,mysql_upgrade必须运行。
  • mysql_upgrade经常对系统表进行更改。

因此,除非升级说明以某种方式为您完成任务,否则您必须mysql_upgrade在每个节点上运行。

相关内容