2-容灾测试
容灾高可用测试
核心就是:多节点集群,单表多副本,宕某一个节点,副本还在,该表就可以正常运转。
StarRocks是支持分布式表,并且可以有副本冗余,一般在建表时指定副本数,不指定按照默认的副本数为3。
官网副本修改的操作
- 修改表的默认副本数量, 新建分区副本数量默认使用此值
ALTER TABLE example_db.my_table SET ("default.replication_num" = "2");
- 修改单分区表的实际副本数量(只限单分区表)
ALTER TABLE example_db.my_table SET ("replication_num" = "3");
性能测试已经导入6张表,并且都是单分区,单副本表。
手动停止BE模拟存储节点失效
SSB工具中dates建表语句
CREATE TABLE IF NOT EXISTS `dates` (
`d_datekey` int(11) NOT NULL COMMENT "",
`d_date` varchar(20) NOT NULL COMMENT "",
`d_dayofweek` varchar(10) NOT NULL COMMENT "",
`d_month` varchar(11) NOT NULL COMMENT "",
`d_year` int(11) NOT NULL COMMENT "",
`d_yearmonthnum` int(11) NOT NULL COMMENT "",
`d_yearmonth` varchar(9) NOT NULL COMMENT "",
`d_daynuminweek` int(11) NOT NULL COMMENT "",
`d_daynuminmonth` int(11) NOT NULL COMMENT "",
`d_daynuminyear` int(11) NOT NULL COMMENT "",
`d_monthnuminyear` int(11) NOT NULL COMMENT "",
`d_weeknuminyear` int(11) NOT NULL COMMENT "",
`d_sellingseason` varchar(14) NOT NULL COMMENT "",
`d_lastdayinweekfl` int(11) NOT NULL COMMENT "",
`d_lastdayinmonthfl` int(11) NOT NULL COMMENT "",
`d_holidayfl` int(11) NOT NULL COMMENT "",
`d_weekdayfl` int(11) NOT NULL COMMENT ""
) ENGINE=OLAP
DUPLICATE KEY(`d_datekey`)
COMMENT "OLAP"
DISTRIBUTED BY HASH(`d_datekey`) BUCKETS 1
PROPERTIES (
"replication_num" = "1",
"in_memory" = "false",
"colocate_with" = "groupa3",
"storage_format" = "DEFAULT"
);
1. 先查看表信息
mysql> show data from dates;
+-----------+-----------+-----------+--------------+----------+
| TableName | IndexName | Size | ReplicaCount | RowCount |
+-----------+-----------+-----------+--------------+----------+
| dates | dates | 33.409 KB | 1 | 2556 |
| | Total | 33.409 KB | 1 | |
+-----------+-----------+-----------+--------------+----------+
2. 将单副本表副本数修改成2
ALTER TABLE ssb.dates SET ("replication_num" = "2");
报错:ERROR 1064 (HY000): table dates is colocate table, cannot change replicationNum
建表的时候是指定了colocate_with
,该表为colocate表,在性能测试中,其实是不生效,更多colocate相关知识
解决办法:
- 查看group信息:
SHOW PROC '/colocation_group' ;
- 将该表的group删除:
ALTER TABLE ssb.dates SET ("colocate_with" = "");
,group是database级别的,group3只有这张表在使用,所以对dates表的group删除就会,该group会不存在 - 然后再次执行副本修改:
ALTER TABLE ssb.dates SET ("replication_num" = "2");
- 集群自动给其他BE同步副本,并且副本数已经变成了2
3. 找到该表副本所在的BE,停掉对应节点并查询
- 通过管理界面,找到对应BE节点
- 停掉cdh-node6中的BE:
/opt/StarRocks-2.0.0-GA/be/bin/stop_be.sh
- 执行查询语句
- 再停另外一个副本所在节点cdh-node7,此时可以看到已经都停止了
- 发现dates数据还能查到,FE会自动发现该表副本所在节点宕机之后,会自动把副本转移
- 重新启动数据所在的BE:
/opt/StarRocks-2.0.0-GA/be/bin/start_be.sh --daemon
结论
- 经测试发现,只要副本数据所在的节点没有down,就依然可以提供查询服务
- 查询其他单副本的表,因为有部分数据所在的节点down了,所以会出现
there is no scanNode Backend
报错 - 副本会在节点故障自动转移,支持HA