巨杉学习笔记| SequoiaDB MySQL导入导出工具

  

本文来自社区用户投的稿,感谢这位小伙伴的技术分享

  

巨杉数据库架构简介

  

巨杉数据库作为分布式数据库是计算和存储分离架构,由数据库实例层和存储引擎层组成的。存储引擎层负责数据库核心功能比如数据读写存储以及分布式事务管理。数据库实例层也就是这里的的SQL层负责把应用SQL请求处理后发存储引擎层处理,并且把存储引擎层响应结果反馈给应用层。支持结构化实例比如MySQL实例/PG实例/火花实例,也支持非结构化实例比如Json实例/S3对象存储实例/PosixFs实例等等。这种架构支持的实例类型比较多,方便从传统数据库无缝迁移到巨杉数据库,减小了开发学习成本,之前也跟数据库圈同行交流,他们对架构也是十分认可。

  

巨杉学习笔记| SequoiaDB MySQL导入导出工具“> <br/>这里的SQL层采用的是MySQL实例,存储引擎层是有三个数据节点和协调节点编目节点组成。其中数据节点就是用来存储数据的,协调节点不存储数据,是用来把MySQL的请求进行路由分发到数据库节点。编目节点用来存储集群的系统信息比如用户信息/分区信息等等。这里用一个容器来模拟一个物理机或云虚拟机,这里设置的是MySQL实例在一个容器里,编目和节点和协调节点放在了一个容器,三个数据节点分别放在一个容器,三个数据节点构成了三个数据组,每个数据组三个副了对本web这类应用的海量数据是通过分片切分的方式分散给不同的数据节点,像这里的数据ABC通过分片打散到三台机器。</p>
  <p> <img src=

  

这里的数据分片是通过分布式哈希算法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导入导出工具