集群扩展

概念
集群的扩展,伴随着新分区组的加入。比如原来有3台机器,里面有group1,group2作为分区组,而且这两个分区组都存满文件了;现在新增三台机器,新增group3,group4分区组;如果想要把存满的文件切分到新增的机器中,其实就是将group1,group2的文件切分到group3,group4中。

  1. 新增3台机器,创建新的分区组,此处模拟新建了group3, group4
  2. 因为原来的group1, group2在数据域domain1中,所以先把group3,group4划分到domain1中。
    var domain = db.getDomain('domain')
    domain.alter(Groups['group1','group2','group3','group4'])
  3. 开始数据切分。原来group1的分区为0~2048,group2的分区为2048~4096。现在各个group的切分情况如下:
    group1:[0, 1024)
    group3:[1024, 2048)
    group2:[2048, 3072)
    group4:[3072, 4096)
    db.foo.bar.splitAsync( "group1", "group3", { Partition: 1024 }, { Partition: 2048 } )
    db.foo.bar.splitAsync( "group2", "group4", { Partition: 3072 }, { Partition: 4096 } )

splitAsync()其实与split()方法其实原理一样,只是前者是用来处理数据量大的切分情况,是异步提交的。

另一个应用场景:主子表
SequoiaDB的集群扩展、删除数据分区组

数据分区组的删除

1.首先,要保证数据不丢失,再去删除一个分区组;这里用删除group3,group4来演示。
db.foo.bar.split("group3","group1", { Partition: 1024 }, { Partition: 2048 } )把group3中1024到2048的数据(即全部数据)划分到group1中
db.foo.bar.split("group3","group1", { Partition: 3072}, { Partition: 4096} )把group4中3072到4096的数据(即全部数据)划分到group2中
2. 删除数据组
db.removeRG("group3")
db.removeRG("group3")
3. 查看domain信息,可以看见已经成功删除
db.listDomains()

相关文章:

  • 2022-12-23
  • 2021-07-01
  • 2021-12-01
  • 2022-12-23
  • 2022-03-03
  • 2021-05-29
  • 2021-11-30
  • 2022-12-23
猜你喜欢
  • 2021-11-22
  • 2021-11-04
  • 2022-03-13
  • 2021-09-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-10
相关资源
相似解决方案