Liquibase MGR
问题描述#
Keycloak 对接的是一个 MGR(mysql group replication)的集群,安装时出错,数据初始化失败。
查看 keycloak 启动日志,错误信息大致如下。
查看 MySQL 日志,看到如下错误。
问题原因#
根据 MySQL 日志,很明确了是因为 DATABASECHANGELOG 没有主键。MySQL group replication 要求表必须有主键或者非 Null 的唯一索引。
keycloak 使用 Liquibase 初始化数据。Liquibase 自动创建的 DATABASECHANGELOG 表没有主键,主要是为了避免特定数据库 key 的长度限制。查看 Liquibase 官方说明,“id”, “author”, “filename”可以作为唯一索引。
解决方案#
解决办法也很简单,在 keycloak 启动之前,提前创建好 DATABASECHANGELOG 表并增加主键(或唯一性索引)。