1. 程式人生 > >SequoiaDB 巨杉資料庫Docker映象使用教程

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 映象建立一個分散式叢集。

該叢集僅為測試使用,不可直接應