epean
#1
【 使用环境 】生产环境
【 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’
;
查看表结构显示。
查看副本节点结果如下图所示
当前集群还有另外一个租户,建表后显示的ddl是正常的
但是副本节点显示的主副本位置也只有1个
···2个租户的配置都是一样的
1 个赞
辞霜
#3
官网给出的是当用户创建一个复制表后,所在租户的所有 OBServer 节点内都会创建一个复制表的副本,这些副本中有一个副本会被选为 Leader,接受写请求,其余的副本只能接受读请求。
你所说的所有节点都是leader副本这个需要再确认一下
1 个赞
epean
#4
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 个赞
辞霜
#5
4.x只有一个leader副本,从没有支持过所有副本都是leader副本,麻烦您那边再确认一下,或者能复现出来么
1 个赞
epean
#6
现在不能复现了。
现在有另外一个问题:
查看表结构时,未展示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 个赞
皇甫侯
#8
你应该是看错了,以前的版本就算是复制表也只有一个leader,其他节点上也都是follower
而且这个图里面已经生效了,duplicate_scope=‘cluster’
1 个赞
epean
#9
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’
;
都不显示了。这是做了什么操作会导致这样吗