SequoiaDB 巨杉数据库Docker镜像使用教程
为方便用户快速体验,SequoiaDB 巨杉数据库提供基于 Docker 的镜像。本文介绍如何在 Docker 环境下部署 SequoiaDB 分布式集群环境。
集群规划
我们准备在五个容器中部署一个多节点高可用 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 实例节点。
样例环境
| Docker 环境 | Mac Docker 2.0.0.3 |
|---|---|
| 容器操作系统版本 | Ubuntu 18 |
| 数据库版本 | SequoiaDB 3.2.1 |
| 集群部署 | 一个运行协调和编目节点,三个运行数据节点,一个运行 MySQL 实例 |
Docker 在 Linux/Windows/MacOS 平台安装方法可参考官方文档。
对于 Linux 环境可参考本样例安装 Docker 环境。
$ apt-get install -y docker.io
拉取镜像
$ docker pull sequoiadb/sequoiadb
$ docker pull sequoiadb/sequoiasql-mysql
启动四个 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}';
运行结果:
NAMES
sdb_data3
sdb_data2
sdb_data1
coord_catalog
查看四个容器的容器对应的 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}'
四条命令的输出结果分别为各个容器自身的 IP 地址:
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.3",
"IPAddress": "172.17.0.4",
"IPAddress": "172.17.0.5",
部署 SequoiaDB 集群
根据集群规划以及各个容器的 IP 地址,在对应参数填入各自的地址与端口号。
$ 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'
该命令输出结果为:
Begin generating SequoiaDB conf file
Finish generating SequoiaDB conf file
Restarting sdbcm process, it will take 10 seconds
Deploy...
Execute command: /opt/sequoiadb/tools/deploy/../../bin/sdb -f /opt/sequoiadb/tools/deploy/quickDeploy.js -e ''
************ Deploy SequoiaDB ************************
Create catalog: 172.17.0.2:11800
Create coord: 172.17.0.2:11810
Create data: 172.17.0.3:11820
Create data: 172.17.0.4:11820
Create data: 172.17.0.5:11820
Create data: 172.17.0.4:11830
Create data: 172.17.0.5:11830
Create data: 172.17.0.3:11830
Create data: 172.17.0.5:11840
Create data: 172.17.0.3:11840
Create data: 172.17.0.4:11840
启动一个 MySQL 实例容器
$ docker run -it -d -p 3306:3306 --name mysql sequoiadb/sequoiasql-mysql:latest
查看启动容器的 ID
$ docker ps -a | awk '{print $NF}';
输出结果为包括 MySQL 实例在内的所有容器名:
NAMES
mysql
sdb_data3
sdb_data2
sdb_data1
coord_catalog
查看容器 IP 地址
$ docker inspect mysql | grep IPAddress | awk 'NR==2 {print $0}'
输出结果为 MySQL 实例的 IP 地址:
"IPAddress": "172.17.0.6",
将 MySQL 实例注册入协调节点
$ docker exec mysql "/init.sh" --port=3306 --coord='172.17.0.2:11810'
输出结果为:
Creating SequoiaSQL instance: MySQLInstance
Modify configuration file and restart the instance: MySQLInstance
Restarting instance: MySQLInstance
Opening remote access to user root
Restarting instance: MySQLInstance
Instance MySQLInstance is created on port 3306, default user is root
本地登陆 MySQL 测试
$ mysql -h 127.0.0.1 -P 3306 -u root
可以得到 MySQL 连接成功的输出:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.25 Source distribution
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
用户可以使用 MySQL 命令创建数据库与表:
mysql> create database sample;
Query OK, 1 row affected (0.00 sec)
mysql> use sample;
Database changed
mysql> create table t1 (c1 int);
Query OK, 0 rows affected (0.59 sec)
mysql> show table status;
+------+-----------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+-------------+------------+-------------+----------+----------------+---------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment |
+------+-----------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+-------------+------------+-------------+----------+----------------+---------+
| t1 | SequoiaDB | 10 | Fixed | 0 | 0 | 0 | 8796093022208 | 131072 | 0 | NULL | NULL | NULL | NULL | utf8mb4_bin | NULL | | |
+------+-----------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+-------------+------------+-------------+----------+----------------+---------+
1 row in set (0.16 sec)
重置镜像
为方便用户重置已经创建了数据库节点的容器,用户可以使用 cleanup.sh 脚本进行本地容器的重置。
$ docker exec mysql /cleanup.sh
$ docker exec coord_catalog /cleanup.sh
$ docker exec sdb_data1 /cleanup.sh
$ docker exec sdb_data2 /cleanup.sh
$ docker exec sdb_data3 /cleanup.sh
结论
为方便用户快速试用 SequoiaDB 分布式数据库,用户可直接拉取 SequoiaDB 的 Docker 镜像创建一个分布式集群。
该集群仅为测试使用,不可直接应用于生产环境。
SequoiaDB 巨杉数据库Docker镜像使用教程的更多相关文章
- 巨杉Tech|SequoiaDB 巨杉数据库高可用容灾测试
数据库的高可用是指最大程度地为用户提供服务,避免服务器宕机等故障带来的服务中断.数据库的高可用性不仅仅体现在数据库能否持续提供服务,而且也体现在能否保证数据的一致性. SequoiaDB 巨杉数据库作 ...
- SequoiaDB巨杉数据库入门:快速搭建流媒体服务器
使用SequoiaDB的分布式文件系统搭建流媒体服务器 介绍 如今使用移动互联网的年轻人开始越来越多使用短视频展示自我,而流媒体则是支撑在线视频播放的核心技术.当我们开始构建流媒体站点时,往往面临最大 ...
- MySQL、MongoDB、Redis数据库Docker镜像制作
MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...
- SequoiaDB 巨杉数据库
传统单点数据库的容量瓶颈,仅仅是分布式数据库所解决的问题之一.更重要的是在未来微服务化应用开发以及云化平台的趋势下,应用不再以“烟囱式”的中间件加数据库模式进行构建,而是采用数千甚至上万的微服务程序构 ...
- 【巨杉数据库SequoiaDB】SequoiaDB 巨杉数据库 v3.4 版本正式发布
深秋时节,SequoiaDB 巨杉数据库在深秋给大家带来了“一把火”.SequoiaDB v3.4 正式发布啦! 分布式交易场景性能大幅提升 SequoiaDB 巨杉数据库3.4版本正式发布,v3.4 ...
- Docker 镜像制作教程:针对不同语言的精简策略
本系列文章将分为三个部分: 第一部分着重介绍多阶段构建(multi-stage builds),因为这是镜像精简之路至关重要的一环.在这部分内容中,我会解释静态链接和动态链接的区别,它们对镜像带来的影 ...
- 深入学习sequoiadb巨杉数据库及python连接方式
随着公司日益复杂与多变的需求,以及迅速扩展带来的海量数据业务,我们需要在提供高效服务的同时,降低其设备与程序维护成本.算了,不吹了,说白了就是需要从巨杉数据库中抓取大量的数据,但是我现在不会,所以需要 ...
- Docker 镜像加速教程
原文链接:https://fuckcloudnative.io/posts/docker-registry-proxy/ 在使用 Docker 和 Kubernetes 时,我们经常需要访问 gcr. ...
- nginx 官方docker镜像使用教程
最近在看nignx,在本地虚拟机使用docker nginx镜像搭建了nginx+php环境 整理的教程如下: 拉取nginx镜像docker pull nginx 创建一个容器,并挂载本地目录doc ...
随机推荐
- Hystrix压测
背景介绍 JSF(京东服务框架,类似dubbo)默认配置了可伸缩的最大到200的工作线程池,每一个向外提供的服务都在其中运行(这里我们是服务端),这些服务内部调用外部依赖时(这里我们是客户端)一般是同 ...
- 【DTOJ】2703:两个数的余数和商
DTOJ 2703:两个数的余数和商 解题报告 2017.11.10 第一版 ——由翱翔的逗比w原创,引用<C++ Primer Plus(第6版)中文版> 题目信息: 题目描述 给你a ...
- node模块化开发基本知识学习笔记
传统非模块化开发缺点: 1.命名冲突 2.文件依赖 标准的模块化规范: 1.AMD-requirejs 2.CMD-seajs 服务器端模块化规范: 1.CommonJS-Node.js 模块化相关的 ...
- 如何将文本放置在div的底部显示呢?
转自:将文本定位于div的底部的方法 摘要: 下文讲述将文本放于div的底部的两种方法,如下所示: 实现思路: 思路1:采用绝对定位的方式,将其放置于div的底部 思路2:使用Line-height ...
- 标准化建筑的 FRESH 原则
前记 大家好,我是小镭. 我在钢结构领域从业十余年,虽然工作内容是关于建筑的,但如果问我什么是建筑,我却一时答不出来. 记得小时候我读过一篇文章,说建筑是凝固的音乐. 后来我看了些书,觉得建筑是空间. ...
- 剑指offer-面试题36-二叉搜索树与双向链表-中序遍历
/* 题目: 将二叉搜索树转化为排序的双向链表,不能创建新的节点, 只能调整节点的指向,返回双向链表的头节点. */ /* 思路: 递归. 二叉搜索树的中序遍历得到的序列是递增序列. 左子树left& ...
- bootstrap支持ie8 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
做一个在线系统,PC端也要做,但要兼容千恶的IE8[IE6 是万恶,打死我都不会管IE6],IE8 是我底线了md, 在IE8下 bottstrap 错乱,变形,不支持一些属性的问题,下面看了一篇 某 ...
- C#设计模式学习笔记:(1)单例模式
本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/8250985.html,记录一下学习过程以备后续查用. 一.引言 设计模式的分类: 1)依目的: 创建型(Cr ...
- 如何在Mac OS X上将PDF转换为Microsoft Word
Lighten PDF to Word Converter for Mac是一个简单但功能强大的应用程序,可将PDF文件准确,轻松地转换为Microsoft Word.它可以保留原始内容的布局,格式, ...
- Supermarket POJ - 1456 贪心+并查集
#include<iostream> #include<algorithm> using namespace std; const int N=1e5; struct edge ...