入门
本章节介绍如何开始使用 Ignite。其中,将从官网下载 Ignite 然后安装,启动数据库并使用自带的命令行工具执行一些简单的 SQL 查询。
本章节将使用 ZIP 包来演示如何使用 Ignite,使用 DEB / RPM 包时,或者在 Docker 中运行 Ignite 时,某些步骤可能会有所不同。
如果更习惯从 Java 代码运行数据库,可以尝试从代码启动 Ignite。
1.环境要求
本章节介绍运行 Ignite 所必需的软硬件平台要求,根据规划的集群的大小,确定所需的系统规模。
- JDK:11 或更高版本;
- OS:Linux(Debian 和 Red Hat 版本)、Windows 10 或 11;
- 指令集架构:x86 或 x64。
2.安装Ignite
从官网下载 Ignite,该压缩包中包含与 Ignite 数据库本身相关的所有内容;
从同一页面下载 Ignite 的命令行工具,该命令行工具是与 Ignite 数据库交互的主要方式,本章节会用到;
解压缩下载的压缩包:
bashunzip ignite3-3.0.0.zip
shellExpand-Archive ignite3-3.0.0.zip -DestinationPath .
shellunzip -xf ignite3-3.0.0.zip
这时会有后面会用到的ignite3-db-3.0.0
和ignite3-cli-3.0.0
目录。
3.启动Ignite节点
Ignite 是一个分布式数据库,在一个节点集合上运行,每个节点对应一个持有数据的 Ignite 数据库实例,运行 Ignite 的典型场景,需要启动多个节点,即一个集群,在集群范围共享信息并在其节点之间均匀分布数据。而在本章节中将只运行一个节点,但后面的部分将介绍如何启动多个节点。
要启动一个本地的节点:
- 转到
ignite3-db-3.0.0
目录; - 运行
ignite3db
脚本:bashbin/ignite3db
shellbin\ignite3db.bat
4.启动Ignite命令行工具
与节点和集群交互的主要方式是 Ignite 命令行工具。它可以接入在本地或远程主机上运行的节点,并且是用于手动配置和管理数据库的主要工具。在此示例中将接入本地节点。
要启动 Ignite 命令行工具,请执行以下命令:
- 转到
ignite3-cli-3.0.0
目录; - 运行以下命令:bash
bin/ignite3
shellbin\ignite3.bat
- 确认命令行工具尝试与在默认地址上运行的节点建立的连接;
- 如果节点在其他地址运行,请使用
connect
命令接入该节点。例如:bashconnect http://127.0.0.1:10300
Connected to http://127.0.0.1:10300
5.初始化集群
Ignite数据库作为一个集群运行。即使只运行一个节点,理论上也可以启动另一个节点并让它加入当前的集群。当节点启动时,它们会找到彼此并等待用户启动集群,启动集群的过程称为初始化
。
要初始化集群,需要选择元存储组
节点,其将负责管理集群的节点组。
要使用已启动的节点初始化集群(具体参见启动 Ignite 节点),请运行以下命令:
cluster init --name=sampleCluster
Cluster was initialized successfully
其中的--metastorage-group
参数指定将用于存储集群元信息的节点。在大多数情况下,建议有 3 个、5 个或 7 个元存储组节点。具体请参见集群生命周期章节的内容。
警告
Ignite 中的集群配置和节点配置是分开的,不能混用。初始化集群时,必须提供集群配置文件。
6.运行 SQL 语句
集群初始化之后,就可以开始使用了。在本章节中,将使用命令行工具创建表、插入一些数据并查询数据。在多数实际场景中,会通过客户端将数据写入集群并查询数据,但命令行工具也可用于调试或细微调整。
要在命令行中执行 SQL,请按照如下步骤操作:
- 进入
SQL REPL
模式,在此模式下可以执行 SQL 提示,并可以实现命令自动完成:bashsql
sql-cli>
- 使用
CREATE TABLE
语句创建新表:sqlCREATE TABLE IF NOT EXISTS Person (id int primary key, city varchar, name varchar, age int, company varchar)
Updated 0 rows.
- 使用
INSERT
语句插入若干数据:sqlINSERT INTO Person (id, city, name, age, company) VALUES (1, 'London', 'John Doe', 42, 'Apache') INSERT INTO Person (id, city, name, age, company) VALUES (2, 'New York', 'Jane Doe', 36, 'Apache')
Updated 1 rows.
- 查询上一步插入的所有数据:sql
SELECT * FROM Person
╔════╤══════════╤══════════╤═════╤═════════╗ ║ ID │ CITY │ NAME │ AGE │ COMPANY ║ ╠════╪══════════╪══════════╪═════╪═════════╣ ║ 2 │ New York │ Jane Doe │ 36 │ Apache ║ ╟────┼──────────┼──────────┼─────┼─────────╢ ║ 1 │ London │ John Doe │ 42 │ Apache ║ ╚════╧══════════╧══════════╧═════╧═════════╝
- 可以使用
exit
命令退出REPL
模式。
提示
关于可用 SQL 语句的更多信息,请参见SQL参考章节。
7.停止节点
可以通过停止ignite3db
进程来停止节点:
- Linux:
Control + C
; - Windows:
Ctrl+C
。
可以使用exit
命令退出命令行工具。
集群会保持初始化状态,并在重启节点后恢复。
8.扩展集群
Ignite 3 设计上希望集群有 3 个或更多的节点。虽然单个节点也可以运行,尤其是入门的场景,但在集群中有多个节点是最常见的使用场景。以下步骤提供了启动集群的可选方案,方便用户创建一个多节点集群,以更接近实际生产场景。
8.1.可选:在Docker中启动多个Ignite节点
要启动多个 Ignite 实例,需要在启动集群之前将其安装在多台主机上。在当前场景中如果要在本地主机上启动 Ignite 集群,建议使用 Docker:
下载启动集群的
docker compose
使用的 docker-compose 和节点配置,节点配置应与docker compose
文件位于同一文件夹中;下载 Docker 镜像:
bashdocker pull apacheignite/ignite:3.0.0
latest: Pulling from ignite/ignite3 3713021b0277: Pull complete fea31cb87980: Pull complete 07f7cfe80ff6: Pull complete ab1fd3f4849e: Pull complete 34896af28f87: Pull complete Digest: sha256:43ab9cfb8f58b66e4a5027d4ed529216963d0bcab3fa3fc6d5e2042fa3dd5a74 Status: Downloaded newer image for ignite/ignite3:latest docker.io/ignite/ignite3:latest
运行
docker compose
命令,提供之前下载的compose
文件:bashdocker compose -f docker-compose.yml up -d
[+] Running 4/4 ✔ Network ignite3_default Created 0.8s ✔ Container ignite3-node1-1 Started 3.2s ✔ Container ignite3-node2-1 Started 1.7s ✔ Container ignite3-node3-1 Started 3.4s
3 个节点已经在 Docker 中启动,并可以通过在本地运行的命令行工具访问。
确保在使用集群之前对其进行初始化:
bashcluster init --name=sampleCluster
Cluster was initialized successfully
8.2.可选:在不同的主机上启动多个Ignite节点
在上面的示例中运行的是一个节点,或者一个使用预定义配置的小型集群,在多个主机上创建 Ignite 集群需要对配置做调整。
8.2.1.列出NodeFinder中的所有节点
节点启动时会使用节点探测器配置项,即从/etc/ignite-config.conf
加载配置文件,将network.nodeFinder
配置项添加到地址中,例如对于 3 节点集群:
{
"ignite" : {
"nodeFinder" : {
"netClusterNodes" : [
"localhost:3344",
"otherhost:3344",
"thirdhost:3344"
]
}
}
}
现在,节点启动时就会自动尝试在列出的地址处查找节点。可以从命令行工具运行以下命令,随时查看正在运行的节点的当前配置:
node config show ignite.network.nodeFinder
{
"netClusterNodes" : [ "localhost:3344", "otherhost:3344", "thirdhost:3344" ],
"type" : "STATIC"
}
如果节点已在运行,也可以使用命令行工具更改节点配置,例如:
node config update ignite.network.nodeFinder.netClusterNodes=["localhost:3344", "otherHost:3344"]
这个变更需要节点重启才能生效。
8.2.2.修改节点名称
需要确保集群中的所有节点具有不同的名称,节点名称在/etc/vars.env
文件中定义。将NODE_NAME
变量更改为集群中每个节点的唯一名称,否则名称冲突的节点将无法加入同一集群。
8.2.3.启动所有节点
如前述启动 Ignite 节点的方法启动所有的节点。
8.2.4.初始化集群
在初始化集群之前,需要检查所有节点是否找到彼此并且可以接入集群中。节点彼此可见,但不一定连接到集群中,形成物理拓扑。可以通过使用命令行工具接入任何节点并执行以下命令来确认:
cluster topology physical
╔═══════╤════════════╤══════╤═══════════════╤══════════════════════════════════════╗
║ name │ host │ port │ consistent id │ id ║
╠═══════╪════════════╪══════╪═══════════════╪══════════════════════════════════════╣
║ node1 │ 172.19.0.4 │ 3344 │ node1 │ 0c61dad3-bc4c-4c60-8772-1a903632dcb4 ║
╟───────┼────────────┼──────┼───────────────┼──────────────────────────────────────╢
║ node2 │ 172.19.0.2 │ 3344 │ node2 │ 21f516bd-0774-4c53-bbfb-ad21bc21c500 ║
╟───────┼────────────┼──────┼───────────────┼──────────────────────────────────────╢
║ node3 │ 172.19.0.3 │ 3344 │ node3 │ b2bbfbff-eb08-4252-b154-681c49164708 ║
╚═══════╧════════════╧══════╧═══════════════╧══════════════════════════════════════╝
该命令列出了可见的节点、其地址、名称和ID,确认所有节点都正在运行且可见后,就可以初始化该集群:
cluster init --name=sampleCluster
Cluster was initialized successfully
集群启动后,其中的节点将形成逻辑拓扑,可以使用以下命令检查是否所有节点都已加入集群:
cluster topology logical
╔═══════╤════════════╤══════╤═══════════════╤══════════════════════════════════════╗
║ name │ host │ port │ consistent id │ id ║
╠═══════╪════════════╪══════╪═══════════════╪══════════════════════════════════════╣
║ node1 │ 172.19.0.4 │ 3344 │ node1 │ 0c61dad3-bc4c-4c60-8772-1a903632dcb4 ║
╟───────┼────────────┼──────┼───────────────┼──────────────────────────────────────╢
║ node2 │ 172.19.0.2 │ 3344 │ node2 │ 21f516bd-0774-4c53-bbfb-ad21bc21c500 ║
╟───────┼────────────┼──────┼───────────────┼──────────────────────────────────────╢
║ node3 │ 172.19.0.3 │ 3344 │ node3 │ b2bbfbff-eb08-4252-b154-681c49164708 ║
╚═══════╧════════════╧══════╧═══════════════╧══════════════════════════════════════╝
如果所有节点都在,则集群现在已启动,可以使用。
9.下一步
到这里之后,用户可能希望:
18624049226