复制表无法生效

【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】4.2.2
【问题描述】
原prod_s_info表为复制表。所有节点都是leader副本。未做任何变更操作。
而且4.2.3版本才运行修改表的duplicate_scope属性。4.2.2只有建表时就指定duplicate_scope才生效。

现在建新表指定duplicate_scope=cluster也不生效了。
例如执行如下建表语句:
CREATE TABLE test_cluster (
id int(11) NOT NULL AUTO_INCREMENT,
status tinyint(1) NOT NULL DEFAULT ‘0’,
PRIMARY KEY (id)
) AUTO_INCREMENT = 1073525 DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC
duplicate_scope=‘cluster’
;
查看表结构显示。
image

查看副本节点结果如下图所示

当前集群还有另外一个租户,建表后显示的ddl是正常的
但是副本节点显示的主副本位置也只有1个

···2个租户的配置都是一样的

1 个赞

官网给出的是当用户创建一个复制表后,所在租户的所有 OBServer 节点内都会创建一个复制表的副本,这些副本中有一个副本会被选为 Leader,接受写请求,其余的副本只能接受读请求。
你所说的所有节点都是leader副本这个需要再确认一下

1 个赞

1个月前创建的复制表。当时显示所有节点全是leader节点。
现在不光查看表结构时,未展示DUPLICATE_SCOPE属性。而且其他ob特有属性都不展示了,比如
ROW_FORMAT = DYNAMIC COMPRESSION = ‘zstd_1.3.8’ REPLICA_NUM = 3 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0

比如执行如下sql:

CREATE TABLE test_cluster22 (
id int(11) NOT NULL AUTO_INCREMENT,
status tinyint(1) NOT NULL DEFAULT ‘0’,
PRIMARY KEY (id)
) AUTO_INCREMENT = 1708961 AUTO_INCREMENT_MODE = ‘ORDER’ DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = ‘zstd_1.3.8’ REPLICA_NUM = 3 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 COMMENT = ‘222test’
DUPLICATE_SCOPE = ‘cluster’
;

1 个赞

4.x只有一个leader副本,从没有支持过所有副本都是leader副本,麻烦您那边再确认一下,或者能复现出来么

1 个赞

现在不能复现了。
现在有另外一个问题:
查看表结构时,未展示DUPLICATE_SCOPE属性。而且其他ob特有属性都不展示了,比如
ROW_FORMAT = DYNAMIC COMPRESSION = ‘zstd_1.3.8’ REPLICA_NUM = 3 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0。

同一个集群其他租户是正常显示的

1 个赞

使用show create table查一下看看

1 个赞

你应该是看错了,以前的版本就算是复制表也只有一个leader,其他节点上也都是follower
而且这个图里面已经生效了,duplicate_scope=‘cluster’

1 个赞

ok。这个问题先确认了。
还有个问题就是,show create table 显示的复制表的建表语句,和mysql一样了。
诸如以下参数:
ROW_FORMAT = DYNAMIC COMPRESSION = ‘zstd_1.3.8’ REPLICA_NUM = 3 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 DUPLICATE_SCOPE = ‘cluster’

都不显示了。这是做了什么操作会导致这样吗