容器模式部署
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 的镜像用户可以快速创建一个数据库集群,快速上手巨杉数据库的操作。