SequoiaDB 巨杉数据库下载中心

Docker 镜像 / 虚拟机镜像

Docker VM 虚拟机使用,快速体验分布式数据库

SequoiaDB 巨杉数据库 Docker 镜像使用教程

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker 利用 LXC 来实现类似 VM 的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源。

SequoiaDB巨杉数据库为用户提供了 Docker 镜像,用户可以通过镜像快速部署集群进行开发和测试工作 。本文主要讲解如何在Windows、Linux和Mac系统上安装Docker应用并拉取 SequoiaDB 巨杉数据库的镜像进行安装部署,同时也展示了如何在部署后的环境中进行 MySQL 实例的CRUD操作。


1. 集群配置

用户可以在五个容器中部署一个多节点高可用 SequoiaDB 集群。

主机名 IP 分区组 部署软件
Coord 协调节点 172.17.0.2:11810 SYSCoord SequoiaDB 3.2.1
Catalog编目节点 172.17.0.2:11800 SYSCatalogGroup SequoiaDB 3.2.1
Data1数据节点1 172.17.0.3:11820 group1 SequoiaDB 3.2.1
Data2数据节点2 172.17.0.4:11820 group1 SequoiaDB 3.2.1
Data3数据节点3 172.17.0.5:11820 group1 SequoiaDB 3.2.1
Data1数据节点2 172.17.0.4:11830 group2 SequoiaDB 3.2.1
Data2数据节点3 172.17.0.5:11830 group2 SequoiaDB 3.2.1
Data3数据节点1 172.17.0.3:11830 group2 SequoiaDB 3.2.1
Data1数据节点3 172.17.0.5:11840 group3 SequoiaDB 3.2.1
Data2数据节点1 172.17.0.3:11840 group3 SequoiaDB 3.2.1
Data3数据节点2 172.17.0.4:11840 group3 SequoiaDB 3.2.1
MySQL实例 172.17.0.6:3306 - SequoiaSQL-MySQL 3.2.1

集群包含一个协调节点与编目节点,三个三副本数据节点,与一个 MySQL 实例节点。


2. Linux Docker 环境部署 SequoiaDB

1) 下载镜像,上传至镜像服务器

下载镜像


2) 解压 sequoiadb_docker_image.gz 包

tar -zxvf sequoiadb_docker_image.tar.gz

3) 恢复镜像 sequoiadb.tar

docker load -i sequoiadb.tar

4) 恢复镜像sequoiasql-mysql.tar

docker load -i sequoiasql-mysql.tar

5) 启动四个 SequoiaDB 容器

docker run -it -d --name coord_catalog sequoiadb/sequoiadb:latest
docker run -it -d --name sdb_data1 sequoiadb/sequoiadb:latest
docker run -it -d --name sdb_data2 sequoiadb/sequoiadb:latest
docker run -it -d --name sdb_data3 sequoiadb/sequoiadb:latest

6) 查看四个容器的容器 ID

docker ps -a | awk '{print $NF}'

7) 查看四个容器的容器对应的 IP 地址

docker inspect coord_catalog | grep IPAddress |awk 'NR==2 {print $0}'
docker inspect sdb_data1 | grep IPAddress |awk 'NR==2 {print $0}'
docker inspect sdb_data2 | grep IPAddress |awk 'NR==2 {print $0}'
docker inspect sdb_data3 | grep IPAddress |awk 'NR==2 {print $0}'

8) 部署 SequoiaDB 集群

根据集群规划以及各个容器的 IP 地址,在对应参数填入各自的地址与端口号(建议存储空间在30G以上)。

docker exec coord_catalog "/init.sh" \
--coord='172.17.0.2:11810' \
--catalog='172.17.0.2:11800' \
--data='group1=172.17.0.3:11820,172.17.0.4:11820,172.17.0.5:11820;group2=172.17.0.4:11830,172.17.0.5:11830,172.17.0.3:11830;group3=172.17.0.5:11840,172.17.0.3:11840,172.17.0.4:11840'

9) 启动一个 MySQL 实例容器,并查看启动容器的 ID

docker run -it -d -p 3306:3306 --name mysql sequoiadb/sequoiasql-mysql:latest

10) 查看容器 IP 地址

docker inspect mysql | grep IPAddress | awk 'NR==2 {print $0}'

11) 将 MySQL 实例注册入协调节点

docker exec mysql "/init.sh" --port=3306 --coord='172.17.0.2:11810'

12) 进入到 MySQL 的容器中

docker exec -it mysql /bin/bash

13) 查看 MySQL 实例状态

/opt/sequoiasql/mysql/bin/sdb_sql_ctl status

14) 进入到coord_catalog容器中,查看SequoiaDB 巨杉数据库存储引擎节点列(sdbadmin用户密码:sdbadmin)

docker ps -a | awk '{print &NF}'
docker exec -it coord_catalog /bin/bash
su - sdbadmin
sdblist -t all -l
exit


3. Windows docker环境部署 SequoiaDB

参考Linux docker环境部署


4. Mac docker环境部署 SequoiaDB

参考Linux docker环境部署  


5.数据库对接开发

1) 进入 MySQL 容器中

docker exec -it mysql /bin/bash

2) 启动 MySQL(如未启动)

/opt/sequoiasql/mysql/bin/sdb_sql_ctl start MySQLInstance

3) 登录到 MySQL Shell

/opt/sequoiasql/mysql/bin/mysql -h 127.0.0.1 -P 3306 -u root

4) 创建新数据库 company,并切换到 company

CREATE DATABASE company;
USE company;

5) 在 company 数据库中创建数据表 employee

CREATE TABLE employee 
(
empno INT AUTO_INCREMENT PRIMARY KEY,
ename VARCHAR(128),
age INT
);

6) 在表 employee 中插入数据

INSERT INTO employee (ename, age) VALUES ("Jacky", 36);
INSERT INTO employee (ename, age) VALUES ("Alice", 18);

 7) 查询 employee 表中的数据

SELECT * FROM employee;

8) 退出 MySQL 容器

9) 进入 coord_catalog 容器中,并进入 SequoiaDB Shell 交互式界面,使用 JavaScript 连接协调节点,并获取数据库连接。

docker exec -it coord_catalog /bin/bash
su sdbadmin
sdb
var db = new Sdb("localhost", 11810);

10) 使用 insert() 向 SequoiaDB 巨杉数据库集合中写入记录;

db.company.employee.insert( { ename: "Abe", age: 20 } );

11) 使用 find() 方法从集合中查询数据记录;

db.company.employee.find( { ename: "Abe" } );

12) 使用 update() 方法将集合中的记录进行修改;

db.company.employee.update( { $set: { ename: "Ben" } }, { ename: "Abe" } );

13) 使用 find() 方法从集合中查询数据记录,看是否修改;

db.company.employee.find( { ename: "Ben" } );

14) 使用 remove() 方法从集合中删除数据;

db.company.employee.remove( { ename: "Ben" } );

15) 使用 find() 方法从集合中查询数据记录,看是否删除;

db.company.employee.find( { ename: "Ben" } );


6. 总结

使用 SequoiaDB 巨杉数据库提供基于 Docker 的镜像用户可以快速创建一个数据库集群,快速上手巨杉数据库的操作。