SequoiaDB 巨杉数据库下载中心
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 的镜像用户可以快速创建一个数据库集群,快速上手巨杉数据库的操作。