SequoiaDB 简介
快速入门
安装部署
数据库实例
分布式引擎
SAC 管控中心
参考手册
常见问题及解答(FAQ)
版本信息
SequoiaDB 巨杉数据库支持容器模式部署。目前,推荐使用 Docker 容器。
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 |
下载镜像并上传至服务器
wget http://cdn.sequoiadb.com/images/tools/sequoiadb_docker_image.tar.gz
解压 sequoiadb_docker_image.gz
包
tar -zxvf sequoiadb_docker_image.tar.gz
恢复镜像 sequoiadb.tar
docker load -i sequoiadb.tar
恢复镜像 sequoiasql-mysql.tar
docker load -i sequoiasql-mysql.tar
启动四个 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
查看四个容器的容器 ID
docker ps -a | awk '{print $NF}'
查看四个容器对应的 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}'
部署 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'
启动一个 MySQL 实例容器,并查看启动容器的 ID
docker run -it -d -p 3306:3306 --name mysql sequoiadb/sequoiasql-mysql:latest
查看容器 IP 地址
docker inspect mysql | grep IPAddress | awk 'NR==2 {print $0}'
将 MySQL 实例注册入协调节点
docker exec mysql "/init.sh" --port=3306 --coord='172.17.0.2:11810'
进入 mysql 容器
docker exec -it mysql /bin/bash
查看 mysql 实例状态
/opt/sequoiasql/mysql/bin/sdb_mysql_ctl status
进入 coord_catalog 容器,查看 SequoiaDB 存储引擎节点列
查看 sequoiadb 容器名称
docker ps -a | awk '{print $NF}'
进入 coord_catalog 容器查看编目节点和协调节点
docker exec -it coord_catalog /bin/bash
切换 sdbamdin 用户(sdbadmin 用户密码为 Admin@1024)
su - sdbadmin
查看编目节点和协调节点列表
sdblist –t all –l
退出容器
exit
MySQL Shell
进入 mysql 容器中
docker exec -it mysql /bin/bash
启动 mysql(如未启动)
/opt/sequoiasql/mysql/bin/sdb_mysql_ctl start MySQLInstance
登录到 MySQL Shell
/opt/sequoiasql/mysql/bin/mysql -h 127.0.0.1 -P 3306 -u root
创建新数据库 company,并切换到 company
CREATE DATABASE company; USE company;
在 company 数据库中创建数据表 employee
CREATE TABLE employee ( empno INT AUTO_INCREMENT PRIMARY KEY, ename VARCHAR(128), age INT );
在表 employee 中插入如下数据:
INSERT INTO employee (ename, age) VALUES ("Jacky", 36); INSERT INTO employee (ename, age) VALUES ("Alice", 18);
查询 employee 表中的数据
SELECT * FROM employee;
退出 mysql 容器
quit
SDB Shell
进入 coord_catalog 容器中,并进入 SDB Shell 交互式界面,使用 JavaScript 连接协调节点,获取数据库连接
docker exec -it coord_catalog /bin/bash su sdbadmin sdb var db = new Sdb("localhost", 11810);
使用 insert() 向 SequoiaDB 集合中写入记录
db.sample.employee.insert( { ename: "Abe", age: 20 } );
使用 find() 方法从集合中查询数据记录
db.sample.employee.find( { ename: "Abe" } );
使用 update() 方法将集合中的记录进行修改
db.sample.employee.update( { $set: { ename: "Ben" } }, { ename: "Abe" } );
使用 remove() 方法从集合中删除数据
db.sample.employee.remove( { ename: "Ben" } );