今天带大家简单了解一下在巨杉数据库的MySQL实例中,一条数据是如何存储到sdb引擎中的。
【环境预置】
现有一套三副本的巨杉分布式数据库集群,三个数据组。
在集群中,新建一个集合空间和集合,指定集合分区为hash分区,指定分区键为id属性。
在巨杉数据库MySQL实例中已经创建了相应的数据库和表。
【用户操作】
用户连接MySQL客户端或Navicat管理工具,在MySQL中向目标集合中插入一条数据。
insert into db.table values(··,··,··);
插入成功后,在MySQL shell或Navicat中查看该数据是否已经插入。
最后,用户进入sdb shell连接sdb,在集合中查询数据,确认该条数据已经成功插入sdb。
【插入过程】
我们都知道,MySQL实例通过协调节点连接sdb。在MySQL实例的配置文件,auto.cnf中包含
sequoiadb_conn_addr,sequoiadb_user,sequoiadb_password三个参数,这三个参数就是用来配置sdb的连接信息。
数据从MySQL到最终落到sdb中,大概分为以下三步:
1. 在MySQL层,会对insert语句进行解析,生成执行计划,将执行计划下发至协调节点。
2. 协调节点中,会将分区键(id属性)映射为一个hash值,随后查看编目节点的集合信息,确认这个hash值在哪个数据组当中。将这条数据发往该数据组的主节点,进行数据写入。
3. 我们都知道,在巨杉数据库中,主从同步是通过事务日志(同步日志)实现的。备节点会定时的从主节点读取事务日志(同步日志),当这条数据在主节点中写入成功后,备节点读取事务日志(同步日志)时,就会发现有新数据插入,这时备节点就会从主节点中将该条数据同步到自己的存储中。(当然,数据同步不仅仅会在主从节点之间发生,只要一个备节点的数据是最新的,其他备节点也可以从该备节点中进行数据同步)
想要了解更多关于巨杉数据库中数据同步的原理吗,快来加入我们巨杉社区吧,在这里你可以:分享你最新的研究成果,请教你技术上不懂的问题,参加有趣的社区活动,还可以在线体验巨杉数据库呦!
今日文章推荐:巨杉 Tech | SequoiaDB SQL实例高可用负载均衡实践