1 个赞
LS_ID为1的日志流为广播日志,其他日志流为业务日志流
4 个赞
我看cdb_ob_ls_locations表中字段信息几乎都一样?还有哪些表可以区分出你说的广播和业务日志流?
Mark,问题比较有意思,之前没关注过,一起研究下,顺便看下有没有结论
1 个赞
观测了下,LS_ID=1的不是广播日志流,应该是自带的系统库的日志流,每个租户都自带oceanbase、mysql等系统库
obclient [oceanbase]> select TENANT_ID,DATABASE_NAME,LS_ID,count(*) from oceanbase.CDB_OB_TABLE_LOCATIONS where LS_ID=1 and TENANT_ID>1000 group by TENANT_ID,DATABASE_NAME,LS_ID;
+-----------+---------------+-------+----------+
| TENANT_ID | DATABASE_NAME | LS_ID | count(*) |
+-----------+---------------+-------+----------+
| 1005 | oceanbase | 1 | 1648 |
| 1006 | oceanbase | 1 | 1182 |
| 1007 | oceanbase | 1 | 2472 |
| 1008 | oceanbase | 1 | 1749 |
| 1005 | mysql | 1 | 8 |
| 1006 | mysql | 1 | 8 |
| 1007 | mysql | 1 | 12 |
+-----------+---------------+-------+----------+
7 rows in set (0.125 sec)
1 个赞
感觉不好理解,为何一台服务器有两个日志流? 哪种情况会出现3个甚至更多日志流?
只考虑Leader日志流的话,我理解有这些情况,假设是2-2-2架构的集群,PRIMARY_ZONE是RANDOM模式
- LS_ID=1的日志流是系统元数据的日志流,必须有的
- 只要这个节点包含Leader副本,就会有日志流LEADER,2-2-2的架构是6台服务器,就会有6个日志流,分别从LS_ID 1001-1006。
- 用到复制表的情况下,会额外生成一个广播复制流
所以我理解的日志流的数量计算公式是:LS_ID=1日志流 + PRIMARY_ZONE * UNIT_NUM + 广播复制流
- 假设是2-2-2架构的集群,PRIMARY_ZONE是RANDOM模式
- 1(LS_ID=1) + 3(zone)*2(unit_num) + 1(广播流) = 8
- 假设是2-2-2架构的集群,PRIMARY_ZONE是zone1模式
- 1 + 1*2 + 1 = 4
- 假设是2-2-2架构的集群,PRIMARY_ZONE是zone1,zone2模式
- 1 + 2*2 + 1 = 6
- 假设是1-1-1架构的集群,PRIMARY_ZONE是RANDOM模式
- 1 + 3*1 + 1 = 5
- 假设是1-1-1架构的集群,PRIMARY_ZONE是zone1
- 1 + 1*1 + 1 = 3
- 假设是1-1-1架构的集群,PRIMARY_ZONE是zone1,zone2
- 1 + 2*1 + 1 = 4
1 个赞
日志流是按租户来算的,对吧?应该不是按数据库来算的,假设2-2-2的集群架构,如果有两个业务租户,是不是日志流的个数会发生变化?
是的。4.x是按租户算的
1 个赞
