-
文档
-
关于 SequoiaDB
安装
系统要求
安装部署
基本操作
数据模型
SQL引擎
PostgreSQL实例组件
MySQL实例组件
FileSystem引擎
S3引擎
系统架构
编目节点
分区组
数据库管理
特殊配置项修改
数据库工具
集群启停
集群扩容
备份恢复
日志归档重放
监控
快照
列表
安全
查询访问计划
基于代价的访问计划评估
查看访问计划
统计信息
连接器
驱动
C驱动
C++驱动
CSharp驱动
Java开发驱动
PHP驱动
Python驱动
REST接口
参考手册
SequoiaDB Shell方法
概述
Global
Sdb
SdbCS
SdbCollection
SdbCursor
SdbQuery
SdbReplicaGroup
SdbNode
SdbDomain
Oma
File
FileContent
Cmd
Remote
Hash
IniFile
Sdbtool
Ssh
System
辅助类型对象
特殊类型对象
操作符
匹配符
选择符
函数操作
更新符
聚集符
SQL语法
语句
子句
函数
监控视图
故障排除
常见错误
SAC 管控中心
安装与登录
部署
主机操作
存储集群操作
MySQL 实例操作
PostgreSQL 实例操作
监控
配置
SequoiaDB 数据操作
集合空间
集合
索引
记录
PostgreSQL 实例数据操作
MySQL 实例数据操作
Web服务
数据复制
概念
数据复制为分区组中节点之间的相互同步的机制。
在数据节点和编目节点中,任何数据增删改操作均会写入日志。SequoiaDB 会首先将日志写入日志缓冲区,然后将其异步写入本地磁盘。
每个数据复制会在两个节点间进行:
源节点: 为包含新数据的节点。主节点并不一定永远是复制的源节点。
目标节点: 为请求进行数据复制的节点。
复制过程中,目标节点选择一个与其最接近的节点,然后向其发送一个复制请求。源节点接到复制请求后,会将目标节点请求的同步点之后的日志记录打包并发送给目标节点,目标节点接收到数据包后会重新处理日志中的所有操作。
节点之间的复制有两个状态:
对等状态(PEER): 当目标节点请求的日志依然存在于源节点的日志缓冲区中,两节点之间为对等状态
远程追赶状态(RemoteCatchup): 当目标节点请求的日志不存在于源节点的日志缓冲区中,但依然存在于源节点的日志文件中,两节点之间为远程追赶状态
如果目标节点请求的日志已经不再存在于源节点的日志文件中,目标节点则进入全量同步状态。
当两节点处于对等状态时,同步请求在源节点可以直接从内存中获取数据,因此目标节点选择复制源节点时,总会尝试选择距离自己当前日志点最近的数据节点,使其所包含的日志尽量坐落在内存中。
全量同步
概念
在分区组内,当一个新的节点加入分区组,或者故障节点重新加入分区组,需要进行数据全量同步,以保障新的节点与现有节点之间数据的一致性。
在进行数据全量同步时有两个节点参与:
源节点: 为包含有效数据的节点。主节点并不一定永远是同步的源节点。任何与主节点处于同步状态的从节点均可作为源节点进行数据同步。(目前只能主节点作为同步源节点)
目标节点: 为新加入组,或重新入组的故障节点。同步时该节点下原有的数据会被废弃。
全量同步发生时,目标节点会定期向源节点请求数据。源节点将数据打包后作为大数据块发送给目标节点。当目标节点重做该数据块内所有数据后,向源节点请求新的数据块。
为保障源节点在同步时可进行写操作,所有已经被发送给目标节点的数据页如果被更改,其更新会被同步到目标节点,以保障全量同步过程中更新的数据不会损失。
Note:
更多同步日志的内容请参考 同步日志