本文来自社区用户投的稿,感谢这位小伙伴的技术分享
巨杉数据库架构简介
巨杉数据库作为分布式数据库是计算和存储分离架构,由数据库实例层和存储引擎层组成的。存储引擎层负责数据库核心功能比如数据读写存储以及分布式事务管理。数据库实例层也就是这里的的SQL层负责把应用SQL请求处理后发存储引擎层处理,并且把存储引擎层响应结果反馈给应用层。支持结构化实例比如MySQL实例/PG实例/火花实例,也支持非结构化实例比如Json实例/S3对象存储实例/PosixFs实例等等。这种架构支持的实例类型比较多,方便从传统数据库无缝迁移到巨杉数据库,减小了开发学习成本,之前也跟数据库圈同行交流,他们对架构也是十分认可。
这里的数据分片是通过分布式哈希算法DHT机制实现,DHT是分发哈希表缩写。当写入数据时,首先通过MySQL实例把记录下发到协调节点,协调节点会通过分布式哈希算法根据每条记录的分区键进行散列,散列完之后协调节点根据分区键判断到底发送到哪一个分区,所以每个分区之间的数据是完全隔离互相独立的。采用这种方法,我们就可以把一个很大的表拆散到下面不同的子分区里面小表,实现数据拆分。
, mysqldump和mydumper/myloader中
导入导出工具实战
SequoiaDB实现了对MySQL的完整兼容,那么有的用户会问了:
"既然是完整兼容,MySQL相关的工具是否能使用?”
"数据从MySQL迁移到SequoiaDB如何操作?”
下面我们就介绍SequoiaDB如何使用,mysqldump和mydumper/myloader中进行数据的导入导出。
-
<李>,mysqldump李>
1)通过存储过程制造测试数据
<代码> # mysql - h 127.0.0.1 3306 - u root - p mysql>创建数据库的新闻; mysql>利用新闻; mysql>创建表user_info (int id (11), unickname varchar (100)); 分隔符//创建过程“新闻”,“user_info_PROC”() 开始 声明iloop smallint默认0; 声明iNum mediumint默认0; 声明uid int默认0; 声明unickname varchar(100)默认的“测试”; 而iNum & lt;=10 开始事务; 而iloop<=10 设置uid=uid + 1; 设置unickname=CONCAT(“测试”,uid); 插入“新闻”,“user_info”(id、unickname) 值(uid, unickname); 设置iloop=iloop + 1; 结束时; 设置iloop=0; 设置iNum=iNum + 1; 提交; 结束时;//结束 分隔符; 调用news.user_info_PROC(); 代码>
2)查看制造测试数据状况
<代码> mysql>使用新闻; 数据库修改 mysql>显示表; + - - - - - - - - - - - - - - - - - + | Tables_in_news | + - - - - - - - - - - - - - - - - - + | user_info | + - - - - - - - - - - - - - - - - - + 1行集(0.00秒) mysql>从user_info select count (*); +----------+ | | count (*) +----------+ | 121 | +----------+ 1行集(0.01秒)代码>
3)执行下面,mysqldump备份指令
<代码> #/opt/sequoiasql/mysql/bin/, mysqldump - h 127.0.0.1 - p 3306 - u 根- b新闻比;news.sql 代码>
查看到对应的文件为news.sql
然后登陆到数据库删除原来的数据库数据
<代码> mysql>减少数据库消息; 查询好了,1行影响(0.10秒) mysql>显示数据库; +--------------------+ |数据库 | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4行集(0.00秒)巨杉学习笔记| SequoiaDB MySQL导入导出工具