# SkyWalking 使用 MySQL Storage

> [SkyWalking Backend Storage](https://github.com/apache/skywalking/blob/6.x/docs/en/setup/backend/backend-storage.md)

本文介绍 Skywalking 使用 MySQL Storage,以 `apache/skywalking-oap-server:6.5.0` Docker 镜像为例子。

SW 默认使用H2,测试环境可使用H2,生产官方推荐使用ES。如果平台流量很小,使用MySQL也是不错的选择,但是需要忽略掉一些无意义的采样如: **"健康检查"**、**"心跳"**等接口。

## 镜像目录结构

HOME目录是 `/skywalking`,下面是主要树结构。

* 应用、预警等配置都在 config 目录下

* 各类jar包位于 oap-libs

```

$ tree

.

├── config

│   ├── alarm-settings-sample.yml

│   ├── alarm-settings.yml

│   ├── application.yml

│   ├── component-libraries.yml

│   ├── gateways.yml

│   ├── log4j2.xml

│   └── official_analysis.oal

├── docker-entrypoint.sh

├── licenses

└── oap-libs

├── HdrHistogram-2.1.9.jar

```

## 添加驱动

官方镜像中不包含MySQL驱动,自行下载并添加到 `oap-libs` 目录即可。

例如将下载的jar放到任意目录,然后拷贝到 skywalking 中,下面是示例Dockerfile:

```dockerfile

FROM apache/skywalking-oap-server:6.5.0

COPY ./libs/* /skywalking/oap-libs

```

## 通过环境变量配置MySQL

应用配置在 `application.yml` 中,文件由 `docker-entrypoint.sh` 根据环境变量动态生成。

```bash

docker run -d \

--name skywalking-oap \

-p 12800:12800 \

-p 11800:11800 \

-e TZ=Asia/Shanghai \

-e SW_STORAGE=mysql \

-e SW_JDBC_URL="jdbc:mysql://x.x.x.x:3306/sw" \

-e SW_DATA_SOURCE_USER=sw \

-e SW_DATA_SOURCE_PASSWORD=sw \

apache/skywalking-oap-server:6.5.0

```

* SW_STORAGE:选择存储,支持 `elasticsearch h2 mysql`

* SW_JDBC_URL、SW_DATA_SOURCE_USER、SW_DATA_SOURCE_PASSWORD是mysql的配置

下面是截取的 `docker-entrypoint.sh` 中部分脚本:

```bash

generateApplicationYaml() {

# validate

validateVariables "SW_STORAGE" "$SW_STORAGE" "elasticsearch h2 mysql"

# generate storage

case ${SW_STORAGE} in

elasticsearch) generateStorageElastisearch;;

h2) generateStorageH2;;

mysql) generateStorageMySQL;;

esac

```

扫码或搜索 codercyj 关注微信公众号, 结伴学习, 一起努力

wechat.jpg;jsessionid=5C8C3CAE0D41BA82E06E0553D74A6BC9

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐