Sign inSign up

sequoiadb/sequoiasql-mysql

By sequoiadb

•Updated over 5 years ago

SequoiaSQL-MySQL is the MySQL-compatible SQL engine for SequoiaDB

Image
2

10K+

sequoiadb/sequoiasql-mysql repository overview

⁠SequoiaDB 巨杉数据库 Docker 集群使用教程

⁠SequoiaDB 简介

SequoiaDB 巨杉数据库是一款金融级分布式关系型数据库。 其自研的原生分布式存储引擎支持完整的事务 ACID,具备弹性扩展、高并发和高可用特性,支持 MySQL、PostgreSQL、 SparkSQL 和 MariaDB 等多种 SQL 访问形式。 适用于核心交易、数据中台、内容管理和实时数据等应用场景。

SequoiaDB的更多信息和软件下载,请访问 http://www.sequoiadb.com⁠

⁠SequoiaDB Docker 镜像

SequoiaDB 巨杉数据库为用户提供了 Docker 镜像,用户可以通过镜像快速部署集群进行开发和测试工作 。本文主要讲解如何通过官方 SequoiaDB 巨杉数据库的镜像,使用容器编排工具 docker-compose 完成集群的安装部署,同时也展示了如何在部署后的环境中进行 MySQL 实例的CRUD操作。

⁠如何使用镜像

本文帮助用户使用 Docker 镜像快速部署巨杉数据库集群,提供两种部署方式,分别是单副本单机集群和三副本分布式集群。在部署前,先通过以下命令,从镜像库下载镜像文件。

  • 下载 SequoiaDB Docker 镜像
docker pull sequoiadb/sequoiadb:v5.0.1
docker pull sequoiadb/sequoiasql-mysql:v5.0.1
  • 查看下载的镜像
docker images |grep sequoiadb
⁠搭建单副本单机集群

我们首先在容器中创建单副本 SequoiaDB 集群(该集群部署在单一容器中,且不提供数据冗余功能)。高可用集群的搭建方案,将在后面章节进行描述。

  • 集群配置

本Docker 镜像示范中,将采用单台服务器搭建一个SequoiaDB 数据库集群,其中包括:MySQL 实例和SequoiaDB 存储引擎。配置如下:

主机名IP部署软件服务
sdbmysql192.168.1.10SequoiaSQL-MySQLMySQL实例
sdbserver192.168.1.11SequoiaDBSequoiaDB存储引擎
  • 环境变量
变量名样例说明
SDB_DEPLOYtrue是否进行集群部署
SDB_CATALOGsdbserver1:11800,...集群编目节点列表(以逗号分隔)
SDB_COORDsdbserver1:11810,...集群协调节点列表(以逗号分隔)
SDB_DATAgroup1=sdbserver1:11820,sdbserver2:11820;...集群数据节点列表(以逗号分隔,不同组用分号分隔)
SDB_STP_SERVERsdbserver1:9622,...集群时序服务端节点列表(以逗号分隔)
SDB_STP_CLIENTsdbserver2:9622,...集群时序客户端节点列表(以逗号分隔)
MYSQL_SDB_COORDsdbserver1:11810,...MySQL协调节点列表(以逗号分隔)
  • 单副本 docker-compose 编排文件
cat > docker-compose.yml <<EOF
version: "3"
services:
   sdbserver:
      image: sequoiadb/sequoiadb:v5.0.1
      container_name: sdbserver
      hostname: "sdbserver"
      ports:
         - "11810:11810"
         - "11814:11814"
      restart: always
      environment:
         SDB_DEPLOY:     "true"
         SDB_CATALOG:    "sdbserver:11800"
         SDB_COORD:      "sdbserver:11810"
         SDB_DATA:       "group1=sdbserver:11820;group2=sdbserver:11830"
         SDB_STP_SERVER: "sdbserver:9622"
      networks:
         sdb-net:
            ipv4_address: "192.168.1.11"
      extra_hosts:
         - "sdbmysql:192.168.1.10"
         - "sdbserver:192.168.1.11"
      dns:
         - 223.5.5.5
         - 223.6.6.6
   sdbmysql:
      image: sequoiadb/sequoiasql-mysql:v5.0.1
      container_name: sdbmysql
      hostname: "sdbmysql"
      ports:
         - "3306:3306"
      restart: always
      environment:
         MYSQL_SDB_COORD: "sdbserver:11810"
      networks:
         sdb-net:
            ipv4_address: "192.168.1.10"
      extra_hosts:
         - "sdbmysql:192.168.1.10"
         - "sdbserver:192.168.1.11"
      dns:
         - 223.5.5.5
         - 223.6.6.6
      depends_on:
         - sdbserver
networks:
   sdb-net:
      ipam:
         config:
            - subnet: 192.168.1.0/16
EOF
  • 启动 SequoiaDB 集群
docker-compose -f docker-compose.yml up -d

输出如下:

Creating sdbserver ... done
Creating sdbmysql  ... done

注意事项:如果报错 listen tcp 0.0.0.0:3306: bind: address already in use ,说明宿主机的相应端口被占用,需要修改上述 docker-compose.yml 文件中 ports 部分的内容, 将前面的 3306 修改为其他端口,例如改为下面所示 3307

      ports:
         - "3307:3306"
  • 查看 MySQL 服务状态,直到输出 " Your sequoiadb-mysql service started successfully ! "
docker logs -f sdbmysql

输出如下:

2021-01-13 18:34:15+00:00 INFO  [Entrypoint]: Entrypoint script for MySQL Server 5.0.1 started.
2021-01-13 18:34:15+00:00 INFO  [Entrypoint]: Starting init process
************ Deploy SequoiaSQL-MySQL *****************
Create instance: [name: MySQLInstance3306, port: 3306]
2021-01-13 18:34:29+00:00 INFO  [Entrypoint]: MySQL init process done. Ready for start up.
2021-01-13 18:34:32+00:00 INFO  [Entrypoint]: Mysql service startup is complete.
2021-01-13 18:34:50+00:00 INFO  [Entrypoint]: Your sequoiadb-mysql service started successfully !

至此,单副本单机集群搭建完毕,您可使用后续章节 “测试部署的集群” 的步骤进行测试。

测试完成后,可通过以下命令销毁启动的 SequoiaDB 集群

docker-compose -f docker-compose.yml down

注意,默认情况下,数据库的数据是存放在 Docker 容器中,随着容器的销毁而被销毁。

⁠搭建三副本高可用集群
  • 集群配置

本Docker 镜像示范中,将采用三台服务器搭建一个SequoiaDB 数据库集群,其中包括:MySQL 实例和SequoiaDB 存储引擎,其中SequoiaDB 存储引擎采用三副本模型进行部署。 由于部署的节点较多,宿主机至少需要有 4G 内存和 20G 存储才能使用三副本模型进行部署。

主机名IP部署软件服务
sdbmysql192.168.1.10SequoiaSQL-MySQLMySQL实例
sdbserver1192.168.1.11SequoiaDBSequoiaDB存储引擎
sdbserver2192.168.1.12SequoiaDBSequoiaDB存储引擎
sdbserver3192.168.1.13SequoiaDBSequoiaDB存储引擎
  • 三副本高可用 docker-compose 编排文件
cat > docker-compose-cluster.yml <<EOF
version: "3"
services:
   sdbserver1:
      image: sequoiadb/sequoiadb:v5.0.1
      container_name: sdbserver1
      hostname: "sdbserver1"
      ports:
         - "11810:11810"
      restart: always
      environment:
         SDB_DEPLOY:     "true"
         SDB_COORD:      "sdbserver1:11810,sdbserver2:11810,sdbserver3:11810"
         SDB_CATALOG:    "sdbserver1:11800,sdbserver2:11800,sdbserver3:11800"
         SDB_DATA:       "group1=sdbserver1:11820,sdbserver2:11820,sdbserver3:11820;group2=sdbserver1:11830,sdbserver2:11830,sdbserver3:11830"
         SDB_STP_SERVER: "sdbserver1:9622,sdbserver2:9622,sdbserver3:9622"
      networks:
         sdb-net:
            ipv4_address: "192.168.1.11"
      extra_hosts:
         - "sdbmysql:192.168.1.10"
         - "sdbserver1:192.168.1.11"
         - "sdbserver2:192.168.1.12"
         - "sdbserver3:192.168.1.13"
      dns:
         - 223.5.5.5
         - 223.6.6.6
      depends_on:
         - sdbserver2
         - sdbserver3
   sdbserver2:
      image: sequoiadb/sequoiadb:v5.0.1
      container_name: sdbserver2
      hostname: "sdbserver2"
      restart: always
      networks:
         sdb-net:
            ipv4_address: "192.168.1.12"
      extra_hosts:
         - "sdbmysql:192.168.1.10"
         - "sdbserver1:192.168.1.11"
         - "sdbserver2:192.168.1.12"
         - "sdbserver3:192.168.1.13"
      dns:
         - 223.5.5.5
         - 223.6.6.6
   sdbserver3:
      image: sequoiadb/sequoiadb:v5.0.1
      container_name: sdbserver3
      hostname: "sdbserver3"
      restart: always
      networks:
         sdb-net:
            ipv4_address: "192.168.1.13"
      extra_hosts:
         - "sdbmysql:192.168.1.10"
         - "sdbserver1:192.168.1.11"
         - "sdbserver2:192.168.1.12"
         - "sdbserver3:192.168.1.13"
      dns:
         - 223.5.5.5
         - 223.6.6.6
   sdbmysql:
      image: sequoiadb/sequoiasql-mysql:v5.0.1
      container_name: sdbmysql
      hostname: "sdbmysql"
      ports:
         - "3306:3306"
      restart: always
      environment:
         MYSQL_SDB_COORD: "sdbserver1:11810,sdbserver2:11810,sdbserver3:11810"
      networks:
         sdb-net:
            ipv4_address: "192.168.1.10"
      extra_hosts:
         - "sdbmysql:192.168.1.10"
         - "sdbserver1:192.168.1.11"
         - "sdbserver2:192.168.1.12"
         - "sdbserver3:192.168.1.13"
      dns:
         - 223.5.5.5
         - 223.6.6.6
      depends_on:
         - sdbserver1
networks:
   sdb-net:
      ipam:
         config:
            - subnet: 192.168.1.0/16
EOF
  • 启动 SequoiaDB 集群
docker-compose -f docker-compose-cluster.yml up  -d

输出如下:

Creating sdbserver2 ... done
Creating sdbserver3 ... done
Creating sdbserver1 ... done
Creating sdbmysql   ... done
  • 查看 MySQL 服务状态,直到输出 " Your sequoiadb-mysql service started successfully ! "
docker logs -f sdbmysql

输出如下:

2021-01-13 18:34:15+00:00 INFO  [Entrypoint]: Entrypoint script for MySQL Server 5.0.1 started.
2021-01-13 18:34:15+00:00 INFO  [Entrypoint]: Starting init process
************ Deploy SequoiaSQL-MySQL *****************
Create instance: [name: MySQLInstance3306, port: 3306]
2021-01-13 18:34:29+00:00 INFO  [Entrypoint]: MySQL init process done. Ready for start up.
2021-01-13 18:34:32+00:00 INFO  [Entrypoint]: Mysql service startup is complete.
2021-01-13 18:34:50+00:00 INFO  [Entrypoint]: Your sequoiadb-mysql service started successfully !

至此,三副本高可用集群搭建完毕,您可使用下一章节的步骤进行测试。

测试完成后,可通过以下命令,销毁启动的 SequoiaDB 集群

docker-compose -f docker-compose-cluster.yml down

⁠测试部署的集群

  • 连接 SequoiaSQL-MySQL
mysql -h127.0.0.1 -P3306 -uroot -p

默认没有设置密码,输入以上命令后,回车即可进入 MySQL shell

如果没有 mysql 客户端,可以使用 yum 安装

yum -y install mysql
  • 创建测试库 test,并切换到 test
CREATE DATABASE test;
USE test;
  • 在 test数据库中创建测试表 test
CREATE TABLE test (
    empno INT AUTO_INCREMENT PRIMARY KEY,
    ename VARCHAR(128),
    age INT
);
  • 在表 test 中插入数据
INSERT INTO test (ename, age) VALUES ("Jacky", 36);
INSERT INTO test (ename, age) VALUES ("Alice", 18);
  • 查询 test 表中的数据
SELECT * FROM test;
  • 退出mysql
quit

⁠附录

⁠Linux Docker 安装
  • 安装 docker (root 权限进行安装)
curl -sSL https://get.daocloud.io/docker | sh
  • 启动 docker
systemctl start docker
systemctl enable docker
  • 安装 docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Tag summary

Content type

Image

Digest

Size

164.1 MB

Last updated

about 7 years ago

docker pull sequoiadb/sequoiasql-mysql