文档中心

容器模式部署

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

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

集群配置

用户可以在五个容器中部署一个多节点高可用 SequoiaDB 集群。集群包含一个协调节点与编目节点,三个三副本数据节点,与一个 MySQL 实例节点。

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

Linux Docker 环境部署 SequoiaDB

1.下载镜像并上传至服务器

wget http://cdn.sequoiadb.com/images/tools/sequoiadb_docker_image.tar.gz

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 存储引擎节点列

  • 查看 sequoiadb 容器名称

    docker ps -a | awk '{print $NF}'
  • 进入 coord_catalog 容器查看编目节点和协调节点

    docker exec -it coord_catalog /bin/bash
  • 切换 sdbamdin 用户(sdbadmin用户密码:sdbadmin)

    su – sdbadmin
  • 查看编目节点和协调节点列表

    sdblist –t all –l
  • 退出容器

    exit

数据库对接开发

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 容器

quit

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" } );

总结

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

回到顶部