SequoiaSQL-MySQL is the MySQL-compatible SQL engine for SequoiaDB
10K+
SequoiaDB 巨杉数据库是一款金融级分布式关系型数据库。 其自研的原生分布式存储引擎支持完整的事务 ACID,具备弹性扩展、高并发和高可用特性,支持 MySQL、PostgreSQL、 SparkSQL 和 MariaDB 等多种 SQL 访问形式。 适用于核心交易、数据中台、内容管理和实时数据等应用场景。
SequoiaDB的更多信息和软件下载,请访问 http://www.sequoiadb.com
SequoiaDB 巨杉数据库为用户提供了 Docker 镜像,用户可以通过镜像快速部署集群进行开发和测试工作 。本文主要讲解如何通过官方 SequoiaDB 巨杉数据库的镜像,使用容器编排工具 docker-compose 完成集群的安装部署,同时也展示了如何在部署后的环境中进行 MySQL 实例的CRUD操作。
本文帮助用户使用 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 | 部署软件 | 服务 |
|---|---|---|---|
| sdbmysql | 192.168.1.10 | SequoiaSQL-MySQL | MySQL实例 |
| sdbserver | 192.168.1.11 | SequoiaDB | SequoiaDB存储引擎 |
| 变量名 | 样例 | 说明 |
|---|---|---|
| SDB_DEPLOY | true | 是否进行集群部署 |
| SDB_CATALOG | sdbserver1:11800,... | 集群编目节点列表(以逗号分隔) |
| SDB_COORD | sdbserver1:11810,... | 集群协调节点列表(以逗号分隔) |
| SDB_DATA | group1=sdbserver1:11820,sdbserver2:11820;... | 集群数据节点列表(以逗号分隔,不同组用分号分隔) |
| SDB_STP_SERVER | sdbserver1:9622,... | 集群时序服务端节点列表(以逗号分隔) |
| SDB_STP_CLIENT | sdbserver2:9622,... | 集群时序客户端节点列表(以逗号分隔) |
| MYSQL_SDB_COORD | sdbserver1:11810,... | MySQL协调节点列表(以逗号分隔) |
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
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"
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 | 部署软件 | 服务 |
|---|---|---|---|
| sdbmysql | 192.168.1.10 | SequoiaSQL-MySQL | MySQL实例 |
| sdbserver1 | 192.168.1.11 | SequoiaDB | SequoiaDB存储引擎 |
| sdbserver2 | 192.168.1.12 | SequoiaDB | SequoiaDB存储引擎 |
| sdbserver3 | 192.168.1.13 | SequoiaDB | SequoiaDB存储引擎 |
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
docker-compose -f docker-compose-cluster.yml up -d
输出如下:
Creating sdbserver2 ... done
Creating sdbserver3 ... done
Creating sdbserver1 ... done
Creating sdbmysql ... done
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
mysql -h127.0.0.1 -P3306 -uroot -p
默认没有设置密码,输入以上命令后,回车即可进入 MySQL shell
如果没有 mysql 客户端,可以使用 yum 安装
yum -y install mysql
CREATE DATABASE test;
USE test;
CREATE TABLE test (
empno INT AUTO_INCREMENT PRIMARY KEY,
ename VARCHAR(128),
age INT
);
INSERT INTO test (ename, age) VALUES ("Jacky", 36);
INSERT INTO test (ename, age) VALUES ("Alice", 18);
SELECT * FROM test;
quit
curl -sSL https://get.daocloud.io/docker | sh
systemctl start docker
systemctl enable docker
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
Content type
Image
Digest
Size
164.1 MB
Last updated
about 7 years ago
docker pull sequoiadb/sequoiasql-mysql