Mariadb

MariaDB 10.3.10 Galera Cluster 不同步 InnoDB 表定義

  • March 6, 2019

我有一個 3 節點多主 MariaDB Galera 集群,它沒有同步對 InnoDB 表定義的修改。

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

wsrep_provider_version:25.3.24(r3825)

該表是mysql.innodb_table_stats,不同的是欄位的數據類型/長度table_name

使用mysql_upgrade實用程序在 galera -01成員中執行的 DDL 操作:

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

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

galera-02galera-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 |
  • Galera 不會複製 MyISAM 表。
  • 一些系統表,(數據庫中的大部分錶mysql)是 MyISAM。
  • 升級時,mysql_upgrade必須執行。
  • mysql_upgrade經常更改系統表。

因此,除非升級說明以某種方式為您完成任務,否則您必須mysql_upgrade在每個節點上執行。

引用自:https://serverfault.com/questions/956694