【巨杉数据库SequoiaDB】巨杉 Tech | 几分钟实现巨杉数据库容器化部署

随着业务负载的不断加重,容器化、虚拟化也成为各类在线应用必须要具备的能力。对于分布式数据库,容器化也是提升快速部署、提高运维效率的一个很好的路径。

我们重新优化了 Docker部署的方式,帮助大家更快的上手SequoiaDB集群,本文就将介绍基于 Docker 的SequoiaDB分布式集群快速部署。

1.集群配置



我们将在六个容器中部署一个多节点,高度可用的 SequoiaDB 集群,如下所示:

(本文以 SequoiaDB v3.2.3 版本为例)

?

该集群包括一个协调器节点、一个目录节点、三个数据组,每个数据组有三个副本数据节点和一个 MySQL 实例节点。

2. 环境

???????

OS :  Ubuntu 18Docker Version : 18.09.7Docker Compose Version: 1.25.3Database Version : SequoiaDB 3.2.3MySql Client: Sequoiasql-mysqlCluster Deployment : 1 coordinator, 1 catalog, 3 data nodes, and 1 MySQL instance

2.1 Docker安装

2.1.1 Docker

对于在不同平台上的 Docker 安装,用户可以参阅 Docker 安装指南。

 sudo apt-get install -y docker.io

2.1.2 Docker-compose

Docker compose是一个用于定义和部署在YAML文件中定义的多容器泊坞应用程序的工具(i.e: docker-compose.yaml)。???????

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composesudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

2.1.3 MySQL 客户端

安装 MySQL 客户端(如果尚未安装)

sudo apt install mysql-client-core-5.7

3. SequoiaDB分布式集群部署



定义 SequoiaDB 集群配置 "sequoiadb_containers/docker-compose.yaml",用户有两个选项可以下载所需的软件包。

选项1:克隆repo地址

(点击文末【阅读原文】前往获取软件包)

选项2:手动下载(保留相同的目录结构)

(点击文末【阅读原文】前往获取软件包)

3.1 部署 SequoiaDB 集群

docker-compose up 命令将:

- 如果没有在本地找到,可前往dockerhub下载镜像

- 创建所需的容器

- 启动容器

- 初始化 SequoiaDB 集群和 MySQL 实例

1)部署集群???????

cd sequoiadb_containers  (或者到docker-compose的目录。yaml文件下载)sudo docker-compose up -d

2)检查集群的状态

$ sudo docker-compose ps                Name                         Command               State           Ports                  --------------------------------------------------------------------------------------------         sequoiadb_containers_catalog_1   sh -c chmod +x /startup.sh ...   Up                                     sequoiadb_containers_coord_1     sh -c chmod +x /startup.sh ...   Up                                     sequoiadb_containers_data1_1     sh -c chmod +x /startup.sh ...   Up                                     sequoiadb_containers_data2_1     sh -c chmod +x /startup.sh ...   Up                                     sequoiadb_containers_data3_1     sh -c chmod +x /startup.sh ...   Up                                     sequoiadb_containers_mysql_1     sh -c chmod +x /startup.sh ...   Up      0.0.0.0:3310->3310/tcp

3)等待集群被部署和 MySQL 连接到协调器节点,用户可以按如下方式检查集群状态。???????

# 检查 coordinator 日志         $ sudo docker-compose logs coord         ...         ...         coord_1    | ************ Deploy SequoiaDB ************************         coord_1    | Create catalog: catalog:11800         coord_1    | Create coord:   coord:11810         coord_1    | Create data:    data1:11820         coord_1    | Create data:    data2:11820         coord_1    | Create data:    data3:11820         coord_1    | Create data:    data1:11830         coord_1    | Create data:    data2:11830         coord_1    | Create data:    data3:11830         coord_1    | Create data:    data1:11840         coord_1    | Create data:    data2:11840         coord_1    | Create data:    data3:11840         coord_1    | SDB Cluster successfully created.
         # 检查mysql日志         $ sudo docker-compose logs mysql         ...         ...         mysql_1    | >>> Waiting for COORD node to come up at (coord:11810)...         mysql_1    | >>> Waiting for COORD node to come up at (coord:11810)...         mysql_1    | >>> Waiting for COORD node to come up at (coord:11810)...         mysql_1    | Successfully reached COORD node at (coord:11810)         mysql_1    | COMMAND: /init.sh --port=3310 --coord=coord:11810         mysql_1    | Creating SequoiaSQL instance: MySQLInstance         mysql_1    | Modify configuration file and restart the instance: MySQLInstance         mysql_1    | Restarting instance: MySQLInstance         mysql_1    | Opening remote access to user root         mysql_1    | Restarting instance: MySQLInstance         mysql_1    | Instance MySQLInstance is created on port 3310, default user is root         mysql_1    | Init command returned: 0

3.2 验证MySQL连接

$ mysql -h 127.0.0.1 -P 3310 -u root

Welcome to the MySQL monitor.  Commands end with ; or \g.         Your MySQL connection id is 4         Server version: 5.7.25 Source distribution
         Copyright (c) 2000, 2020, 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>

验证SequoiaDB配置:

mysql> show variables like ‘sequoiadb%‘;         +---------------------------------------+-------------+         | Variable_name                         | Value       |         +---------------------------------------+-------------+         | sequoiadb_bulk_insert_size            | 2000        |         | sequoiadb_conn_addr                   | coord:11810 |         | sequoiadb_debug_log                   | OFF         |         | sequoiadb_execute_only_in_mysql       | OFF         |         | sequoiadb_optimizer_select_count      | ON          |         | sequoiadb_password                    |             |         | sequoiadb_replica_size                | 1           |         | sequoiadb_selector_pushdown_threshold | 30          |         | sequoiadb_use_autocommit              | ON          |         | sequoiadb_use_bulk_insert             | ON          |         | sequoiadb_use_partition               | ON          |         | sequoiadb_user                        |             |         +---------------------------------------+-------------+         12 rows in set (0.01 sec)

         mysql> show storage engines;         +--------------------+---------+----------------------------------------------------------------------------------+--------------+------+------------+         | Engine             | Support | Comment                                                                          | Transactions | XA   | Savepoints |         +--------------------+---------+----------------------------------------------------------------------------------+--------------+------+------------+         | SequoiaDB          | DEFAULT | SequoiaDB storage engine(Community). Plugin: eebcb4f, Driver: 3.2.3, BuildTime:  | YES          | NO   | NO         |         | MRG_MYISAM         | YES     | Collection of identical MyISAM tables                                            | NO           | NO   | NO         |         | PERFORMANCE_SCHEMA | YES     | Performance Schema                                                               | NO           | NO   | NO         |         | BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears)                   | NO           | NO   | NO         |         | MyISAM             | YES     | MyISAM storage engine                                                            | NO           | NO   | NO         |         | CSV                | YES     | CSV storage engine                                                               | NO           | NO   | NO         |         | ARCHIVE            | YES     | Archive storage engine                                                           | NO           | NO   | NO         |         | InnoDB             | YES     | Supports transactions, row-level locking, and foreign keys                       | YES          | YES  | YES        |         | FEDERATED          | NO      | Federated MySQL storage engine                                                   | NULL         | NULL | NULL       |         | MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                        | NO           | NO   | NO         |         +--------------------+---------+----------------------------------------------------------------------------------+--------------+------+------------+         10 rows in set (0.00 sec)

3.3 测试

用户可以使用 MySQL 命令创建数据库和表:

mysql> create database sample;         Query OK, 1 row affected (0.01 sec)
         mysql> use sample;         Database changed         mysql>  create table t1 (c1 int);         Query OK, 0 rows affected (0.47 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.03 sec)

4. 集群管理



4.1 stop/start cluster

使用up命令创建 SequoiaDB 集群后,它可以停止并按如下方式启动。

Note:

"stop"命令不会删除容器,因此不会丢失任何数据。

4.1.1 stop 命令

$ sudo docker-compose stop         Stopping sequoiadb_containers_mysql_1   ... done         Stopping sequoiadb_containers_coord_1   ... done         Stopping sequoiadb_containers_data2_1   ... done         Stopping sequoiadb_containers_data1_1   ... done         Stopping sequoiadb_containers_catalog_1 ... done         Stopping sequoiadb_containers_data3_1   ... done

         $ sudo docker-compose ps                    Name                         Command                State     Ports         ------------------------------------------------------------------------------         sequoiadb_containers_catalog_1   sh -c chmod +x /startup.sh ...   Exit 137                 sequoiadb_containers_coord_1     sh -c chmod +x /startup.sh ...   Exit 137                 sequoiadb_containers_data1_1     sh -c chmod +x /startup.sh ...   Exit 137                 sequoiadb_containers_data2_1     sh -c chmod +x /startup.sh ...   Exit 137                 sequoiadb_containers_data3_1     sh -c chmod +x /startup.sh ...   Exit 137                 sequoiadb_containers_mysql_1     sh -c chmod +x /startup.sh ...   Exit 137

4.1.2 start 命令        ???????

$ sudo docker-compose start         Starting catalog ... done         Starting data1   ... done         Starting data2   ... done         Starting data3   ... done         Starting coord   ... done         Starting mysql   ... done

         $ sudo docker-compose ps                    Name                         Command               State           Ports                  --------------------------------------------------------------------------------------------         sequoiadb_containers_catalog_1   sh -c chmod +x /startup.sh ...   Up                                     sequoiadb_containers_coord_1     sh -c chmod +x /startup.sh ...   Up                                     sequoiadb_containers_data1_1     sh -c chmod +x /startup.sh ...   Up                                     sequoiadb_containers_data2_1     sh -c chmod +x /startup.sh ...   Up                                     sequoiadb_containers_data3_1     sh -c chmod +x /startup.sh ...   Up                                     sequoiadb_containers_mysql_1     sh -c chmod +x /startup.sh ...   Up      0.0.0.0:3310->3310/tcp
         # Verity mysql client is up         $ sudo docker-compose logs mysql         Attaching to sequoiadb_containers_mysql_1         mysql_1    | Starting service sequoiasql-mysql ...         mysql_1    | ok. (PID: 38)         ...         mysql_1    | MySql instance is started

4.2 down/up Cluster

4.2.1 down命令

down 命令将停止并删除SequoiaDB集群部署的容器。

Note:

down命令应该谨慎执行,因为当容器被破坏时无法回滚/恢复。            ???????

$ sudo docker-compose down         Stopping sequoiadb_containers_mysql_1   ... done         Stopping sequoiadb_containers_coord_1   ... done         Stopping sequoiadb_containers_data2_1   ... done         Stopping sequoiadb_containers_data1_1   ... done         Stopping sequoiadb_containers_catalog_1 ... done         Stopping sequoiadb_containers_data3_1   ... done         Removing sequoiadb_containers_mysql_1   ... done         Removing sequoiadb_containers_coord_1   ... done         Removing sequoiadb_containers_data2_1   ... done         Removing sequoiadb_containers_data1_1   ... done         Removing sequoiadb_containers_catalog_1 ... done         Removing sequoiadb_containers_data3_1   ... done         Removing network sequoiadb_containers_sequoiadb_net
         $ sudo docker-compose ps         Name   Command   State   Ports         ------------------------------

4.2.2 up命令

up命令将创建并启动为sequoiadb cluser定义的服务(容器,网络)。???????

$ sudo docker-compose up -d          Creating network "sequoiadb_containers_sequoiadb_net" with the default driver         Creating sequoiadb_containers_data2_1   ... done         Creating sequoiadb_containers_data3_1   ... done         Creating sequoiadb_containers_catalog_1 ... done         Creating sequoiadb_containers_data1_1   ... done         Creating sequoiadb_containers_coord_1   ... done         Creating sequoiadb_containers_mysql_1   ... done
         $ sudo docker-compose ps                    Name                         Command               State           Ports                  --------------------------------------------------------------------------------------------         sequoiadb_containers_catalog_1   sh -c chmod +x /startup.sh ...   Up                                     sequoiadb_containers_coord_1     sh -c chmod +x /startup.sh ...   Up                                     sequoiadb_containers_data1_1     sh -c chmod +x /startup.sh ...   Up                                     sequoiadb_containers_data2_1     sh -c chmod +x /startup.sh ...   Up                                     sequoiadb_containers_data3_1     sh -c chmod +x /startup.sh ...   Up                                     sequoiadb_containers_mysql_1     sh -c chmod +x /startup.sh ...   Up      0.0.0.0:3310->3310/tcp
         # 验证MySQL连接         $ mysql -h 127.0.0.1  -P 3310 -u root         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, 2020, 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> show storage engines;         +--------------------+---------+----------------------------------------------------------------------------------+--------------+------+------------+         | Engine             | Support | Comment                                                                          | Transactions | XA   | Savepoints |         +--------------------+---------+----------------------------------------------------------------------------------+--------------+------+------------+         | SequoiaDB          | DEFAULT | SequoiaDB storage engine(Community). Plugin: eebcb4f, Driver: 3.2.3, BuildTime:  | YES          | NO   | NO         |         | MRG_MYISAM         | YES     | Collection of identical MyISAM tables                                            | NO           | NO   | NO         |         | PERFORMANCE_SCHEMA | YES     | Performance Schema                                                               | NO           | NO   | NO         |         | BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears)                   | NO           | NO   | NO         |         | MyISAM             | YES     | MyISAM storage engine                                                            | NO           | NO   | NO         |         | CSV                | YES     | CSV storage engine                                                               | NO           | NO   | NO         |         | ARCHIVE            | YES     | Archive storage engine                                                           | NO           | NO   | NO         |         | InnoDB             | YES     | Supports transactions, row-level locking, and foreign keys                       | YES          | YES  | YES        |         | FEDERATED          | NO      | Federated MySQL storage engine                                                   | NULL         | NULL | NULL       |         | MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                        | NO           | NO   | NO         |         +--------------------+---------+----------------------------------------------------------------------------------+--------------+------+------------+

不知道您是否已经动手操作了呢?

SequoiaDB后续也将持续推出系列技术教程,帮助大家更快上手分布式数据库,同时更好的理解分布式数据库的原理,大家敬请期待!

原文地址:https://www.cnblogs.com/sequoiadbsql/p/12425853.html

时间: 2024-11-10 12:06:23

【巨杉数据库SequoiaDB】巨杉 Tech | 几分钟实现巨杉数据库容器化部署的相关文章

【巨杉数据库SequoiaDB】巨杉Tech | 四步走,快速诊断数据库集群状态

1.背景 SequoiaDB 巨杉数据库是一款金融级分布式数据库,包括了分布式 NewSQL.分布式文件系统与对象存储.与高性能 NoSQL 三种存储模式,分别对应分布式在线交易.非结构化数据和内容管理.以及海量数据管理和高性能访问场景. 集群一般会使用三副本方式以确保数据安全.假若集群发生因硬件故障等原因导致的节点故障或集群异常,数据库管理员应进行系统的分析和诊断,以确保集群正常工作,不会影响用户的正常使用.本文将与大家分享一下基本的 SequoiaDB 数据库诊断方法. 数据库集群诊断 1)

【巨杉数据库SequoiaDB】巨杉Tech | 巨杉数据库的并发 malloc 实现

本文由巨杉数据库北美实验室资深数据库架构师撰写,主要介绍巨杉数据库的并发malloc实现与架构设计.原文为英文撰写,我们提供了中文译本在英文之后. SequoiaDB Concurrent malloc Implementation Introduction In a C/C++ application, the dynamic memory allocation function malloc(3) can have a significant impact on the applicatio

【巨杉数据库SequoiaDB】巨杉 Tech | 并发性与锁机制解析与实践

01 概述 数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性.加锁是实现数据库并发控制的一个非常重要的技术.当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁.加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作. OLTP 场景下通常要求具有很高的并发性.并发事务实际上取决于资源的使用状况,原则上应尽量减少

巨杉Tech | 十分钟快速搭建 Wordpress 博客系统

介绍很多互联网应用程序开发人员第一个接触到的网站项目就是博客系统.而全球使用最广的Wordpress常常被用户用来快速搭建个人博客网站.默认情况下,Wordpress一般在后台使用MySQL关系型数据库存储所有的博文及回复.本文将展示如何使用 SequoiaDB 巨杉分布式数据库替换MySQL,成为Wordpress博客系统的后台关系型数据库. 通过阅读本文,用户可以了解到如何使用SequoiaDB巨杉数据库的MySQL实例无缝替换标准MySQL数据库.SequoiaDB巨杉数据库允许用户在不更

【巨杉数据库SequoiaDB】点燃深秋,巨杉数据库亮相DTC数据技术嘉年华大会

2019年11月15日,第九届数据技术嘉年华大会在北京隆重召开,本次大会以 "开源 ? 智能 ? 云数据 - 自主驱动发展 创新引领未来" 为主题,探索数据价值,共论智能未来.SequoiaDB 巨杉数据库作为领先的金融级分布式关系型数据库,为大家带来新一代分布式数据库的发展趋势和特性,也通过分享巨杉的丰富金融级实践经验,帮助大家充分了解分布式数据库当前的应用场景. ****分布式数据库发展趋势 在上午主会场的分享中,巨杉数据库联合创始人王涛,为大家带来了题为"新一代分布式数

【巨杉数据库SequoiaDB】巨杉?具系列之一 | ?对象存储?具sdblobtool

近期,巨杉数据库正式推出了完整的SequoiaDB 工具包,作为辅助工具,更好地帮助大家使用和运维管理分布式数据库.为此,巨杉技术社区还将持续推出工具系列文章,帮助大家了解巨杉数据库丰富的工具矩阵. 本文作为系列第一篇,将分享巨杉数据库大数据存储工具 sdblobtool 的基本介绍和应用实践.巨杉工具矩阵 一.对象存储与自建存储对比通俗地讲,自建存储就是自己购买服务器设备存储文件,通过运维人员手工进行文件的上传下载.而对象存储,则是使用不同的存储形态来存储文件.目前,对象存储独立的存储形态有三

【巨杉数据库SequoiaDB】企业级和开源领域“两开花”,巨杉引领国产数据库创新

2019年12月15日,OSC 源创会·年终盛典在深圳圆满举行.巨杉数据库作为业界领先的金融级分布式数据库厂商, 获得 "2019年开源数据库先锋企业" 及 "2019 GVP-Gitee最有价值开源项目" 两项殊荣. ? SequoiaDB 巨杉数据库始终坚持自研路线,并于2014年正式开源,是国内最早的开源数据库之一.经过8年的自主研发和技术发展,迭代发展出了技术领先.产品安全稳定.通用性强的金融级产品.今年 SequoiaDB 发布两个主要的版本,近期发布的3

【巨杉数据库SequoiaDB】巨杉数据库 v5.0 Beta版 正式发布

2020年疫情的出现对众多企业运营造成了严重的影响.面对突发状况,巨杉利用长期积累的远程研发协作体系,仍然坚持进行技术创新,按照已有规划--推进研发工作,正式推出了巨杉数据库(SequoiaDB) v5.0 Beta版. 我们也在这里向大家介绍一下,SequoiaDB v5.0 版本中将会包含哪些激动人心的功能和特性. ARM架构的官方支持 从 3.2 版本开始,SequoiaDB 已经在有限版本中支持 ARM 芯片服务器与国产操作系统.从 SequoiaDB v5.0 开始,我们正式官方支持飞

【巨杉数据库SequoiaDB】为“战疫” 保驾护航,巨杉在行动

2020年,我们经历了一个不平静的新春,在这场大的"战疫"中,巨杉数据库也积极响应号召,勇于承担新一代科技企业的社会担当,用自己的行动助力这场疫情防控阻击战! 赋能"战疫"快速响应 巨杉数据库目前服务许多政府部门应用平台,其中在广州市电子政务中心,就管理了全市近1500万人口的海量医保社保相关数据.医保.社保是抗击疫情工作的"弹药库",也是市民面对疫病的"定心丸". 目前,服务该业务的巨杉数据库集群,在2020年实现系统0错误