# MyScale AMI 使用介绍

## 概述

MyScale 是一个高效的向量数据库解决方案，专为存储大规模向量数据和高性能向量查询而设计。MyScale AMI（Amazon Machine Image）提供了预配置的环境，使用户能够在 AWS 上快速部署和运行 MyScale 数据库服务。本文档将详细介绍如何使用 MyScale AMI 进行服务部署、配置和测试。

## 使用 AMI 部署服务

### 机型选择

选择合适的 EC2 实例类型对于 MyScale 的向量搜索性能至关重要。推荐使用具有较高 IOPS 的实例类型，以满足高性能向量数据库的需求。以下是一些推荐的 EC2 实例类型：

- c5d.large：适用于小型开发和测试环境。  
- c5d.4xlarge：适用于中小型生产环境。

对于更高的性能需求，推荐使用配置更高的 c5d 机型。

⚠️：运行 MyScale 的 EC2 实例必须为带有本地 NVMe 存储的 AWS D 系列实例。

### 安全组配置

在启动 MyScale AMI 实例之前，需要配置安全组以确保实例的安全访问。以下是安全组配置的建议：

入站规则：

- TCP 端口 22：允许 SSH 访问运行 MyScale 数据库的 EC2 实例 以进行管理（仅允许可信任的 IP 地址）。
- TCP 端口 8123：允许 以 HTTP 方式访问 MyScale 数据库。
- TCP 端口 9000：允许 以 Native 接口（TCP）方式访问 MyScale 数据库。

出站规则：

- 默认允许所有流量，以确保运行 MyScale 的 EC2 实例能够进行必要的网络通信。

### 实例连接

启动实例后，如果开启了端口 22，则可以通过 SSH 连接到实例以进行管理和配置。以下是连接步骤：

获取实例的公有 IP 地址或公共 DNS 名称。
使用以下命令通过 SSH 连接到运行 MyScale 的 EC2 实例（假设使用的是 `.pem` 密钥文件）：

```bash
ssh -i "/path/to/your-key.pem" ubuntu@your-instance-public-ip
```

成功连接后，您将进入实例的命令行界面，可以进行进一步的配置和管理操作。另外，如果想用使用 root 用户进行操作，MyScale AMI 为 root 用户配置了默认密码，密码明文为您 EC2 实例的 instance id，请在 EC2 实例上执行如下命令，获取 instance id

```bash
cat /var/lib/cloud/data/instance-id
# i-xxxxxxxxxxxx

su root
# 键入上述密码
```

## 测试

### 服务状态检测

确保 MyScale 服务正在运行是关键的一步。可以使用以下命令检查 MyScale 服务的状态：

```bash
sudo supervisorctl status clickhouse-server
```

如果服务未运行，可以使用以下命令启动服务：

```bash
sudo supervisorctl start clickhouse-server
```

### 使用 Python Client 连接服务

MyScale 提供了 Python Client，便于开发者通过 Python 代码连接和操作数据库。以下是连接示例：

- 安装 MyScale Python ADK：

  ```bash
  pip install clickhouse-connect
  ```

- 然后使用以下 Python 代码连接 MyScale 数据库：

  ```bash
  from  clickhouse_connect import get_client

  client = get_client(
      host='your-instance-public-ip',
      port=8123,
      user='default',
      password=''
  )
  ```

- 检查连接：

  ```python
  print(client.command("select 'OK'"))
  OK
  ```

详细的 Python client 使用见文档：[Python Client](https://myscale.com/docs/en/python-client/)

⚠️：如无法连接，请确保实例的安全组已配置为允许当前 IP 通过 8123 端口访问实例。

### 使用 ClickHouse Client 连接服务

ClickHouse Client 是一个强大的命令行工具，可以用来连接和操作 MyScale 数据库。安装 ClickHouse Client 方法详见：[ClickHouse Client 安装](https://clickhouse.com/docs/zh/getting-started/install)，为确保 MyScale 正常使用，请安装兼容 23.3.2.37 版本的 ClickHouse Client 命令行工具。

以下是使用 ClickHouse Client 连接 MyScale 的示例：

- 进入到实例内部，使用以下命令连接到 MyScale 数据库

  ```bash
  clickhouse client --host 'your-instance-public-ip' --port 9000
  # default@:ip-x-x-x-x.aws-region.compute.internal :)
  ```

- 成功连接后，可以在命令行中运行 SQL 查询。例如：

  ```sql
  SELECT * FROM your_table LIMIT 10;
  ```

如果需要在其他机器上使用 ClickHouse Client 连接到 MyScale 服务，可以手动安装 ClickHouse Client 命令，连接到指定的 MyScale 服务。

⚠️：如无法连接，请确保实例的安全组已配置为允许当前 IP 通过 9000 端口访问实例。

### 配置修改

根据具体需求，您可能需要修改 MyScale 的配置。以下是常见的配置修改步骤：

编辑配置文件：

```bash
sudo su ec2-user

vim /etc/clickhouse-server/config.xml

# 增加额外的配置
vim /etc/clickhouse-server/others.xml
```

根据需要修改配置项，例如调整缓存大小、连接超时等。
保存配置文件并重启 MyScale 服务使配置生效：

```bash
# 切换到 root 用户，密码见 /var/lib/cloud/data/instance-id 文件内容
su root

supervisorctl restart clickhouse-server
```

通过以上步骤，您可以成功部署、配置和测试 MyScale 数据库服务。希望本指南能帮助您快速上手并有效利用 MyScale AMI 提供的强大功能。
